All Types

arrow.meta.ide.phases.additional.AdditionalIdePhase
arrow.meta.ide.phases.additional.AdditionalRegistry

this interface is for plugins depending on Meta that define extensions that are not in the Meta DSL for the Ide. It allows one to register those extensions and make them available through the Meta DSL, as if the extension is part of it. The data type of those extensions should be a subtype of AdditionalIdePhase, so that overriding AdditionalRegistry allows one to register the aforementioned extension in register.

arrow.meta.ide.phases.editor.action.AnActionExtensionProvider
arrow.meta.ide.dsl.editor.action.AnActionSyntax

AnActionExtensionProvider is in charge of the lifecycle of AnAction. AnAction can be placed, executed and composed into any workflow, throughout the whole application lifecycle. Whether on-demand by the user or as a standalone workflow. They’re able to access almost every part of the ide. In other words, AnAction contains a computation which can be evaluated multiple times at any time. When a user triggers AnAction the AnAction.actionPerformed function is executed. AnAction may have starkly different purposes, from changing CompilerConfigurations in the editor to opening UI element’s with media content. Here are a few Links to the Action System from IntelliJ’s Development Guide:

arrow.meta.ide.dsl.editor.action.AnActionUtilitySyntax
arrow.meta.ide.phases.integration.AnalysisHandler
(extensions in package arrow.meta.ide.dsl.utils)
com.intellij.lang.annotation.Annotation
(extensions in package arrow.meta.ide.dsl.utils)
com.intellij.lang.annotation.AnnotationBuilder
arrow.meta.ide.dsl.editor.annotator.AnnotatorSyntax
arrow.meta.ide.phases.application.ApplicationProvider
arrow.meta.ide.dsl.application.ApplicationSyntax

multi-purpose algebra to interact with the Ide lifecycle through hijacking and replacing existing services or adding lifecycle related extensions that run at their respective phase. Services can be distributed across the ide in three different kinds at application-level, project-level or module-level. The intellij platform distributes an isolated instance depending on the level - isolated in terms of other instances -, that means an application-level service has solely one instance, whereas module-level services have an instance for each module. Though it is possible to register module-level services with Meta it is not advised to do so, due to high memory consumption.

arrow.meta.ide.resources.ArrowIcons
arrow.meta.ide.plugins.quotes.system.CacheStrategy

complements the quote service with a cache strategy It aggregates the configs of caching quote transformations

arrow.meta.ide.phases.integration.ClassBuilder
(extensions in package arrow.meta.ide.plugins.quotes.utils)
org.jetbrains.kotlin.descriptors.ClassDescriptor
arrow.meta.ide.phases.integration.Codegen
arrow.meta.ide.phases.integration.CollectAdditionalSources
arrow.meta.ide.dsl.editor.color.ColorSettingsSyntax

ColorSettingsPage goes hand in hand with SyntaxHighlighter’s. ColorSettingsPage add’s a custom page in the user Settings under “Color Scheme” and is based on a custom SyntaxHighlighter composed with SyntaxHighlighterSyntax.syntaxHighlighter. Consequently, ColorSettingsPages not only allow users to customize the colors of SyntaxHighlighter’s for a better ide experience, More importantly, they provide means, to highlight additional descriptors from the Parser or Annotator. One use-case for ColorSettingsPages, among others, is to use them as a visual template in the ide, before the actual SyntaxHighlighter is created. Therefore, a ColorSettingsPage visually enhances the underlying SyntaxHighlighter and all descriptors from the Parser and Annotator. Additionally, there are other use-cases with Themes.

arrow.meta.ide.phases.integration.Config
arrow.meta.ide.phases.integration.DeclarationAttributeAlterer
(extensions in package arrow.meta.ide.plugins.proofs.psi)
org.jetbrains.kotlin.descriptors.DeclarationDescriptor
(extensions in package arrow.meta.ide.plugins.quotes.utils)
org.jetbrains.kotlin.descriptors.DeclarationDescriptor
arrow.meta.ide.dsl.editor.lineMarker.DefaultListCellRenderer
arrow.meta.ide.dsl.ui.dialogs.DialogSyntax

Dialogs are isomorphic to a function (UserInput) -> (AnAction). Therefore Dialogs have the ability to manipulate the editor environment as extensive as AnAction. Consequently, we can treat Dialogs as AnAction with a display.

arrow.meta.ide.dsl.editor.documentation.DocumentationSyntax

DocumentationSyntax registers an extension for documentation support. Check out Documentation

arrow.meta.ide.phases.editor.fileEditor.EditorProvider
arrow.meta.ide.dsl.editor.fileEditor.EditorSyntax
arrow.meta.ide.phases.editor.extension.ExtensionProvider
arrow.meta.ide.dsl.extensions.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.

arrow.meta.ide.phases.integration.ExtraImports
arrow.meta.ide.dsl.editor.folding.FoldingSyntax
arrow.meta.ide.testing.dsl.folding.FoldingTestSyntax

FoldingTestSyntax provides test methods for FoldingBuilder.

(extensions in package arrow.meta.ide.plugins.proofs.psi)
org.jetbrains.kotlin.descriptors.FunctionDescriptor
arrow.meta.ide.testing.env.git.GitSyntax
arrow.meta.ide.dsl.editor.goto.GotoRelatedSyntax
arrow.meta.ide.testing.env.gradle.GradleSyntax
arrow.meta.ide.testing.env.types.HeavyTestSyntax

HeavyTestSyntax utilises common patterns in test environments for fully created ide instances.

arrow.meta.ide.dsl.editor.hints.HintingSyntax

Hint’s are generally used with TypeInferenceAlgorithms. HintingSyntax provides means to connect those algorithms to the ide for specified element’s.

arrow.meta.ide.dsl.editor.icon.IconProviderSyntax

IconProvider display Icon’s for Files and the StructureView. StructureViewSyntax provides APIs to create StructureViews. Check out the Docs.

arrow.meta.ide.testing.dsl.icon.IconProviderTestSyntax

IconProviderTestSyntax provides test methods for IconProvider.

arrow.meta.ide.dsl.application.services.Id

minimal port from arrow-core

arrow.meta.ide.phases.IdeContext
arrow.meta.ide.testing.IdeEnvironment
arrow.meta.ide.internal.registry.IdeInternalRegistry
arrow.meta.ide.dsl.ui.popups.IdeListPopupItem

IdeListPopupItem resembles one item of a ListPopup Default values are from com.intellij.openapi.ui.popup.util.BaseListPopupStep

arrow.meta.ide.IdeMetaPlugin
arrow.meta.ide.IdePlugin
arrow.meta.ide.internal.IdeRegistrar

entry point of Meta in the Ide

arrow.meta.ide.testing.IdeResolution

transform defines a valid representation of the test result A, where null stands for a wrong or unexpected representation. ResolutionSyntax facilitates extensions for IdeResolution.

arrow.meta.ide.dsl.IdeSyntax
arrow.meta.ide.testing.IdeTest

IdeTest eventually completes with a test result A and has F as its plugin context for dependencies and features. test results with A defines what exact test is run based on the code. result describes the expected shape of A with a custom message. F is the plugin context, where dependencies and features can be used to define test and/or result.

arrow.meta.ide.testing.env.IdeTestSetUp

This is the entry point for Test classes JUnit initializes the Test Environment and registers your custom ide-plugin. This empty abstract class is needed, as the underlying TestFramework may change for future versions. Please note, that this set up is solely for light UI tests, that don’t require a build environment or generated sources. In those cases, one may supply one of the HeavyIdeaTests or Testcase the one in our test directory for gradle.

arrow.meta.ide.testing.dsl.IdeTestSyntax
arrow.meta.ide.testing.env.IdeTestTypeSyntax

IdeTestTypeSyntax ensures that each TestType is within an Idea instance and provides Tooling from IntelliJ’s Testing Environment

arrow.meta.ide.dsl.application.services.IdService

IdService is a service wrapper over A value and solely allows monomorphic updates. This Service is one way to replace global variables stored in components to their service representation. The value A may either be distributed per project or per application.

arrow.meta.ide.dsl.editor.inspection.InspectionSyntax

Loosely speaking, Inspection's are easily recognized as “QuickFixes” when the user hit’s a KeyShortCut for missing imports. Interestingly enough, despite calling Inspection's proverbially “QuickFixes”, IntelliJ defines a QuickFix as an aggregation of multiple Intention's. Whereas Intention's analysis your code and users can decide whether they want to apply a suggested Fix, Inspection’s improve upon that very idea and are capable to block the user to compile code at the first place. Additionally, we can scope the Fix in applyTo locally, for each instance per file, or globally to the whole project, assuming it has a universal refactoring task. There are cases, where an universal Fix, might not be obvious, but that doesn’t stop plugin developer’s to notify and direct user’s to helpful resources about this problem.

arrow.meta.ide.testing.dsl.inspection.InspectionTestSyntax
arrow.meta.ide.dsl.editor.inspection.InspectionUtilitySyntax
arrow.meta.ide.dsl.integration.IntegrationSyntax

IntegrationSyntax servers as an interoperability algebra to register compiler extensions and kotlin extensions regarding the Ide.

arrow.meta.ide.phases.editor.intention.IntentionExtensionProvider
arrow.meta.ide.dsl.editor.intention.IntentionSyntax

The IDE analysis user code and provides IntentionAction’s to either signal error’s to user’s or resolve them if triggered.

arrow.meta.ide.dsl.editor.intention.IntentionUtilitySyntax
arrow.meta.ide.phases.integration.IRGeneration
arrow.meta.ide.phases.integration.indices.KotlinIndicesHelper
(extensions in package arrow.meta.ide.plugins.proofs.psi)
org.jetbrains.kotlin.psi.KtAnnotated
(extensions in package arrow.meta.ide.dsl.utils)
org.jetbrains.kotlin.psi.KtCallableDeclaration
(extensions in package arrow.meta.ide.dsl.utils)
org.jetbrains.kotlin.psi.KtCallElement
(extensions in package arrow.meta.ide.plugins.proofs.markers)
org.jetbrains.kotlin.psi.KtClass
(extensions in package arrow.meta.ide.plugins.proofs.markers)
org.jetbrains.kotlin.psi.KtDeclaration
(extensions in package arrow.meta.ide.dsl.utils)
org.jetbrains.kotlin.psi.KtElement
(extensions in package arrow.meta.ide.dsl.utils)
org.jetbrains.kotlin.psi.KtFile
(extensions in package arrow.meta.ide.plugins.proofs.psi)
org.jetbrains.kotlin.psi.KtParameter
(extensions in package arrow.meta.ide.dsl.utils)
org.jetbrains.kotlin.psi.KtTypeReference
(extensions in package arrow.meta.ide.plugins.proofs.folding)
org.jetbrains.kotlin.psi.KtTypeReference
(extensions in package arrow.meta.ide.plugins.proofs.markers)
org.jetbrains.kotlin.psi.KtValueArgument
arrow.meta.ide.dsl.editor.languageInjection.LanguageInjectionSyntax
arrow.meta.ide.dsl.editor.language.LanguageSyntax
arrow.meta.ide.testing.env.types.LightTestSyntax

LightTestSyntax utilises common patterns in test environments for headless ide instances.

arrow.meta.ide.testing.dsl.lineMarker.LineMarkerDescription

LineMarkerDescription represents the collected slowLinMarker’s and regular lineMarkers.

arrow.meta.ide.dsl.editor.lineMarker.LineMarkerSyntax

LineMarker’s serve as visuals, which appear on specified PsiElements. There are several methods to subscribe LineMarkers, the one LineMarkerSyntax provides is derived from Kotlin’s org.jetbrains.kotlin.idea.highlighter.KotlinSuspendCallLineMarkerProvider and org.jetbrains.kotlin.idea.highlighter.KotlinRecursiveCallLineMarkerProvider. In general, subscription techniques differ mainly in performance.

arrow.meta.ide.testing.dsl.lineMarker.LineMarkerTestSyntax

LineMarkerTestSyntax provides test methods for LineMarkerProvider. One example is in ideTest KDoc.

(extensions in package arrow.meta.ide.dsl.utils)
kotlin.collections.List
arrow.meta.ide.dsl.editor.liveTemplate.LiveTemplateSyntax
arrow.meta.ide.MetaIde
arrow.meta.ide.plugins.proofs.resolve.MetaResolutionFacade
arrow.meta.ide.dsl.editor.navigation.NavigationSyntax
arrow.meta.ide.dsl.ui.notification.NotificationContent
arrow.meta.ide.dsl.ui.notification.NotificationSyntax

IntelliJ defines various notification techniques.

arrow.meta.ide.phases.integration.PackageProvider
arrow.meta.ide.dsl.editor.parser.ParserSyntax
arrow.meta.ide.dsl.ui.popups.PopupSyntax

Popup’s can be created at any time. Either in AnActionSyntax, InspectionSyntax or IntentionExtensionProviderSyntax and many other places. Once the PopUp is created the user needs to call a show() method like com.intellij.openapi.ui.popup.JBPopup.showUnderneathOf, this is an effectfull operation.

arrow.meta.ide.phases.integration.PreprocessedVirtualFileFactory
(extensions in package arrow.meta.ide.dsl.utils)
com.intellij.openapi.project.Project
(extensions in package arrow.meta.ide.phases.config)
com.intellij.openapi.project.Project
(extensions in package arrow.meta.ide.plugins.quotes.lifecycle)
com.intellij.openapi.project.Project
(extensions in package arrow.meta.ide.plugins.proofs.markers)
arrow.meta.plugins.proofs.phases.Proof
(extensions in package arrow.meta.ide.dsl.utils)
com.intellij.psi.PsiElement
arrow.meta.ide.plugins.quotes.cache.QuoteCache

The QuoteCache provides the following functions to manipulate its underlying data structure, that stores and updates quote transformations.

arrow.meta.ide.plugins.quotes.lifecycle.QuoteConfigs
arrow.meta.ide.plugins.quotes.cache.QuoteInfo

packageFqName and descriptors after quote transformations based on an implicit KtFile.

arrow.meta.ide.plugins.quotes.system.QuoteSystemService

Whereas the QuoteCache persists quote transformations, the QuoteSystemService is responsible for transforming KtFiles under a given context.

arrow.meta.ide.dsl.editor.refactoring.RefactoringSyntax
arrow.meta.ide.testing.env.resolution.ResolutionSyntax
arrow.meta.ide.dsl.resolve.ResolveProviderSyntax
arrow.meta.ide.dsl.resolve.ResolveScopeSyntax
arrow.meta.ide.dsl.editor.runLineMarker.RunLineMarkerSyntax
(extensions in package arrow.meta.ide.dsl.utils)
arrow.meta.quotes.Scope
arrow.meta.ide.dsl.editor.search.SearchSyntax
arrow.meta.ide.testing.Source
arrow.meta.ide.phases.integration.StorageComponentContainer
(extensions in package arrow.meta.ide)
kotlin.String
(extensions in package arrow.meta.ide.testing.env)
kotlin.String
arrow.meta.ide.dsl.editor.structureView.StructureViewSyntax
arrow.meta.ide.phases.editor.syntaxHighlighter.SyntaxHighlighterExtensionProvider
arrow.meta.ide.dsl.editor.syntaxHighlighter.SyntaxHighlighterSyntax

SyntaxHighlighterExtensionProvider provides means to register SyntaxHighlighters for Languages. SyntaxHighlighters solely specify highlighted tokens, which are generated from the Lexer. Check out the Docs on Syntax Highlighting or How to create a Syntax Highlighter.

arrow.meta.ide.phases.analysis.SyntheticDescriptorCache
arrow.meta.ide.phases.integration.SyntheticResolver
arrow.meta.ide.phases.integration.SyntheticScopeProvider
arrow.meta.ide.testing.env.TestFile
arrow.meta.ide.phases.ui.ToolwindowProvider
arrow.meta.ide.dsl.ui.toolwindow.ToolWindowSyntax

Tool windows have several use-cases, though there used in two different scenario. Either, to display content resulting from an computation, which ToolWindowSyntax materializes with addToolWindowWithAction and registerToolWindow, or establishing a ‘persistently’ visible tool window the user can interact with at all time. Please refer to this link for the second scenario.

arrow.meta.ide.dsl.editor.icon.TransformIcon
arrow.meta.ide.testing.UnavailableServices
arrow.meta.ide.dsl.editor.usage.UsageSyntax
(extensions in package arrow.meta.ide.dsl.utils)
com.intellij.openapi.vfs.VirtualFile

Do you like Arrow?

Arrow Org
<