Additional Minor Features
A number of minor features are listed in the following format:
EP: fully.qualified.extensionPointName
- Extension Point Name (must be specified in plugin.xml)
com.extensionPoint.class
description text - Extension Point class/interface to provide functionality
- Sample 1 - Sample implementation
Brace Matching
EP: com.intellij.lang.braceMatcher
PairedBraceMatcher
Returns an array of brace pairs (BracePair
) specifying the characters for the opening and closing braces and the lexer token types for these characters. (In principle, it is possible to return multi-character tokens, like "begin" and "end", as the start and end tokens of a brace pair. The IDE will match such braces, but the highlighting for such braces will not be entirely correct.)
Certain types of braces can be marked as structural. Structural braces have higher priority than regular braces: they are matched with each other even if there are unmatched braces of different types between them. An opening non-structural brace is not matched with a closing one if one of them is inside a pair of matched structural braces and another is outside. See also Recognizing Complex Multi-Block Expressions.
Quote Handling
EP: com.intellij.lang.quoteHandler
To support Insert pair quote feature, provide QuoteHandler
. In most cases, SimpleTokenSetQuoteHandler
base implementation will be suitable.
Comment Code
EP: com.intellij.lang.commenter
Commenter
returns the prefix for the line comment, and the prefix and suffix for the block comment if supported by the language.
Code Folding
EP: com.intellij.lang.foldingBuilder
FoldingBuilder
returns the list of foldable text ranges (as an array of FoldingDescriptor
objects), the replacement text which is shown for each range when it is folded, and the default state of each folding region (folded or unfolded).
Join Lines
EP: com.intellij.joinLinesHandler
JoinLinesHandlerDelegate
allows extending support smart/semantic (e.g., String literal split on multiple lines).
Smart Enter
EP: com.intellij.lang.smartEnterProcessor
SmartEnterProcessor
handles (e.g., autocomplete missing semicolon/parentheses).
Move Element Left/Right
EP: com.intellij.moveLeftRightHandler
Return children of given element from MoveElementLeftRightHandler
for , e.g., method call parameters. Alternatively, implement PsiListLikeElement
in PSI element.
Naming Suggestions
EP: com.intellij.nameSuggestionProvider
NameSuggestionProvider
provides name suggestions for the given element, e.g., for Rename refactoring.
Semantic Highlight Usages
EP: com.intellij.highlightUsagesHandlerFactory
HighlightUsagesHandlerFactory
allows highlighting e.g., Exit Points or Exceptions.
TODO View
EP: n/a
ParserDefinition.getCommentTokens()
must return the set of tokens treated as comments to populate the TODO window.
Context Info
EP: com.intellij.declarationRangeHandler
DeclarationRangeHandler
provides for custom languages with structure view implementation based on a TreeBasedStructureViewBuilder
.
Spellchecking
EP: com.intellij.spellchecker.support
SpellcheckingStrategy
provides Tokenizer
to use for given PsiElement
(return EMPTY_TOKENIZER
for no spellchecking).
Reference Injection
EP: com.intellij.referenceInjector
ReferenceInjector
allows users to inject pre-defined references (e.g., "Encoding", "File Reference") into PsiLanguageInjectionHost
elements (IntelliLang plugin required).
Color Preview/Chooser
EP: com.intellij.colorProvider
ElementColorProvider
renders gutter icon for an element containing color information.
File Includes
EP: com.intellij.include.provider
FileIncludeProvider
provides information about include statements resolving to files (e.g., <xi:include>
in XML). Including/included files can then be obtained via FileIncludeManager
.
Recognizing Complex Multi-Block Expressions
EP: com.intellij.codeBlockSupportHandler
CodeBlockSupportHandler
allows providing text ranges for more complex code blocks like, e.g., in if
/elsif
/else
blocks. It is used to highlight markers and keywords if one is under the cursor, and for navigation to the beginning/end of blocks. See also Brace Matching.
Breadcrumbs
EP: com.intellij.breadcrumbsInfoProvider
BreadcrumbsProvider
allows for language-specific breadcrumbs. Please refer to GroovyBreadcrumbsInfoProvider
as implementation example.
Plain Text Completion
EP: com.intelllij.completion.plainTextSymbol
PlainTextSymbolCompletionContributor
provides a simple way to extract lookup elements from a file so that users have completion available in, e.g., plain text editors like VCS commit messages.
Splitting and Joining List Constructs
EP: com.intellij.listSplitJoinContext
ListSplitJoinContext
needs to be implemented to define the exact behavior of splitting and joining list-like constructs in a language. The UI will show implementations of this EP as an intention action at appropriate locations. Developers can use the abstract classes in DefaultListSplitJoinContext
for their implementation and XmlAttributesSplitJoinContext
serves as a good example.
Suggesting Rename and Change Signature Refactorings
EP: com.intellij.suggestedRefactoringSupport
SuggestedRefactoringSupport
provides functionality for suggesting rename and change signature refactorings for custom languages. Please see KotlinSuggestedRefactoringSupport
for an implementation example.
Reader Mode
EP: com.intellij.readerModeMatcher
ReaderModeMatcher
provides a way to decide if files are shown in the correct mode: reader mode vs. normal editor mode. Please see the documentation to get familiar with reader mode.
Background Colors for Editors and Project View
EP: com.intellij.editorTabColorProvider
EditorTabColorProvider
allows for the modification of the background colors for specific files.
Custom Names and Tooltips for Editor Tabs
EP: com.intellij.editorTabTitleProvider
EditorTabTitleProvider
allows for specifying custom names and tooltips displayed in the title of editor tabs. Please see, e.g., GradleEditorTabTitleProvider
which shows how the project name is added to the editor tab for Gradle files.