$30 off During Our Annual Pro Sale. View Details »

Deine IDE hat ein API! IntelliJ mit einem eigenen Plugin erweitern

Deine IDE hat ein API! IntelliJ mit einem eigenen Plugin erweitern

Als Entwickler schätzen wir Auto-Vervollständigung, Validierung und Refactoring in unserer Entwicklungsumgebung (IDE). Um ein fehlendes Feature zu ergänzen oder etwas Spaß in den Entwickleralltag zu bringen stellt die IDE Schnittstellen (APIs) für Plugins zur Verfügung.

Dieser Vortrag zeigt Beispiele des AsciiDoc-Plugins und anderer Open-Source-Plugins für IntelliJ. Manchmal wird ein Lexer und Parser benötigt, an vielen anderen Stellen geht es auch ohne. JetBrains stellt für neue Plugins ein Template bereit mit den Best Practices rund um Gradle, Java und Kotlin.

Alexander Schwartz

December 15, 2022
Tweet

More Decks by Alexander Schwartz

Other Decks in Programming

Transcript

  1. Deine IDE hat ein API!
    IntelliJ mit einem eigenen Plugin erweitern
    Alexander Schwartz, Principal Software Engineer @ Red Hat
    IT-Tage 2022 | 2022-12-13

    View Slide

  2. Deine IDE hat ein API! IntelliJ mit einem eigenen Plugin erweitern | Dezember 2022 | Alexander Schwartz 2
    JetBrains IntelliJ IDEA Ökosystem
    IntelliJ IDEA
    basierte IDEs
    Bundled
    Plugins
    JetBrains
    Plugins
    3rd Party
    Plugins
    … via
    Marketplace
    … direkt

    View Slide

  3. • Key Promoter X
    Hinweise bei der Mausbedienung auf mögliche Tastaturkürzel
    • Awesome Console
    Für die integrierte Konsole werden Dateinamen klickbar
    • PlantUML Plugin
    Eigener Editor für Diagramme-as-Code mit integrierter Vorschau
    • AsciiDoc plugin
    Editor für AsciiDoc-Inhalte mit integrierter Vorschau
    Marketplace für Plugins: https://plugins.jetbrains.com/
    Ideen für neue Plugins: https://plugins.jetbrains.com/plugin-ideas
    Deine IDE hat ein API! IntelliJ mit einem eigenen Plugin erweitern | Dezember 2022 | Alexander Schwartz 3
    Beispiele für Plugins
    Was Plugins können

    View Slide

  4. • AsciiDoc: Schreiben ohne Ablenkung mit
    einfachem Markup-Text. Großer
    Funktionsumfang für technische
    Dokumentation.
    • IntelliJ AsciiDoc Plugin
    bietet Unterstützung für Antora und
    AsciiDoc mit Autovervollständigung,
    Validierung und Refactorings.
    • Zusammenarbeit von Entwicklern und
    Technical Writers über die Git-
    Versionsverwaltung.
    Deine IDE hat ein API! IntelliJ mit einem eigenen Plugin erweitern | Dezember 2022 | Alexander Schwartz 4
    IntelliJ AsciiDoc Plugin: Schreiben von technischer Dokumentation in der IDE
    List of editors:
    https://asciidoctor.org/docs/editing-asciidoc-with-live-preview/

    View Slide

  5. • Live-Templates ergänzen
    (liveTemplateContext)
    • Menüeinträge und Aktionen ergänzen
    (actions -> group -> action, add-to-group)
    • Dokumentation anzeigen
    (lang.documentationProvider)
    • Wörterbucheinträge hinzufügen
    (spellchecker.bundledDictionaryProvider)
    • JSON Schemata bereitstellen
    (JsonSchema.ProviderFactory)
    Deine IDE hat ein API! IntelliJ mit einem eigenen Plugin erweitern | Dezember 2022 | Alexander Schwartz 5
    Level 1: Funktionen erweitern und ergänzen
    Was Plugins können

    View Slide

  6. Deine IDE hat ein API! IntelliJ mit einem eigenen Plugin erweitern | Dezember 2022 | Alexander Schwartz 6
    Level 2: Auf anderen Plugins aufbauen
    Was Plugins können
    • Autovervollständigung und Navigation
    (psi.referenceContributor, completion.contributor)
    • Validierung und Korrekturassistenten
    (localInspection, intentionAction)

    View Slide

  7. Deine IDE hat ein API! IntelliJ mit einem eigenen Plugin erweitern | Dezember 2022 | Alexander Schwartz 7
    Level 3: Komplexe Funktionalitäten nachrüsten
    Was Plugins können
    • Eigene Editoren und Previews
    (fileType, fileEditorProvider)
    • Neue Sprachen mit Lexern und Parsern implementieren
    (lang.ast.factory, lang.parserDefinition)

    View Slide

  8. • Erfahrung als Nutzer mit IntelliJ
    • Programmier-Kenntnisse in Java oder Kotlin,
    Build-Automatisierung mit Gradle
    • Swing (nur wenn eigene User Interfaces gebaut werden)
    • Java Concurrency Erfahrungen
    • Etwas Zeit ☺
    Deine IDE hat ein API! IntelliJ mit einem eigenen Plugin erweitern | Dezember 2022 | Alexander Schwartz 8
    Voraussetzungen für die Plugin-Entwicklung
    Eigene Plugins entwicklen

    View Slide

  9. Deine IDE hat ein API! IntelliJ mit einem eigenen Plugin erweitern | Dezember 2022 | Alexander Schwartz 9
    Hilfsmittel
    Eigene Plugins entwicklen
    • IntelliJ Platform Plugin SDK
    https://plugins.jetbrains.com/docs/intellij
    • IntelliJ Gradle Plugin Template
    https://github.com/JetBrains/intellij-platform-plugin-template
    • IntelliJ Platform Explorer
    https://plugins.jetbrains.com/intellij-platform-explorer/extensions
    • Slack Channel
    https://plugins.jetbrains.com/slack

    View Slide

  10. • Unit Tests
    • Integrative Tests
    • UI-Tests
    Mehr Informationen:
    • https://plugins.jetbrains.com/docs/intellij/testing-plugins.html
    • https://github.com/JetBrains/intellij-platform-plugin-template#testing
    Deine IDE hat ein API! IntelliJ mit einem eigenen Plugin erweitern | Dezember 2022 | Alexander Schwartz 10
    Tests schreiben
    Eigene Plugins entwicklen

    View Slide

  11. Deine IDE hat ein API! IntelliJ mit einem eigenen Plugin erweitern | Dezember 2022 | Alexander Schwartz 11
    Demo
    Eigene Plugins entwicklen

    View Slide

  12. • Erfahrung als Nutzer mit IntelliJ
    • Programmier-Kenntnisse in Java oder Kotlin,
    Build-Automatisierung mit Gradle
    • Swing (nur wenn eigene User Interfaces gebaut werden)
    • Java Concurrency Erfahrungen
    • Etwas Zeit ☺
    Deine IDE hat ein API! IntelliJ mit einem eigenen Plugin erweitern | Dezember 2022 | Alexander Schwartz 12
    Voraussetzungen für die Plugin-Entwicklung
    Eigene Plugins entwicklen

    View Slide

  13. IntelliJ Platform Plugin SDK
    https://plugins.jetbrains.com/docs/intellij
    IntelliJ Gradle Plugin Template
    https://github.com/JetBrains/intellij-platform-plugin-template
    IntelliJ AsciiDoc Plugin
    https://intellij-asciidoc-plugin.ahus1.de/
    Deine IDE hat ein API! IntelliJ mit einem eigenen Plugin erweitern | Dezember 2022 | Alexander Schwartz 13
    Links
    @ahus1de

    View Slide

  14. Kontakt
    Alexander Schwartz
    Principal Software Engineer
    [email protected]
    https://www.ahus1.de
    @ahus1de
    Deine IDE hat ein API! IntelliJ mit einem eigenen Plugin erweitern | Dezember 2022 | Alexander Schwartz 14

    View Slide