idea-plugin / arrow.meta.ide.dsl.extensions / ExtensionProviderSyntax


interface ExtensionProviderSyntax

The ExtensionProvider phase sits at the core of the main API in IntelliJ’s Platform for ExtensionPoints. ExtensionPoints regardless of their nature are means to interact with the ide. The ExtensionProviderSyntax allows plugin developers to define, compose and manipulate workflow’s in the ide environment explicitly without specifying those changes in the plugin.xml. The latter is true for all Jetbrains products, which are based on the IntelliJ Platform API, e.g.: Rider, MPS, CLion, etc. It’s polymorphic shape facilitates existing and newly created Extensions, for example: LanguageExtension, PlatformExtensions, RefactoringExtensions and many more.


addContainerProvider registers a fun MetaIde.addContainerProvider(transform: (PsiElement) -> PsiElement?): ExtensionPhase
addDiagnosticSuppressor The editor integration for fun MetaIde.addDiagnosticSuppressor(f: (diagnostic: Diagnostic) -> Boolean): ExtensionPhase
addDiagnosticSuppressorWithCtx open fun MetaIde.addDiagnosticSuppressorWithCtx(f: CompilerContext.(diagnostic: Diagnostic) -> Boolean): ExtensionPhase
extensionProvider The extensionProvider function registers a concrete implementation for Extensions with an ExtensionPointName. Or builds higher-level API’s such as IconProviderSyntax.addIcon, which registers a FileIcon to a File and StructureView using fun <E> MetaIde.extensionProvider(EP_NAME: ExtensionPointName<E>, impl: E, loadingOrder: LoadingOrder = LoadingOrder.ANY): ExtensionPhase
The extensionProvider extension registers a concrete implementation for LanguageExtension’ fun <E> MetaIde.extensionProvider(LE: LanguageExtension<E>, impl: E, lang: Language = KotlinLanguage.INSTANCE): ExtensionPhase
The extensionProvider function registers a concrete implementation for FileTypeExtension’ fun <E> MetaIde.extensionProvider(FE: FileTypeExtension<E>, impl: E, fileType: LanguageFileType = KotlinFileType.INSTANCE): ExtensionPhase
The extensionProvider extension registers a concrete implementation for ClassExtension’ fun <E> MetaIde.extensionProvider(CE: ClassExtension<E>, forClass: Class<*>, impl: E): ExtensionPhase
registerExtensionPoint Registers BaseExtensionPointName’sopen fun <E> MetaIde.registerExtensionPoint(EP_NAME: BaseExtensionPointName<E>, aClass: Class<E>, kind: Kind): ExtensionPhase
Interestingly enough, ExtensionProvider registers new workflows to the ide. Given an example Provider:open fun <E> MetaIde.registerExtensionPoint(EP_NAME: ExtensionPointName<E>, aClass: Class<E>, kind: Kind): ExtensionPhase


IdeSyntax interface IdeSyntax : IconProviderSyntax, SyntaxHighlighterSyntax, InspectionSyntax, AnActionSyntax, ColorSettingsSyntax, HintingSyntax, LanguageSyntax, LineMarkerSyntax, LiveTemplateSyntax, NavigationSyntax, SearchSyntax, StructureViewSyntax, UsageSyntax, ExtensionProviderSyntax, DocumentationSyntax, DialogSyntax, PopupSyntax, NotificationSyntax, ToolWindowSyntax, GotoRelatedSyntax, AnnotatorSyntax, ParserSyntax, ApplicationSyntax, FoldingSyntax, EditorSyntax, ResolveScopeSyntax, ResolveProviderSyntax, IntegrationSyntax

Do you like Arrow?

Arrow Org