additional_minor_features.md: add EP links to IPE, cleanup

This commit is contained in:
Yann Cébron 2025-04-09 16:26:18 +02:00
parent cae1c48350
commit 6721cbd379
2 changed files with 37 additions and 54 deletions

View File

@ -226,4 +226,8 @@
summary="Browse usages in existing implementations of open-source plugins"> summary="Browse usages in existing implementations of open-source plugins">
<code>%ep%</code></a> extension point <code>%ep%</code></a> extension point
</snippet> </snippet>
<snippet id="epLink"><a href="https://jb.gg/ipe?extensions=%ep%"
summary="Browse usages in existing implementations of open-source plugins">
<code>%ep%</code></a>
</snippet>
</topic> </topic>

View File

@ -6,12 +6,10 @@
A number of commonly used minor features are listed in the following format: A number of commonly used minor features are listed in the following format:
_EP: `fully.qualified.extensionPointName`_ — Extension Point Name (must be specified in <path>[plugin.xml](plugin_configuration_file.md)</path>) _EP: `fully.qualified.extensionPointName`_ — Extension Point Name (must be specified in <path>[plugin.xml](plugin_configuration_file.md)</path>). Click to browse usages in existing implementations of open-source plugins.
_`com.extensionPoint.class`_ _description text_ — Extension Point class/interface to provide functionality _`com.extensionPoint.class`_ _description text_ — Extension Point class/interface to provide functionality
_- Sample 1_ - Sample implementation
> See also [](intellij_platform_extension_point_list.md#langextensionpointsxml) to discover more Language-related Extension Points as well as general guide [](explore_api.md). > See also [](intellij_platform_extension_point_list.md#langextensionpointsxml) to discover more Language-related Extension Points as well as general guide [](explore_api.md).
> >
{title="Locating more Language EPs"} {title="Locating more Language EPs"}
@ -20,7 +18,7 @@ _- Sample 1_ - Sample implementation
### Brace Matching ### Brace Matching
EP: `com.intellij.lang.braceMatcher` EP: <include from="snippets.topic" element-id="epLink"><var name="ep" value="com.intellij.lang.braceMatcher"/></include>
[`PairedBraceMatcher`](%gh-ic%/platform/analysis-api/src/com/intellij/lang/PairedBraceMatcher.java) [`PairedBraceMatcher`](%gh-ic%/platform/analysis-api/src/com/intellij/lang/PairedBraceMatcher.java)
returns an array of brace pairs ([`BracePair`](%gh-ic%/platform/analysis-api/src/com/intellij/lang/BracePair.java)) specifying the characters for the opening and closing braces and the lexer token types for these characters. returns an array of brace pairs ([`BracePair`](%gh-ic%/platform/analysis-api/src/com/intellij/lang/BracePair.java)) specifying the characters for the opening and closing braces and the lexer token types for these characters.
@ -36,30 +34,30 @@ See also [](#recognizing-complex-multi-block-expressions).
<primary-label ref="2022.3"/> <primary-label ref="2022.3"/>
EP: <include from="snippets.topic" element-id="epLink"><var name="ep" value="com.intellij.heavyBracesHighlighter"/></include>
If the brace matching is "too heavy" and should not be executed in [EDT](threading_model.md), implement If the brace matching is "too heavy" and should not be executed in [EDT](threading_model.md), implement
[`HeavyBraceHighlighter`](%gh-ic%/platform/lang-impl/src/com/intellij/codeInsight/highlighting/HeavyBraceHighlighter.java) [`HeavyBraceHighlighter`](%gh-ic%/platform/lang-impl/src/com/intellij/codeInsight/highlighting/HeavyBraceHighlighter.java).
and register in <include from="snippets.topic" element-id="ep"><var name="ep" value="com.intellij.heavyBracesHighlighter"/></include>.
### Quote Handling ### Quote Handling
EP: `com.intellij.lang.quoteHandler` EP: <include from="snippets.topic" element-id="epLink"><var name="ep" value="com.intellij.lang.quoteHandler"/></include>
To support <control>Insert pair quote</control> feature, provide [`QuoteHandler`](%gh-ic%/platform/lang-impl/src/com/intellij/codeInsight/editorActions/QuoteHandler.java). To support <control>Insert pair quote</control> feature, provide [`QuoteHandler`](%gh-ic%/platform/lang-impl/src/com/intellij/codeInsight/editorActions/QuoteHandler.java).
In most cases, [`SimpleTokenSetQuoteHandler`](%gh-ic%/platform/lang-impl/src/com/intellij/codeInsight/editorActions/SimpleTokenSetQuoteHandler.java) base implementation will be suitable. In most cases, [`SimpleTokenSetQuoteHandler`](%gh-ic%/platform/lang-impl/src/com/intellij/codeInsight/editorActions/SimpleTokenSetQuoteHandler.java) base implementation will be suitable.
### Comment Code ### Comment Code
EP: `com.intellij.lang.commenter` EP: <include from="snippets.topic" element-id="epLink"><var name="ep" value="com.intellij.lang.commenter"/></include>
[`Commenter`](%gh-ic%/platform/core-api/src/com/intellij/lang/Commenter.java) returns the prefix for the line comment, and the prefix and suffix for the block comment if supported by the language. [`Commenter`](%gh-ic%/platform/core-api/src/com/intellij/lang/Commenter.java) returns the prefix for the line comment, and the prefix and suffix for the block comment if supported by the language.
For more complex logic, use [`SelfManagingCommenter`](%gh-ic%/platform/core-api/src/com/intellij/codeInsight/generation/SelfManagingCommenter.java). For more complex logic, use [`SelfManagingCommenter`](%gh-ic%/platform/core-api/src/com/intellij/codeInsight/generation/SelfManagingCommenter.java).
- [`Commenter`](%gh-ic%/plugins/properties/properties-psi-impl/src/com/intellij/lang/properties/PropertiesCommenter.java) for [Properties language plugin](%gh-ic%/plugins/properties)
- [Custom Language Support Tutorial: Commenter](commenter.md) - [Custom Language Support Tutorial: Commenter](commenter.md)
### Code Folding ### Code Folding
EP: `com.intellij.lang.foldingBuilder` EP: <include from="snippets.topic" element-id="epLink"><var name="ep" value="com.intellij.lang.foldingBuilder"/></include>
[`FoldingBuilder`](%gh-ic%/platform/core-api/src/com/intellij/lang/folding/FoldingBuilder.java) returns the list of foldable text ranges (as an array of [`FoldingDescriptor`](%gh-ic%/platform/core-api/src/com/intellij/lang/folding/FoldingDescriptor.java) 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). [`FoldingBuilder`](%gh-ic%/platform/core-api/src/com/intellij/lang/folding/FoldingBuilder.java) returns the list of foldable text ranges (as an array of [`FoldingDescriptor`](%gh-ic%/platform/core-api/src/com/intellij/lang/folding/FoldingDescriptor.java) 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).
@ -67,41 +65,38 @@ EP: `com.intellij.lang.foldingBuilder`
### Join Lines ### Join Lines
EP: `com.intellij.joinLinesHandler` EP: <include from="snippets.topic" element-id="epLink"><var name="ep" value="com.intellij.joinLinesHandler"/></include>
[`JoinLinesHandlerDelegate`](%gh-ic%/platform/lang-api/src/com/intellij/codeInsight/editorActions/JoinLinesHandlerDelegate.java) allows extending support smart/semantic <ui-path>Edit | Join Lines</ui-path> (e.g., String literal split on multiple lines). [`JoinLinesHandlerDelegate`](%gh-ic%/platform/lang-api/src/com/intellij/codeInsight/editorActions/JoinLinesHandlerDelegate.java) allows extending support smart/semantic <ui-path>Edit | Join Lines</ui-path> (e.g., String literal split on multiple lines).
### Smart Enter ### Smart Enter
EP: `com.intellij.lang.smartEnterProcessor` EP: <include from="snippets.topic" element-id="epLink"><var name="ep" value="com.intellij.lang.smartEnterProcessor"/></include>
[`SmartEnterProcessor`](%gh-ic%/platform/lang-api/src/com/intellij/codeInsight/editorActions/smartEnter/SmartEnterProcessor.java) handles <ui-path>Edit | Complete Statement</ui-path> (e.g., autocomplete missing semicolon/parentheses). [`SmartEnterProcessor`](%gh-ic%/platform/lang-api/src/com/intellij/codeInsight/editorActions/smartEnter/SmartEnterProcessor.java) handles <ui-path>Edit | Complete Statement</ui-path> (e.g., autocomplete missing semicolon/parentheses).
### Move Element Left/Right ### Move Element Left/Right
EP: `com.intellij.moveLeftRightHandler` EP: <include from="snippets.topic" element-id="epLink"><var name="ep" value="com.intellij.moveLeftRightHandler"/></include>
Return children of given element from [`MoveElementLeftRightHandler`](%gh-ic%/platform/lang-api/src/com/intellij/codeInsight/editorActions/moveLeftRight/MoveElementLeftRightHandler.java) for <ui-path>Code | Move Element Left|Right</ui-path>, e.g., method call parameters. Return children of given element from [`MoveElementLeftRightHandler`](%gh-ic%/platform/lang-api/src/com/intellij/codeInsight/editorActions/moveLeftRight/MoveElementLeftRightHandler.java) for <ui-path>Code | Move Element Left|Right</ui-path>, e.g., method call parameters.
Alternatively, implement [`PsiListLikeElement`](%gh-ic%/platform/core-api/src/com/intellij/psi/PsiListLikeElement.java) in PSI element. Alternatively, implement [`PsiListLikeElement`](%gh-ic%/platform/core-api/src/com/intellij/psi/PsiListLikeElement.java) in PSI element.
### Move Statements Up and Down in the Editor ### Move Statements Up and Down in the Editor
EP: `com.intellij.statementUpDownMover` EP: <include from="snippets.topic" element-id="epLink"><var name="ep" value="com.intellij.statementUpDownMover"/></include>
[`StatementUpDownMover`](%gh-ic%/platform/lang-api/src/com/intellij/codeInsight/editorActions/moveUpDown/StatementUpDownMover.java) [`StatementUpDownMover`](%gh-ic%/platform/lang-api/src/com/intellij/codeInsight/editorActions/moveUpDown/StatementUpDownMover.java)
allows for customizing the behavior of moving statements up and down. allows for customizing the behavior of moving statements up and down.
This can be used to keep code syntactically correct when moving code in the editor, e.g. when moving This can be used to keep code syntactically correct when moving code in the editor, e.g. when moving
a variable declaration. a variable declaration.
- [`DeclarationMover`](%gh-ic%/java/java-impl/src/com/intellij/codeInsight/editorActions/moveUpDown/DeclarationMover.java)
### Splitting and Joining List Constructs ### Splitting and Joining List Constructs
EP: `com.intellij.listSplitJoinContext` EP: <include from="snippets.topic" element-id="epLink"><var name="ep" value="com.intellij.listSplitJoinContext"/></include>
[`ListSplitJoinContext`](%gh-ic%/platform/lang-impl/src/com/intellij/openapi/editor/actions/lists/ListSplitJoinContext.kt) [`ListSplitJoinContext`](%gh-ic%/platform/lang-impl/src/com/intellij/openapi/editor/actions/lists/ListSplitJoinContext.kt)
needs to be implemented to define the exact behavior of splitting and joining list-like constructs needs to be implemented to define the exact behavior of splitting and joining list-like constructs in a language.
in a language.
The UI will show implementations of this EP as an The UI will show implementations of this EP as an
[intention action](https://www.jetbrains.com/help/idea/intention-actions.html) [intention action](https://www.jetbrains.com/help/idea/intention-actions.html)
at appropriate locations. at appropriate locations.
@ -113,7 +108,7 @@ for their implementation.
### Recognizing Complex Multi-Block Expressions ### Recognizing Complex Multi-Block Expressions
EP: `com.intellij.codeBlockSupportHandler` EP: <include from="snippets.topic" element-id="epLink"><var name="ep" value="com.intellij.codeBlockSupportHandler"/></include>
[`CodeBlockSupportHandler`](%gh-ic%/platform/lang-impl/src/com/intellij/codeInsight/highlighting/CodeBlockSupportHandler.java) [`CodeBlockSupportHandler`](%gh-ic%/platform/lang-impl/src/com/intellij/codeInsight/highlighting/CodeBlockSupportHandler.java)
allows providing text ranges for more complex code blocks like, e.g., in `if`/`elsif`/`else` blocks. allows providing text ranges for more complex code blocks like, e.g., in `if`/`elsif`/`else` blocks.
@ -124,13 +119,13 @@ See also [](#brace-matching).
### Reference Injection ### Reference Injection
EP: `com.intellij.referenceInjector` EP: <include from="snippets.topic" element-id="epLink"><var name="ep" value="com.intellij.referenceInjector"/></include>
[`ReferenceInjector`](%gh-ic%/platform/analysis-api/src/com/intellij/psi/injection/ReferenceInjector.java) allows users to inject pre-defined references (e.g., "Encoding", "File Reference") into `PsiLanguageInjectionHost` elements (IntelliLang plugin required). [`ReferenceInjector`](%gh-ic%/platform/analysis-api/src/com/intellij/psi/injection/ReferenceInjector.java) allows users to inject pre-defined references (e.g., "Encoding", "File Reference") into `PsiLanguageInjectionHost` elements (IntelliLang plugin required).
### Prevent Error Highlighting of Files ### Prevent Error Highlighting of Files
EP: `com.intellij.problemHighlightFilter`, `com.intellij.problemFileHighlightFilter` EP: <include from="snippets.topic" element-id="epLink"><var name="ep" value="com.intellij.problemHighlightFilter"/></include>, <include from="snippets.topic" element-id="epLink"><var name="ep" value="com.intellij.problemFileHighlightFilter"/></include>
[`ProblemHighlightFilter`](%gh-ic%/platform/analysis-api/src/com/intellij/codeInsight/daemon/ProblemHighlightFilter.java) and [`ProblemHighlightFilter`](%gh-ic%/platform/analysis-api/src/com/intellij/codeInsight/daemon/ProblemHighlightFilter.java) and
the <include from="snippets.topic" element-id="ep"><var name="ep" value="com.intellij.problemFileHighlightFilter"/></include> (which implements the <include from="snippets.topic" element-id="ep"><var name="ep" value="com.intellij.problemFileHighlightFilter"/></include> (which implements
@ -140,12 +135,9 @@ the current project scope.
Note that these filters should be permissive and only prevent highlighting for files that are absolutely Note that these filters should be permissive and only prevent highlighting for files that are absolutely
known to be outside the scope. known to be outside the scope.
- [`JavaProblemHighlightFilter`](%gh-ic%/java/java-impl/src/com/intellij/codeInsight/daemon/JavaProblemHighlightFilter.java)
- [`PyProblemFileHighlightFilter`](%gh-ic%/python/src/com/jetbrains/python/codeInsight/PyProblemFileHighlightFilter.java)
### Semantic Highlight Usages ### Semantic Highlight Usages
EP: `com.intellij.highlightUsagesHandlerFactory` EP: <include from="snippets.topic" element-id="epLink"><var name="ep" value="com.intellij.highlightUsagesHandlerFactory"/></include>
[`HighlightUsagesHandlerFactory`](%gh-ic%/platform/lang-impl/src/com/intellij/codeInsight/highlighting/HighlightUsagesHandlerFactory.java) allows highlighting e.g., Exit Points or Exceptions. [`HighlightUsagesHandlerFactory`](%gh-ic%/platform/lang-impl/src/com/intellij/codeInsight/highlighting/HighlightUsagesHandlerFactory.java) allows highlighting e.g., Exit Points or Exceptions.
Can be [](indexing_and_psi_stubs.md#DumbAwareAPI) (2024.3+). Can be [](indexing_and_psi_stubs.md#DumbAwareAPI) (2024.3+).
@ -154,46 +146,40 @@ Can be [](indexing_and_psi_stubs.md#DumbAwareAPI) (2024.3+).
### Context Info ### Context Info
EP: `com.intellij.declarationRangeHandler` EP: <include from="snippets.topic" element-id="epLink"><var name="ep" value="com.intellij.declarationRangeHandler"/></include>
[`DeclarationRangeHandler`](%gh-ic%/platform/lang-api/src/com/intellij/codeInsight/hint/DeclarationRangeHandler.java) provides <ui-path>View | Context Info</ui-path> for custom languages with structure view implementation based on a [`TreeBasedStructureViewBuilder`](%gh-ic%/platform/editor-ui-api/src/com/intellij/ide/structureView/TreeBasedStructureViewBuilder.java). [`DeclarationRangeHandler`](%gh-ic%/platform/lang-api/src/com/intellij/codeInsight/hint/DeclarationRangeHandler.java) provides <ui-path>View | Context Info</ui-path> for custom languages with structure view implementation based on a [`TreeBasedStructureViewBuilder`](%gh-ic%/platform/editor-ui-api/src/com/intellij/ide/structureView/TreeBasedStructureViewBuilder.java).
### Breadcrumbs ### Breadcrumbs
EP: `com.intellij.breadcrumbsInfoProvider` EP: <include from="snippets.topic" element-id="epLink"><var name="ep" value="com.intellij.breadcrumbsInfoProvider"/></include>
[`BreadcrumbsProvider`](%gh-ic%/platform/editor-ui-api/src/com/intellij/ui/breadcrumbs/BreadcrumbsProvider.java) [`BreadcrumbsProvider`](%gh-ic%/platform/editor-ui-api/src/com/intellij/ui/breadcrumbs/BreadcrumbsProvider.java)
allows for language-specific [breadcrumbs](https://www.jetbrains.com/help/idea/navigating-through-the-source-code.html#editor_breadcrumbs). allows for language-specific [breadcrumbs](https://www.jetbrains.com/help/idea/navigating-through-the-source-code.html#editor_breadcrumbs).
[Sticky Lines](https://www.jetbrains.com/help/idea/sticky-lines.html) feature also uses this data. [Sticky Lines](https://www.jetbrains.com/help/idea/sticky-lines.html) feature also uses this data.
- [`GroovyBreadcrumbsInfoProvider`](%gh-ic%/plugins/groovy/src/org/jetbrains/plugins/groovy/editor/GroovyBreadcrumbsInfoProvider.kt)
## IDE Integration ## IDE Integration
### TODO View ### TODO View
[`ParserDefinition.getCommentTokens()`](%gh-ic%/platform/core-api/src/com/intellij/lang/ParserDefinition.java) must return the set of tokens treated as comments to populate the <control>TODO</control> tool window. [`ParserDefinition.getCommentTokens()`](%gh-ic%/platform/core-api/src/com/intellij/lang/ParserDefinition.java) must return the set of tokens treated as comments to populate the <control>TODO</control> tool window.
### Spellchecking
Moved to [](spell_checking.md).
### Color Preview/Chooser ### Color Preview/Chooser
EP: `com.intellij.colorProvider` EP: <include from="snippets.topic" element-id="epLink"><var name="ep" value="com.intellij.colorProvider"/></include>
[`ElementColorProvider`](%gh-ic%/platform/lang-api/src/com/intellij/openapi/editor/ElementColorProvider.java) renders gutter icon for an element containing color information. [`ElementColorProvider`](%gh-ic%/platform/lang-api/src/com/intellij/openapi/editor/ElementColorProvider.java) renders gutter icon for an element containing color information.
### File Includes ### File Includes
EP: `com.intellij.include.provider` EP: <include from="snippets.topic" element-id="epLink"><var name="ep" value="com.intellij.include.provider"/></include>
[`FileIncludeProvider`](%gh-ic%/platform/lang-impl/src/com/intellij/psi/impl/include/FileIncludeProvider.java) provides information about _include_ statements resolving to files (e.g., `<xi:include>` in XML). [`FileIncludeProvider`](%gh-ic%/platform/lang-impl/src/com/intellij/psi/impl/include/FileIncludeProvider.java) provides information about _include_ statements resolving to files (e.g., `<xi:include>` in XML).
Including/included files can then be obtained via [`FileIncludeManager`](%gh-ic%/platform/lang-api/src/com/intellij/psi/impl/include/FileIncludeManager.java). Including/included files can then be obtained via [`FileIncludeManager`](%gh-ic%/platform/lang-api/src/com/intellij/psi/impl/include/FileIncludeManager.java).
### Plain Text Completion ### Plain Text Completion
EP: `com.intelllij.completion.plainTextSymbol` EP: <include from="snippets.topic" element-id="epLink"><var name="ep" value="com.intellij.completion.plainTextSymbol"/></include>
[`PlainTextSymbolCompletionContributor`](%gh-ic%/platform/lang-api/src/com/intellij/codeInsight/completion/PlainTextSymbolCompletionContributor.java) [`PlainTextSymbolCompletionContributor`](%gh-ic%/platform/lang-api/src/com/intellij/codeInsight/completion/PlainTextSymbolCompletionContributor.java)
provides a simple way to extract lookup elements from a file so that users have completion available provides a simple way to extract lookup elements from a file so that users have completion available
@ -201,7 +187,7 @@ in, e.g., plain text editors like VCS commit messages.
### Reader Mode ### Reader Mode
EP: `com.intellij.readerModeMatcher` EP: <include from="snippets.topic" element-id="epLink"><var name="ep" value="com.intellij.readerModeMatcher"/></include>
[`ReaderModeMatcher`](%gh-ic%/platform/editor-ui-api/src/com/intellij/codeInsight/actions/ReaderModeMatcher.kt) [`ReaderModeMatcher`](%gh-ic%/platform/editor-ui-api/src/com/intellij/codeInsight/actions/ReaderModeMatcher.kt)
provides a way to decide if files are shown in the correct mode: reader mode vs. normal editor mode. provides a way to decide if files are shown in the correct mode: reader mode vs. normal editor mode.
@ -211,7 +197,7 @@ to get familiar with reader mode.
### Background Colors for Editors and Project View ### Background Colors for Editors and Project View
EP: `com.intellij.editorTabColorProvider` EP: <include from="snippets.topic" element-id="epLink"><var name="ep" value="com.intellij.editorTabColorProvider"/></include>
[`EditorTabColorProvider`](%gh-ic%/platform/ide-core-impl/src/com/intellij/openapi/fileEditor/impl/EditorTabColorProvider.java) [`EditorTabColorProvider`](%gh-ic%/platform/ide-core-impl/src/com/intellij/openapi/fileEditor/impl/EditorTabColorProvider.java)
allows for the modification of the background colors for specific files. allows for the modification of the background colors for specific files.
@ -219,24 +205,19 @@ If access to indexes is not required, it can be marked [dumb aware](indexing_and
### Custom Names and Tooltips for Editor Tabs ### Custom Names and Tooltips for Editor Tabs
EP: `com.intellij.editorTabTitleProvider` EP: <include from="snippets.topic" element-id="epLink"><var name="ep" value="com.intellij.editorTabTitleProvider"/></include>
[`EditorTabTitleProvider`](%gh-ic%/platform/ide-core-impl/src/com/intellij/openapi/fileEditor/impl/EditorTabTitleProvider.kt) [`EditorTabTitleProvider`](%gh-ic%/platform/ide-core-impl/src/com/intellij/openapi/fileEditor/impl/EditorTabTitleProvider.kt)
allows for specifying custom names and tooltips displayed in the title of editor tabs. allows for specifying custom names and tooltips displayed in the title of editor tabs.
If access to indexes is not required, it can be marked [dumb aware](indexing_and_psi_stubs.md#DumbAwareAPI). If access to indexes is not required, it can be marked [dumb aware](indexing_and_psi_stubs.md#DumbAwareAPI).
- [`GradleEditorTabTitleProvider`](%gh-ic%/plugins/gradle/src/org/jetbrains/plugins/gradle/util/GradleEditorTabTitleProvider.kt)
### Provide Fully Qualified Names (FQN) for Elements ### Provide Fully Qualified Names (FQN) for Elements
EP: `com.intellij.ide.actions.QualifiedNameProvider` EP: <include from="snippets.topic" element-id="epLink"><var name="ep" value="com.intellij.qualifiedNameProvider"/></include>
[`QualifiedNameProvider`](%gh-ic%/platform/refactoring/src/com/intellij/ide/actions/QualifiedNameProvider.java) [`QualifiedNameProvider`](%gh-ic%/platform/refactoring/src/com/intellij/ide/actions/QualifiedNameProvider.java)
provides features like copying and pasting references of FQN for, e.g., classes, functions, or methods. provides features like copying and pasting references of FQN for, e.g., classes, functions, or methods.
Therefore, the `QualifiedNameProvider` implementation needs to provide logic to convert from and to Therefore, the `QualifiedNameProvider` implementation needs to provide logic to convert from and to FQN.
FQN.
- [`PyQualifiedNameProvider`](%gh-ic%/python/src/com/jetbrains/python/actions/PyQualifiedNameProvider.java)
### Customized "Copy Path" ### Customized "Copy Path"
@ -249,10 +230,10 @@ Register the action with the popup menu group `<add-to-group group-id="CopyRefer
### Label Files as Test Files ### Label Files as Test Files
EP: `com.intellij.openapi.roots.TestSourcesFilter` EP: <include from="snippets.topic" element-id="epLink"><var name="ep" value="com.intellij.testSourcesFilter"/></include>
[`TestSourcesFilter`](%gh-ic%/platform/projectModel-api/src/com/intellij/openapi/roots/TestSourcesFilter.java) [`TestSourcesFilter`](%gh-ic%/platform/projectModel-api/src/com/intellij/openapi/roots/TestSourcesFilter.java)
allows for telling the IDE that a file is a test file, even it's not located in a directory marked as allows for telling the IDE that a file is a test file; even it's not located in a directory marked as
test root. test root.
This can be used in situations where test files are located next to source files. This can be used in situations where test files are located next to source files.
If these files can be distinguished either by filename or content from source files, implementing this If these files can be distinguished either by filename or content from source files, implementing this
@ -262,17 +243,15 @@ EP will mark them as test files for the IDE.
### Naming Suggestions ### Naming Suggestions
EP: `com.intellij.nameSuggestionProvider` EP: <include from="snippets.topic" element-id="epLink"><var name="ep" value="com.intellij.nameSuggestionProvider"/></include>
[`NameSuggestionProvider`](%gh-ic%/platform/refactoring/src/com/intellij/refactoring/rename/NameSuggestionProvider.java) provides name suggestions for the given element, e.g., for Rename refactoring. [`NameSuggestionProvider`](%gh-ic%/platform/refactoring/src/com/intellij/refactoring/rename/NameSuggestionProvider.java) provides name suggestions for the given element, e.g., for [Rename refactoring](rename_refactoring.md).
### Suggesting Rename and Change Signature Refactorings ### Suggesting Rename and Change Signature Refactorings
EP: `com.intellij.suggestedRefactoringSupport` EP: <include from="snippets.topic" element-id="epLink"><var name="ep" value="com.intellij.suggestedRefactoringSupport"/></include>
[`SuggestedRefactoringSupport`](%gh-ic%/platform/lang-api/src/com/intellij/refactoring/suggested/SuggestedRefactoringSupport.kt) [`SuggestedRefactoringSupport`](%gh-ic%/platform/lang-api/src/com/intellij/refactoring/suggested/SuggestedRefactoringSupport.kt)
provides functionality for suggesting rename and change signature refactorings for custom languages. provides functionality for suggesting rename and change signature refactorings for custom languages.
- [`KotlinSuggestedRefactoringSupport`](%gh-ic%/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/refactoring/suggested/KotlinSuggestedRefactoringSupport.kt)
<include from="snippets.topic" element-id="missingContent"/> <include from="snippets.topic" element-id="missingContent"/>