mirror of
https://github.com/JetBrains/intellij-sdk-code-samples.git
synced 2025-07-28 01:07:49 +08:00
Migration from Stardust to Writerside (#902)
This commit is contained in:
parent
2e4215b01b
commit
c36147439c
@ -1,11 +1,11 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE root
|
||||
SYSTEM "https://resources.jetbrains.com/stardust/build-script.dtd">
|
||||
SYSTEM "https://helpserver.labs.jb.gg/help/schemas/mvp/build-script.dtd">
|
||||
<root>
|
||||
<builds>
|
||||
<product id="ijs" master="project.ihp" family="idea">
|
||||
<instance id="ijs" master="project.ihp" family="idea">
|
||||
<artifact type="web2" platform="primary" local-update="true" local-update-path="idea-sdk"
|
||||
image-bundle="true"/>
|
||||
</product>
|
||||
</instance>
|
||||
</builds>
|
||||
</root>
|
||||
|
@ -1,7 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<buildprofiles xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:noNamespaceSchemaLocation="https://resources.jetbrains.com/stardust/build-profiles.xsd">
|
||||
|
||||
<buildprofiles xsi:noNamespaceSchemaLocation="https://helpserver.labs.jb.gg/help/schemas/mvp/build-profiles.xsd"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<variables>
|
||||
<web-root>https://plugins.jetbrains.com/docs</web-root>
|
||||
<product-web-url>https://plugins.jetbrains.com/docs/intellij/</product-web-url>
|
||||
@ -26,9 +25,20 @@
|
||||
<noindex-content-in-deprecated>false</noindex-content-in-deprecated>
|
||||
<noindex-content-in-eap>false</noindex-content-in-eap>
|
||||
<noindex-content-in-release>false</noindex-content-in-release>
|
||||
|
||||
<config-algolia-api-key>8c2683cac2d71d547b55183297abb506</config-algolia-api-key>
|
||||
<config-algolia-id>OHIV241QET</config-algolia-id>
|
||||
<config-algolia-index>prod_JETBRAINSCOM_HELP</config-algolia-index>
|
||||
<config-algolia-product-id>intellij</config-algolia-product-id>
|
||||
<config-algloia-product-version></config-algloia-product-version>
|
||||
|
||||
<analytics-head-script-file>google-analytics-code.html</analytics-head-script-file>
|
||||
<analytics-body-html-file>google-analytics-noscript.html</analytics-body-html-file>
|
||||
|
||||
<automaticLinkSummaries>false</automaticLinkSummaries>
|
||||
</variables>
|
||||
|
||||
<build-profile product="ijs"/>
|
||||
<build-profile instance="ijs"/>
|
||||
|
||||
<footer>
|
||||
<social type="twitter" href="https://twitter.com/JBPlatform/"/>
|
||||
|
7
cfg/google-analytics-code.html
Normal file
7
cfg/google-analytics-code.html
Normal file
@ -0,0 +1,7 @@
|
||||
<!-- Google Tag Manager -->
|
||||
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
|
||||
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
|
||||
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
|
||||
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
|
||||
})(window,document,'script','dataLayer','GTM-5P98');</script>
|
||||
<!-- End Google Tag Manager -->
|
4
cfg/google-analytics-noscript.html
Normal file
4
cfg/google-analytics-noscript.html
Normal file
@ -0,0 +1,4 @@
|
||||
<!-- Google Tag Manager (noscript) -->
|
||||
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-5P98"
|
||||
height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
||||
<!-- End Google Tag Manager (noscript) -->
|
572
ijs.tree
572
ijs.tree
@ -1,335 +1,335 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE product-profile
|
||||
SYSTEM "https://resources.jetbrains.com/stardust/product-profile.dtd">
|
||||
<product-profile id="ijs" name="IntelliJ Platform Plugin SDK" start-page="welcome.md" status="release">
|
||||
<toc-element id="welcome.md" toc-title="Home"/>
|
||||
<!DOCTYPE instance-profile
|
||||
SYSTEM "https://helpserver.labs.jb.gg/help/schemas/mvp/product-profile.dtd">
|
||||
<instance-profile id="ijs" name="IntelliJ Platform Plugin SDK" start-page="welcome.md" status="release">
|
||||
<toc-element topic="welcome.md" toc-title="Home"/>
|
||||
<toc-element toc-title="Introduction">
|
||||
<toc-element id="intellij_platform.md">
|
||||
<toc-element id="platform_contributions.md"/>
|
||||
<toc-element id="intellij_coding_guidelines.md"/>
|
||||
<toc-element topic="intellij_platform.md">
|
||||
<toc-element topic="platform_contributions.md"/>
|
||||
<toc-element topic="intellij_coding_guidelines.md"/>
|
||||
</toc-element>
|
||||
<toc-element id="about.md" toc-title="The IntelliJ Platform SDK">
|
||||
<toc-element id="key_topics.md"/>
|
||||
<toc-element id="intellij-sdk-docs-original_CONTRIBUTING.md" toc-title="Contributing to the SDK"
|
||||
<toc-element topic="about.md" toc-title="The IntelliJ Platform SDK">
|
||||
<toc-element topic="key_topics.md"/>
|
||||
<toc-element topic="intellij-sdk-docs-original_CONTRIBUTING.md" toc-title="Contributing to the SDK"
|
||||
accepts-web-file-names="intellij-sdk-docs-original-CONTRIBUTING.html">
|
||||
<toc-element id="sdk_style.md" accepts-web-file-names="CONTRIBUTING.html"/>
|
||||
<toc-element id="sdk_code_guidelines.md"/>
|
||||
<toc-element topic="sdk_style.md" accepts-web-file-names="CONTRIBUTING.html"/>
|
||||
<toc-element topic="sdk_code_guidelines.md"/>
|
||||
</toc-element>
|
||||
<toc-element id="intellij-sdk-docs-original_CODE_OF_CONDUCT.md"/>
|
||||
<toc-element topic="intellij-sdk-docs-original_CODE_OF_CONDUCT.md"/>
|
||||
</toc-element>
|
||||
<toc-element id="code_samples.md"/>
|
||||
<toc-element id="getting_help.md"/>
|
||||
<toc-element id="content_updates.md" accepts-web-file-names="recently_updated.html"/>
|
||||
<toc-element topic="code_samples.md"/>
|
||||
<toc-element topic="getting_help.md"/>
|
||||
<toc-element topic="content_updates.md" accepts-web-file-names="recently_updated.html"/>
|
||||
</toc-element>
|
||||
<toc-element toc-title="Part I — Plugins">
|
||||
<toc-element id="plugins_quick_start.md" accepts-web-file-names="basics.html">
|
||||
<toc-element id="plugin_alternatives.md" toc-title="Plugin Alternatives"/>
|
||||
<toc-element id="plugin_required_experience.md"/>
|
||||
<toc-element id="plugin_types.md" accepts-web-file-names="types-of-plugins.html"/>
|
||||
<toc-element topic="plugins_quick_start.md" accepts-web-file-names="basics.html">
|
||||
<toc-element topic="plugin_alternatives.md" toc-title="Plugin Alternatives"/>
|
||||
<toc-element topic="plugin_required_experience.md"/>
|
||||
<toc-element topic="plugin_types.md" accepts-web-file-names="types-of-plugins.html"/>
|
||||
</toc-element>
|
||||
<toc-element id="developing_plugins.md"
|
||||
<toc-element topic="developing_plugins.md"
|
||||
accepts-web-file-names="getting-started.html,gradle-build-system.html,build_system.html">
|
||||
<toc-element id="creating_plugin_project.md" accepts-web-file-names="gradle-prerequisites.html">
|
||||
<toc-element id="plugin_github_template.md" toc-title="Plugin GitHub Template"
|
||||
<toc-element topic="creating_plugin_project.md" accepts-web-file-names="gradle-prerequisites.html">
|
||||
<toc-element topic="plugin_github_template.md" toc-title="Plugin GitHub Template"
|
||||
accepts-web-file-names="github-template.html"/>
|
||||
<toc-element id="migrating_plugin_devkit_to_gradle.md"/>
|
||||
<toc-element topic="migrating_plugin_devkit_to_gradle.md"/>
|
||||
</toc-element>
|
||||
<toc-element id="configuring_plugin_project.md" accepts-web-file-names="gradle-guide.html">
|
||||
<toc-element id="using_kotlin.md" accepts-web-file-names="kotlin.html"/>
|
||||
<toc-element topic="configuring_plugin_project.md" accepts-web-file-names="gradle-guide.html">
|
||||
<toc-element topic="using_kotlin.md" accepts-web-file-names="kotlin.html"/>
|
||||
</toc-element>
|
||||
<toc-element id="ide_development_instance.md" accepts-web-file-names="settings_caches_logs.html"/>
|
||||
<toc-element id="plugin_signing.md"/>
|
||||
<toc-element id="publishing_plugin.md" accepts-web-file-names="deployment.html"/>
|
||||
<toc-element topic="ide_development_instance.md" accepts-web-file-names="settings_caches_logs.html"/>
|
||||
<toc-element topic="plugin_signing.md"/>
|
||||
<toc-element topic="publishing_plugin.md" accepts-web-file-names="deployment.html"/>
|
||||
</toc-element>
|
||||
<toc-element id="plugin_structure.md">
|
||||
<toc-element id="plugin_content.md"/>
|
||||
<toc-element id="bundling_plugin_openapi_sources.md" toc-title="Plugin API Sources"/>
|
||||
<toc-element id="plugin_class_loaders.md"/>
|
||||
<toc-element id="plugin_actions.md"/>
|
||||
<toc-element id="plugin_extensions.md" accepts-web-file-names="plugin_extensions_and_extension_points.html"/>
|
||||
<toc-element id="plugin_services.md"/>
|
||||
<toc-element id="plugin_listeners.md"/>
|
||||
<toc-element id="plugin_extension_points.md"/>
|
||||
<toc-element id="plugin_components.md"/>
|
||||
<toc-element id="plugin_configuration_file.md"/>
|
||||
<toc-element id="plugin_icon_file.md"/>
|
||||
<toc-element id="plugin_dependencies.md"/>
|
||||
<toc-element topic="plugin_structure.topic">
|
||||
<toc-element topic="plugin_content.md"/>
|
||||
<toc-element topic="bundling_plugin_openapi_sources.md" toc-title="Plugin API Sources"/>
|
||||
<toc-element topic="plugin_class_loaders.md"/>
|
||||
<toc-element topic="plugin_actions.md"/>
|
||||
<toc-element topic="plugin_extensions.md" accepts-web-file-names="plugin_extensions_and_extension_points.html"/>
|
||||
<toc-element topic="plugin_services.md"/>
|
||||
<toc-element topic="plugin_listeners.md"/>
|
||||
<toc-element topic="plugin_extension_points.md"/>
|
||||
<toc-element topic="plugin_components.md"/>
|
||||
<toc-element topic="plugin_configuration_file.md"/>
|
||||
<toc-element topic="plugin_icon_file.md"/>
|
||||
<toc-element topic="plugin_dependencies.md"/>
|
||||
</toc-element>
|
||||
<toc-element id="dynamic_plugins.md"/>
|
||||
<toc-element id="intellij_artifacts.md"/>
|
||||
<toc-element id="faq.md"/>
|
||||
<toc-element topic="dynamic_plugins.md"/>
|
||||
<toc-element topic="intellij_artifacts.md"/>
|
||||
<toc-element topic="faq.md"/>
|
||||
</toc-element>
|
||||
<toc-element toc-title="Part II — Base Platform">
|
||||
<toc-element id="fundamentals.md" accepts-web-file-names="reference_guide.html,architectural_overview.html">
|
||||
<toc-element topic="fundamentals.md" accepts-web-file-names="reference_guide.html,architectural_overview.html">
|
||||
<toc-element toc-title="Component Model"/>
|
||||
<toc-element id="disposers.md"/>
|
||||
<toc-element id="general_threading_rules.md" toc-title="Threading">
|
||||
<toc-element topic="disposers.md"/>
|
||||
<toc-element topic="general_threading_rules.md" toc-title="Threading">
|
||||
<toc-element toc-title="Background Tasks"/>
|
||||
</toc-element>
|
||||
<toc-element id="messaging_infrastructure.md"/>
|
||||
<toc-element topic="messaging_infrastructure.md"/>
|
||||
<toc-element toc-title="Queries and Query Executors"/>
|
||||
</toc-element>
|
||||
<toc-element id="ide_infrastructure.md"/>
|
||||
<toc-element id="user_interface_components.md">
|
||||
<toc-element id="tool_windows.md"/>
|
||||
<toc-element id="dialog_wrapper.md"/>
|
||||
<toc-element id="kotlin_ui_dsl_version_2.md">
|
||||
<toc-element id="kotlin_ui_dsl.md"/>
|
||||
<toc-element topic="ide_infrastructure.md"/>
|
||||
<toc-element topic="user_interface_components.md">
|
||||
<toc-element topic="tool_windows.md"/>
|
||||
<toc-element topic="dialog_wrapper.md"/>
|
||||
<toc-element topic="kotlin_ui_dsl_version_2.md">
|
||||
<toc-element topic="kotlin_ui_dsl.md"/>
|
||||
</toc-element>
|
||||
<toc-element id="popups.md"/>
|
||||
<toc-element id="notifications.md"/>
|
||||
<toc-element id="file_and_class_choosers.md"/>
|
||||
<toc-element id="editor_components.md"/>
|
||||
<toc-element id="lists_and_trees.md"/>
|
||||
<toc-element id="status_bar_widgets.md"/>
|
||||
<toc-element id="misc_swing_components.md"/>
|
||||
<toc-element id="work_with_icons_and_images.md" toc-title="Icons and Images"/>
|
||||
<toc-element id="color_scheme_management.md"/>
|
||||
<toc-element id="themes_metadata.md"/>
|
||||
<toc-element topic="popups.md"/>
|
||||
<toc-element topic="notifications.md"/>
|
||||
<toc-element topic="file_and_class_choosers.md"/>
|
||||
<toc-element topic="editor_components.md"/>
|
||||
<toc-element topic="lists_and_trees.md"/>
|
||||
<toc-element topic="status_bar_widgets.md"/>
|
||||
<toc-element topic="misc_swing_components.md"/>
|
||||
<toc-element topic="work_with_icons_and_images.md" toc-title="Icons and Images"/>
|
||||
<toc-element topic="color_scheme_management.md"/>
|
||||
<toc-element topic="themes_metadata.md"/>
|
||||
</toc-element>
|
||||
<toc-element id="jcef.md" toc-title="JCEF"/>
|
||||
<toc-element id="basic_action_system.md" accepts-web-file-names="action_system.html">
|
||||
<toc-element id="action_system.md">
|
||||
<toc-element id="working_with_custom_actions.md"/>
|
||||
<toc-element id="grouping_action.md"/>
|
||||
<toc-element topic="jcef.md" toc-title="JCEF"/>
|
||||
<toc-element topic="basic_action_system.md" accepts-web-file-names="action_system.html">
|
||||
<toc-element topic="action_system.md">
|
||||
<toc-element topic="working_with_custom_actions.md"/>
|
||||
<toc-element topic="grouping_action.md"/>
|
||||
</toc-element>
|
||||
</toc-element>
|
||||
<toc-element id="persistence.md" toc-title="Persistence">
|
||||
<toc-element id="persisting_state_of_components.md"/>
|
||||
<toc-element id="persisting_sensitive_data.md"/>
|
||||
<toc-element topic="persistence.md" toc-title="Persistence">
|
||||
<toc-element topic="persisting_state_of_components.md"/>
|
||||
<toc-element topic="persisting_sensitive_data.md"/>
|
||||
</toc-element>
|
||||
<toc-element id="settings.md">
|
||||
<toc-element id="settings_guide.md"/>
|
||||
<toc-element id="settings_groups.md"/>
|
||||
<toc-element id="settings_tutorial.md"/>
|
||||
<toc-element topic="settings.md">
|
||||
<toc-element topic="settings_guide.md"/>
|
||||
<toc-element topic="settings_groups.md"/>
|
||||
<toc-element topic="settings_tutorial.md"/>
|
||||
</toc-element>
|
||||
<toc-element id="files.md">
|
||||
<toc-element id="virtual_file_system.md"/>
|
||||
<toc-element id="virtual_file.md"/>
|
||||
<toc-element topic="files.md">
|
||||
<toc-element topic="virtual_file_system.md"/>
|
||||
<toc-element topic="virtual_file.md"/>
|
||||
</toc-element>
|
||||
<toc-element id="documents.md"/>
|
||||
<toc-element id="editors.md">
|
||||
<toc-element id="editor_basics.md" toc-title="Editor Basics">
|
||||
<toc-element id="working_with_text.md"/>
|
||||
<toc-element id="coordinates_system.md"/>
|
||||
<toc-element id="editor_events.md"/>
|
||||
<toc-element topic="documents.md"/>
|
||||
<toc-element topic="editors.md">
|
||||
<toc-element topic="editor_basics.md" toc-title="Editor Basics">
|
||||
<toc-element topic="working_with_text.md"/>
|
||||
<toc-element topic="coordinates_system.md"/>
|
||||
<toc-element topic="editor_events.md"/>
|
||||
</toc-element>
|
||||
<toc-element id="text_selection.md"/>
|
||||
<toc-element id="multiple_carets.md"/>
|
||||
<toc-element topic="text_selection.md"/>
|
||||
<toc-element topic="multiple_carets.md"/>
|
||||
</toc-element>
|
||||
<toc-element id="basic_run_configurations.md" accepts-web-file-names="run_configurations.html">
|
||||
<toc-element id="run_configuration_management.md"/>
|
||||
<toc-element id="run_configuration_execution.md"/>
|
||||
<toc-element id="run_configurations.md"/>
|
||||
<toc-element topic="basic_run_configurations.md" accepts-web-file-names="run_configurations.html">
|
||||
<toc-element topic="run_configuration_management.md"/>
|
||||
<toc-element topic="run_configuration_execution.md"/>
|
||||
<toc-element topic="run_configurations.md"/>
|
||||
</toc-element>
|
||||
<toc-element id="vcs_integration_for_plugins.md">
|
||||
<toc-element topic="vcs_integration_for_plugins.md">
|
||||
<toc-element toc-title="Diff"/>
|
||||
<toc-element toc-title="Local History"/>
|
||||
</toc-element>
|
||||
<toc-element toc-title="Tasks and Contexts"/>
|
||||
<toc-element id="localization_guide.md"/>
|
||||
<toc-element topic="localization_guide.md"/>
|
||||
<toc-element toc-title="Diagrams"/>
|
||||
</toc-element>
|
||||
<toc-element toc-title="Part III — Project Model">
|
||||
<toc-element id="project_structure.md"/>
|
||||
<toc-element id="project.md">
|
||||
<toc-element id="trusted_projects.md"/>
|
||||
<toc-element id="project_wizard.md" toc-title="Project Wizard"/>
|
||||
<toc-element id="intro_project_wizard.md" accepts-web-file-names="project_wizard.html">
|
||||
<toc-element id="adding_new_steps.md"/>
|
||||
<toc-element id="module_types.md"/>
|
||||
<toc-element topic="project_structure.md"/>
|
||||
<toc-element topic="project.md">
|
||||
<toc-element topic="trusted_projects.md"/>
|
||||
<toc-element topic="project_wizard.md" toc-title="Project Wizard"/>
|
||||
<toc-element topic="intro_project_wizard.md" accepts-web-file-names="project_wizard.html">
|
||||
<toc-element topic="adding_new_steps.md"/>
|
||||
<toc-element topic="module_types.md"/>
|
||||
</toc-element>
|
||||
<toc-element id="framework.md"/>
|
||||
<toc-element topic="framework.md"/>
|
||||
</toc-element>
|
||||
<toc-element id="module.md"/>
|
||||
<toc-element id="sdk.md"/>
|
||||
<toc-element id="library.md"/>
|
||||
<toc-element id="facet.md"/>
|
||||
<toc-element id="external_system_integration.md"/>
|
||||
<toc-element topic="module.md"/>
|
||||
<toc-element topic="sdk.md"/>
|
||||
<toc-element topic="library.md"/>
|
||||
<toc-element topic="facet.md"/>
|
||||
<toc-element topic="external_system_integration.md"/>
|
||||
</toc-element>
|
||||
<toc-element toc-title="Part IV — PSI">
|
||||
<toc-element id="psi.md" toc-title="What Is the PSI?"/>
|
||||
<toc-element id="psi_files.md"/>
|
||||
<toc-element id="file_view_providers.md"/>
|
||||
<toc-element id="psi_elements.md"/>
|
||||
<toc-element id="navigating_psi.md"/>
|
||||
<toc-element id="psi_references.md"/>
|
||||
<toc-element id="modifying_psi.md"/>
|
||||
<toc-element id="psi_cookbook.md"/>
|
||||
<toc-element id="psi_performance.md" accepts-web-file-names="performance.html"/>
|
||||
<toc-element id="indexing_and_psi_stubs.md">
|
||||
<toc-element id="file_based_indexes.md"/>
|
||||
<toc-element id="stub_indexes.md"/>
|
||||
<toc-element topic="psi.md" toc-title="What Is the PSI?"/>
|
||||
<toc-element topic="psi_files.md"/>
|
||||
<toc-element topic="file_view_providers.md"/>
|
||||
<toc-element topic="psi_elements.md"/>
|
||||
<toc-element topic="navigating_psi.md"/>
|
||||
<toc-element topic="psi_references.md"/>
|
||||
<toc-element topic="modifying_psi.md"/>
|
||||
<toc-element topic="psi_cookbook.md"/>
|
||||
<toc-element topic="psi_performance.md" accepts-web-file-names="performance.html"/>
|
||||
<toc-element topic="indexing_and_psi_stubs.md">
|
||||
<toc-element topic="file_based_indexes.md"/>
|
||||
<toc-element topic="stub_indexes.md"/>
|
||||
</toc-element>
|
||||
<toc-element id="element_patterns.md"/>
|
||||
<toc-element id="uast.md" toc-title="Unified AST"/>
|
||||
<toc-element id="xml_dom_api.md"/>
|
||||
<toc-element topic="element_patterns.md"/>
|
||||
<toc-element topic="uast.md" toc-title="Unified AST"/>
|
||||
<toc-element topic="xml_dom_api.md"/>
|
||||
</toc-element>
|
||||
<toc-element toc-title="Part V — Features">
|
||||
<toc-element toc-title="Navigation"/>
|
||||
<toc-element id="editing.md">
|
||||
<toc-element topic="editing.md">
|
||||
<toc-element toc-title="Code Completion"/>
|
||||
<toc-element id="postfix_completion.md">
|
||||
<toc-element id="postfix_templates.md"/>
|
||||
<toc-element id="advanced_postfix_templates.md"/>
|
||||
<toc-element topic="postfix_completion.md">
|
||||
<toc-element topic="postfix_templates.md"/>
|
||||
<toc-element topic="advanced_postfix_templates.md"/>
|
||||
</toc-element>
|
||||
<toc-element id="templates.md">
|
||||
<toc-element id="live_templates.md">
|
||||
<toc-element id="template_support.md"/>
|
||||
<toc-element id="new_macros.md"/>
|
||||
<toc-element topic="templates.md">
|
||||
<toc-element topic="live_templates.md">
|
||||
<toc-element topic="template_support.md"/>
|
||||
<toc-element topic="new_macros.md"/>
|
||||
</toc-element>
|
||||
<toc-element id="file_and_code_templates.md">
|
||||
<toc-element id="providing_file_templates.md"/>
|
||||
<toc-element id="using_file_templates.md"/>
|
||||
<toc-element topic="file_and_code_templates.md">
|
||||
<toc-element topic="providing_file_templates.md"/>
|
||||
<toc-element topic="using_file_templates.md"/>
|
||||
</toc-element>
|
||||
</toc-element>
|
||||
<toc-element id="code_documentation.md"/>
|
||||
<toc-element id="code_intentions.md"/>
|
||||
<toc-element topic="code_documentation.md"/>
|
||||
<toc-element topic="code_intentions.md"/>
|
||||
</toc-element>
|
||||
<toc-element id="analyzing.md" toc-title="Analysing">
|
||||
<toc-element id="syntax_errors.md"/>
|
||||
<toc-element topic="analyzing.md" toc-title="Analysing">
|
||||
<toc-element topic="syntax_errors.md"/>
|
||||
<toc-element toc-title="Annotators"/>
|
||||
<toc-element id="code_inspections.md" toc-title="Inspections">
|
||||
<toc-element topic="code_inspections.md" toc-title="Inspections">
|
||||
<toc-element toc-title="Profiles"/>
|
||||
<toc-element toc-title="Scopes"/>
|
||||
<toc-element toc-title="Suppressing Highlights"/>
|
||||
<toc-element toc-title="Structural Search"/>
|
||||
</toc-element>
|
||||
<toc-element id="controlling_highlighting.md"/>
|
||||
<toc-element topic="controlling_highlighting.md"/>
|
||||
</toc-element>
|
||||
<toc-element toc-title="Refactoring"/>
|
||||
<toc-element id="project_view.md">
|
||||
<toc-element id="tree_structure_view.md"/>
|
||||
<toc-element topic="project_view.md">
|
||||
<toc-element topic="tree_structure_view.md"/>
|
||||
</toc-element>
|
||||
<toc-element toc-title="Unit Testing"/>
|
||||
<toc-element id="build_system.md">
|
||||
<toc-element id="external_builder_api.md"/>
|
||||
<toc-element topic="build_system.md">
|
||||
<toc-element topic="external_builder_api.md"/>
|
||||
</toc-element>
|
||||
</toc-element>
|
||||
<toc-element toc-title="Part VI — Testing">
|
||||
<toc-element id="testing_plugins.md" accepts-web-file-names="testing_plugins.html"/>
|
||||
<toc-element id="tests_and_fixtures.md"/>
|
||||
<toc-element id="light_and_heavy_tests.md"/>
|
||||
<toc-element id="test_project_and_testdata_directories.md"/>
|
||||
<toc-element id="writing_tests.md"/>
|
||||
<toc-element id="testing_highlighting.md"/>
|
||||
<toc-element id="testing_faq.md"/>
|
||||
<toc-element topic="testing_plugins.md" accepts-web-file-names="testing_plugins.html"/>
|
||||
<toc-element topic="tests_and_fixtures.md"/>
|
||||
<toc-element topic="light_and_heavy_tests.md"/>
|
||||
<toc-element topic="test_project_and_testdata_directories.md"/>
|
||||
<toc-element topic="writing_tests.md"/>
|
||||
<toc-element topic="testing_highlighting.md"/>
|
||||
<toc-element topic="testing_faq.md"/>
|
||||
</toc-element>
|
||||
<toc-element toc-title="Part VII — Custom Languages">
|
||||
<toc-element id="custom_language_support.md">
|
||||
<toc-element id="registering_file_type.md"/>
|
||||
<toc-element id="implementing_lexer.md"/>
|
||||
<toc-element id="implementing_parser_and_psi.md"/>
|
||||
<toc-element id="syntax_highlighting_and_error_highlighting.md"/>
|
||||
<toc-element id="references_and_resolve.md"/>
|
||||
<toc-element id="symbols.md"/>
|
||||
<toc-element id="declarations_and_references.md"/>
|
||||
<toc-element id="navigation.md"/>
|
||||
<toc-element id="code_completion.md"/>
|
||||
<toc-element id="find_usages.md"/>
|
||||
<toc-element id="rename_refactoring.md"/>
|
||||
<toc-element id="safe_delete_refactoring.md"/>
|
||||
<toc-element id="code_formatting.md"/>
|
||||
<toc-element id="code_inspections_and_intentions.md"/>
|
||||
<toc-element id="structure_view.md"/>
|
||||
<toc-element id="navbar.md"/>
|
||||
<toc-element topic="custom_language_support.md">
|
||||
<toc-element topic="registering_file_type.md"/>
|
||||
<toc-element topic="implementing_lexer.md"/>
|
||||
<toc-element topic="implementing_parser_and_psi.md"/>
|
||||
<toc-element topic="syntax_highlighting_and_error_highlighting.md"/>
|
||||
<toc-element topic="references_and_resolve.md"/>
|
||||
<toc-element topic="symbols.md"/>
|
||||
<toc-element topic="declarations_and_references.md"/>
|
||||
<toc-element topic="navigation.md"/>
|
||||
<toc-element topic="code_completion.md"/>
|
||||
<toc-element topic="find_usages.md"/>
|
||||
<toc-element topic="rename_refactoring.md"/>
|
||||
<toc-element topic="safe_delete_refactoring.md"/>
|
||||
<toc-element topic="code_formatting.md"/>
|
||||
<toc-element topic="code_inspections_and_intentions.md"/>
|
||||
<toc-element topic="structure_view.md"/>
|
||||
<toc-element topic="navbar.md"/>
|
||||
<toc-element toc-title="Code Hierarchy"/>
|
||||
<toc-element id="surround_with.md"/>
|
||||
<toc-element id="go_to_class_and_go_to_symbol.md"/>
|
||||
<toc-element id="documentation.md"/>
|
||||
<toc-element id="parameter_info.md"/>
|
||||
<toc-element id="inlay_hints.md"/>
|
||||
<toc-element id="spell_checking.md"/>
|
||||
<toc-element id="additional_minor_features.md"/>
|
||||
<toc-element topic="surround_with.md"/>
|
||||
<toc-element topic="go_to_class_and_go_to_symbol.md"/>
|
||||
<toc-element topic="documentation.md"/>
|
||||
<toc-element topic="parameter_info.md"/>
|
||||
<toc-element topic="inlay_hints.md"/>
|
||||
<toc-element topic="spell_checking.md"/>
|
||||
<toc-element topic="additional_minor_features.md"/>
|
||||
</toc-element>
|
||||
<toc-element id="custom_language_support_tutorial.md">
|
||||
<toc-element id="prerequisites.md"/>
|
||||
<toc-element id="language_and_filetype.md"/>
|
||||
<toc-element id="grammar_and_parser.md"/>
|
||||
<toc-element id="lexer_and_parser_definition.md"/>
|
||||
<toc-element id="syntax_highlighter_and_color_settings_page.md"/>
|
||||
<toc-element id="psi_helper_and_utilities.md"/>
|
||||
<toc-element id="annotator.md"/>
|
||||
<toc-element id="line_marker_provider.md"/>
|
||||
<toc-element id="completion_contributor.md"/>
|
||||
<toc-element id="reference_contributor.md"/>
|
||||
<toc-element id="find_usages_provider.md"/>
|
||||
<toc-element id="folding_builder.md"/>
|
||||
<toc-element id="go_to_symbol_contributor.md"/>
|
||||
<toc-element id="structure_view_factory.md"/>
|
||||
<toc-element id="structure_aware_navbar.md"/>
|
||||
<toc-element id="formatter.md"/>
|
||||
<toc-element id="code_style_settings.md"/>
|
||||
<toc-element id="commenter.md"/>
|
||||
<toc-element id="quick_fix.md"/>
|
||||
<toc-element id="documentation_provider.md"/>
|
||||
<toc-element id="spell_checking_strategy.md"/>
|
||||
<toc-element topic="custom_language_support_tutorial.md">
|
||||
<toc-element topic="prerequisites.md"/>
|
||||
<toc-element topic="language_and_filetype.md"/>
|
||||
<toc-element topic="grammar_and_parser.md"/>
|
||||
<toc-element topic="lexer_and_parser_definition.md"/>
|
||||
<toc-element topic="syntax_highlighter_and_color_settings_page.md"/>
|
||||
<toc-element topic="psi_helper_and_utilities.md"/>
|
||||
<toc-element topic="annotator.md"/>
|
||||
<toc-element topic="line_marker_provider.md"/>
|
||||
<toc-element topic="completion_contributor.md"/>
|
||||
<toc-element topic="reference_contributor.md"/>
|
||||
<toc-element topic="find_usages_provider.md"/>
|
||||
<toc-element topic="folding_builder.md"/>
|
||||
<toc-element topic="go_to_symbol_contributor.md"/>
|
||||
<toc-element topic="structure_view_factory.md"/>
|
||||
<toc-element topic="structure_aware_navbar.md"/>
|
||||
<toc-element topic="formatter.md"/>
|
||||
<toc-element topic="code_style_settings.md"/>
|
||||
<toc-element topic="commenter.md"/>
|
||||
<toc-element topic="quick_fix.md"/>
|
||||
<toc-element topic="documentation_provider.md"/>
|
||||
<toc-element topic="spell_checking_strategy.md"/>
|
||||
</toc-element>
|
||||
<toc-element id="writing_tests_for_plugins.md">
|
||||
<toc-element id="tests_prerequisites.md"/>
|
||||
<toc-element id="parsing_test.md"/>
|
||||
<toc-element id="completion_test.md"/>
|
||||
<toc-element id="annotator_test.md"/>
|
||||
<toc-element id="formatter_test.md"/>
|
||||
<toc-element id="rename_test.md"/>
|
||||
<toc-element id="folding_test.md"/>
|
||||
<toc-element id="find_usages_test.md"/>
|
||||
<toc-element id="commenter_test.md"/>
|
||||
<toc-element id="reference_test.md"/>
|
||||
<toc-element id="documentation_test.md"/>
|
||||
<toc-element topic="writing_tests_for_plugins.md">
|
||||
<toc-element topic="tests_prerequisites.md"/>
|
||||
<toc-element topic="parsing_test.md"/>
|
||||
<toc-element topic="completion_test.md"/>
|
||||
<toc-element topic="annotator_test.md"/>
|
||||
<toc-element topic="formatter_test.md"/>
|
||||
<toc-element topic="rename_test.md"/>
|
||||
<toc-element topic="folding_test.md"/>
|
||||
<toc-element topic="find_usages_test.md"/>
|
||||
<toc-element topic="commenter_test.md"/>
|
||||
<toc-element topic="reference_test.md"/>
|
||||
<toc-element topic="documentation_test.md"/>
|
||||
</toc-element>
|
||||
<toc-element id="language_injection.md"/>
|
||||
<toc-element topic="language_injection.md"/>
|
||||
<toc-element toc-title="Build System"/>
|
||||
<toc-element toc-title="Compiler"/>
|
||||
<toc-element toc-title="Debugger"/>
|
||||
</toc-element>
|
||||
<toc-element toc-title="Part VIII — Product Specific">
|
||||
<toc-element id="dev_alternate_products.md" toc-title="Developing for Multiple Products"/>
|
||||
<toc-element id="plugin_compatibility.md" toc-title="Compatibility with Multiple Products"/>
|
||||
<toc-element id="android_studio.md" toc-title="Android Studio">
|
||||
<toc-element id="android_studio_releases_list.md"/>
|
||||
<toc-element topic="dev_alternate_products.md" toc-title="Developing for Multiple Products"/>
|
||||
<toc-element topic="plugin_compatibility.md" toc-title="Compatibility with Multiple Products"/>
|
||||
<toc-element topic="android_studio.md" toc-title="Android Studio">
|
||||
<toc-element topic="android_studio_releases_list.md"/>
|
||||
</toc-element>
|
||||
<toc-element id="app_code.md" toc-title="AppCode">
|
||||
<toc-element id="appcode_extension_point_list.md"/>
|
||||
<toc-element topic="app_code.md" toc-title="AppCode">
|
||||
<toc-element topic="appcode_extension_point_list.md"/>
|
||||
</toc-element>
|
||||
<toc-element id="clion.md" toc-title="CLion">
|
||||
<toc-element id="clion_extension_point_list.md"/>
|
||||
<toc-element topic="clion.md" toc-title="CLion">
|
||||
<toc-element topic="clion_extension_point_list.md"/>
|
||||
</toc-element>
|
||||
<toc-element id="data_grip.md" toc-title="DataGrip">
|
||||
<toc-element id="data_grip_extension_point_list.md"/>
|
||||
<toc-element topic="data_grip.md" toc-title="DataGrip">
|
||||
<toc-element topic="data_grip_extension_point_list.md"/>
|
||||
</toc-element>
|
||||
<toc-element id="goland.md" toc-title="GoLand">
|
||||
<toc-element id="goland_extension_point_list.md"/>
|
||||
<toc-element topic="goland.md" toc-title="GoLand">
|
||||
<toc-element topic="goland_extension_point_list.md"/>
|
||||
</toc-element>
|
||||
<toc-element id="idea.md" toc-title="IntelliJ IDEA">
|
||||
<toc-element id="tomcat_integration.md"/>
|
||||
<toc-element id="spring_api.md">
|
||||
<toc-element id="spring_extension_point_list.md"/>
|
||||
<toc-element topic="idea.md" toc-title="IntelliJ IDEA">
|
||||
<toc-element topic="tomcat_integration.md"/>
|
||||
<toc-element topic="spring_api.md">
|
||||
<toc-element topic="spring_extension_point_list.md"/>
|
||||
</toc-element>
|
||||
</toc-element>
|
||||
<toc-element id="phpstorm.md"
|
||||
<toc-element topic="phpstorm.md"
|
||||
toc-title="PhpStorm">
|
||||
<toc-element id="php_open_api.md" accepts-web-file-names="php_open_api.html"
|
||||
<toc-element topic="php_open_api.md" accepts-web-file-names="php_open_api.html"
|
||||
toc-title="Working with the PHP Open API">
|
||||
<toc-element id="php_open_api_php_type_providers.md"/>
|
||||
<toc-element id="php_open_api_breaking_changes.md" toc-title="Breaking Changes">
|
||||
<toc-element id="php_open_api_breaking_changes_203.md" toc-title="2020.3"/>
|
||||
<toc-element id="php_open_api_breaking_changes_202.md" toc-title="2020.2"/>
|
||||
<toc-element topic="php_open_api_php_type_providers.md"/>
|
||||
<toc-element topic="php_open_api_breaking_changes.md" toc-title="Breaking Changes">
|
||||
<toc-element topic="php_open_api_breaking_changes_203.md" toc-title="2020.3"/>
|
||||
<toc-element topic="php_open_api_breaking_changes_202.md" toc-title="2020.2"/>
|
||||
</toc-element>
|
||||
</toc-element>
|
||||
<toc-element id="php_extension_point_list.md"/>
|
||||
<toc-element id="existing_plugins.md" accepts-web-file-names="existing_plugins.html"
|
||||
<toc-element topic="php_extension_point_list.md"/>
|
||||
<toc-element topic="existing_plugins.md" accepts-web-file-names="existing_plugins.html"
|
||||
toc-title="Existing Third Party Plugins"/>
|
||||
</toc-element>
|
||||
<toc-element id="pycharm.md" toc-title="PyCharm"/>
|
||||
<toc-element id="rider.md" toc-title="Rider">
|
||||
<toc-element id="rider_extension_point_list.md"/>
|
||||
<toc-element topic="pycharm.md" toc-title="PyCharm"/>
|
||||
<toc-element topic="rider.md" toc-title="Rider">
|
||||
<toc-element topic="rider_extension_point_list.md"/>
|
||||
</toc-element>
|
||||
<toc-element id="rubymine.md" toc-title="RubyMine">
|
||||
<toc-element id="rubymine_extension_point_list.md"/>
|
||||
<toc-element topic="rubymine.md" toc-title="RubyMine">
|
||||
<toc-element topic="rubymine_extension_point_list.md"/>
|
||||
</toc-element>
|
||||
<toc-element id="webstorm.md" toc-title="WebStorm">
|
||||
<toc-element id="webstorm_extension_point_list.md"/>
|
||||
<toc-element topic="webstorm.md" toc-title="WebStorm">
|
||||
<toc-element topic="webstorm_extension_point_list.md"/>
|
||||
</toc-element>
|
||||
</toc-element>
|
||||
<toc-element toc-title="Part IX — Custom IDEs">
|
||||
@ -337,69 +337,71 @@
|
||||
<toc-element toc-title="Licensing"/>
|
||||
</toc-element>
|
||||
<toc-element toc-title="Part X — Themes">
|
||||
<toc-element id="themes_getting_started.md" accepts-web-file-names="themes-intro.html"/>
|
||||
<toc-element id="developing_themes.md" accepts-web-file-names="using-dev-kit.html">
|
||||
<toc-element id="setting_up_theme_environment.md" accepts-web-file-names="setting-up-environment.html"/>
|
||||
<toc-element id="creating_theme_project.md" accepts-web-file-names="creating_an_action.html"/>
|
||||
<toc-element id="running_and_debugging_a_theme.md" accepts-web-file-names="running-and-debugging-a-plugin.html"/>
|
||||
<toc-element id="deploying_theme.md" accepts-web-file-names="deploying-plugin.html"/>
|
||||
<toc-element topic="themes_getting_started.md" accepts-web-file-names="themes-intro.html"/>
|
||||
<toc-element topic="developing_themes.md" accepts-web-file-names="using-dev-kit.html">
|
||||
<toc-element topic="setting_up_theme_environment.md" accepts-web-file-names="setting-up-environment.html"/>
|
||||
<toc-element topic="creating_theme_project.md" accepts-web-file-names="creating_an_action.html"/>
|
||||
<toc-element topic="running_and_debugging_a_theme.md"
|
||||
accepts-web-file-names="running-and-debugging-a-plugin.html"/>
|
||||
<toc-element topic="deploying_theme.md" accepts-web-file-names="deploying-plugin.html"/>
|
||||
</toc-element>
|
||||
<toc-element id="theme_structure.md" accepts-web-file-names="themes.html">
|
||||
<toc-element id="themes_customize.md" toc-title="Customizing a Theme"/>
|
||||
<toc-element id="themes_extras.md" toc-title="Adding Schemes and Images"/>
|
||||
<toc-element topic="theme_structure.md" accepts-web-file-names="themes.html">
|
||||
<toc-element topic="themes_customize.md" toc-title="Customizing a Theme"/>
|
||||
<toc-element topic="themes_extras.md" toc-title="Adding Schemes and Images"/>
|
||||
</toc-element>
|
||||
</toc-element>
|
||||
<toc-element toc-title="Appendix I — Resources">
|
||||
<toc-element id="glossary.md"/>
|
||||
<toc-element id="explore_api.md" toc-title="Explore the API"/>
|
||||
<toc-element id="build_number_ranges.md"/>
|
||||
<toc-element id="extension_point_list.md"/>
|
||||
<toc-element id="useful_links.md" accepts-web-file-names="resources.html"/>
|
||||
<toc-element id="learning_resources.md"/>
|
||||
<toc-element id="marketing.md"/>
|
||||
<toc-element id="consulting.md"/>
|
||||
<toc-element id="custom_plugin_repository.md" accepts-web-file-names="update-plugins-format.html"/>
|
||||
<toc-element id="plugin_repository_obsolete.md"
|
||||
<toc-element topic="glossary.md"/>
|
||||
<toc-element topic="explore_api.md" toc-title="Explore the API"/>
|
||||
<toc-element topic="build_number_ranges.md"/>
|
||||
<toc-element topic="extension_point_list.md"/>
|
||||
<toc-element topic="useful_links.md" accepts-web-file-names="resources.html"/>
|
||||
<toc-element topic="learning_resources.md"/>
|
||||
<toc-element topic="marketing.md"/>
|
||||
<toc-element topic="consulting.md"/>
|
||||
<toc-element topic="custom_plugin_repository.md" accepts-web-file-names="update-plugins-format.html"/>
|
||||
<toc-element topic="plugin_repository_obsolete.md"
|
||||
accepts-web-file-names="api_reference.html,feature_extractor.html,plugin_details.html,custom_channels.html,plugins_list.html,maven_interface.html,plugin_upload.html,plugin_developers.html"/>
|
||||
</toc-element>
|
||||
<toc-element toc-title="Appendix II — API and Compatibility">
|
||||
<toc-element id="verifying_plugin_compatibility.md"/>
|
||||
<toc-element id="api_changes_list.md" toc-title="Incompatible API Changes"
|
||||
<toc-element topic="verifying_plugin_compatibility.md"/>
|
||||
<toc-element topic="api_changes_list.md" toc-title="Incompatible API Changes"
|
||||
accepts-web-file-names="api-changes-list-2016.html,api-changes-list-2017.html,api-changes-list-2018.html">
|
||||
<toc-element id="api_changes_list_2023.md" toc-title="2023.*"/>
|
||||
<toc-element id="api_changes_list_2022.md" toc-title="2022.*"/>
|
||||
<toc-element id="api_changes_list_2021.md" toc-title="2021.*"/>
|
||||
<toc-element id="api_changes_list_2020.md" toc-title="2020.*"/>
|
||||
<toc-element id="api_changes_list_2019.md" toc-title="2019.*"/>
|
||||
<toc-element topic="api_changes_list_2023.md" toc-title="2023.*"/>
|
||||
<toc-element topic="api_changes_list_2022.md" toc-title="2022.*"/>
|
||||
<toc-element topic="api_changes_list_2021.md" toc-title="2021.*"/>
|
||||
<toc-element topic="api_changes_list_2020.md" toc-title="2020.*"/>
|
||||
<toc-element topic="api_changes_list_2019.md" toc-title="2019.*"/>
|
||||
</toc-element>
|
||||
<toc-element id="api_notable.md" toc-title="Notable API Changes"
|
||||
<toc-element topic="api_notable.md" toc-title="Notable API Changes"
|
||||
accepts-web-file-names="api-notable-list-2018.html">
|
||||
<toc-element id="api_notable_list_2023.md" toc-title="2023.*"/>
|
||||
<toc-element id="api_notable_list_2022.md" toc-title="2022.*"/>
|
||||
<toc-element id="api_notable_list_2021.md" toc-title="2021.*"/>
|
||||
<toc-element id="api_notable_list_2020.md" toc-title="2020.*"/>
|
||||
<toc-element id="api_notable_list_2019.md" toc-title="2019.*"/>
|
||||
<toc-element topic="api_notable_list_2023.md" toc-title="2023.*"/>
|
||||
<toc-element topic="api_notable_list_2022.md" toc-title="2022.*"/>
|
||||
<toc-element topic="api_notable_list_2021.md" toc-title="2021.*"/>
|
||||
<toc-element topic="api_notable_list_2020.md" toc-title="2020.*"/>
|
||||
<toc-element topic="api_notable_list_2019.md" toc-title="2019.*"/>
|
||||
</toc-element>
|
||||
<toc-element id="api_internal.md"/>
|
||||
<toc-element topic="api_internal.md"/>
|
||||
</toc-element>
|
||||
<toc-element toc-title="Appendix III — Tooling">
|
||||
<toc-element id="tools_gradle_intellij_plugin.md">
|
||||
<toc-element toc-title="Usage Examples" id="tools_gradle_intellij_plugin_examples.md"/>
|
||||
<toc-element toc-title="Build Features" id="tools_gradle_intellij_plugin_build_features.md"/>
|
||||
<toc-element toc-title="Frequently Asked Questions" id="tools_gradle_intellij_plugin_faq.md"/>
|
||||
<toc-element toc-title="Migration Guide from 0.x to 1.x" href="https://lp.jetbrains.com/gradle-intellij-plugin/"/>
|
||||
<toc-element topic="tools_gradle_intellij_plugin.md">
|
||||
<toc-element topic="tools_gradle_intellij_plugin_examples.md" toc-title="Usage Examples"/>
|
||||
<toc-element topic="tools_gradle_intellij_plugin_build_features.md" toc-title="Build Features"/>
|
||||
<toc-element topic="tools_gradle_intellij_plugin_faq.md" toc-title="Frequently Asked Questions"/>
|
||||
<toc-element toc-title="Migration Guide from 0.x to 1.x"
|
||||
target-for-accept-web-file-names="https://lp.jetbrains.com/gradle-intellij-plugin/"/>
|
||||
</toc-element>
|
||||
<toc-element id="tools_gradle_grammar_kit_plugin.md"/>
|
||||
<toc-element topic="tools_gradle_grammar_kit_plugin.md"/>
|
||||
<toc-element toc-title="IDE Tooling">
|
||||
<toc-element id="internal_actions_intro.md" accepts-web-file-names="interal_actions_menu.html">
|
||||
<toc-element id="enabling_internal.md"/>
|
||||
<toc-element id="internal_ui_sub.md" toc-title="UI Tools">
|
||||
<toc-element id="internal_ui_inspector.md" accepts-web-file-names="internal_uii.html"
|
||||
<toc-element topic="internal_actions_intro.md" accepts-web-file-names="interal_actions_menu.html">
|
||||
<toc-element topic="enabling_internal.md"/>
|
||||
<toc-element topic="internal_ui_sub.md" toc-title="UI Tools">
|
||||
<toc-element topic="internal_ui_inspector.md" accepts-web-file-names="internal_uii.html"
|
||||
toc-title="UI Inspector"/>
|
||||
<toc-element id="internal_ui_laf_defaults.md" accepts-web-file-names="internal_ui_lafd.html"
|
||||
<toc-element topic="internal_ui_laf_defaults.md" accepts-web-file-names="internal_ui_lafd.html"
|
||||
toc-title="LaF Defaults"/>
|
||||
</toc-element>
|
||||
</toc-element>
|
||||
</toc-element>
|
||||
</toc-element>
|
||||
</product-profile>
|
||||
</instance-profile>
|
||||
|
Before Width: | Height: | Size: 14 MiB After Width: | Height: | Size: 14 MiB |
Binary file not shown.
Before Width: | Height: | Size: 68 KiB |
@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE ihp
|
||||
SYSTEM "https://resources.jetbrains.com/stardust/ihp.dtd">
|
||||
SYSTEM "https://helpserver.labs.jb.gg/help/schemas/mvp/ihp.dtd">
|
||||
<ihp version="2.0">
|
||||
<settings>
|
||||
<id-generator-method>LOWER_CASE_DASHES_DOT_REMOVE</id-generator-method>
|
||||
@ -12,5 +12,5 @@
|
||||
<images dir="images" web-path="/img/idea-sdk/"/>
|
||||
<vars src="v.list" />
|
||||
<snippets src="code_samples"/>
|
||||
<product src="ijs.tree" keymaps-mode="none" id="intellij" web-path="/intellij/"/>
|
||||
<instance src="ijs.tree" keymaps-mode="none" id="intellij" web-path="/intellij/"/>
|
||||
</ihp>
|
||||
|
@ -62,7 +62,7 @@ NOTE: You are allowed to prettify the pattern using links: [`org.example.Foo`](h
|
||||
NOTE: Entries not starting with code quotes (`name`) can be added to document non-code changes and will be skipped in API verification.
|
||||
-->
|
||||
|
||||
<excerpt>List of known Breaking API Changes by version</excerpt>
|
||||
<link-summary>List of known Breaking API Changes by version</link-summary>
|
||||
|
||||
IntelliJ API may be occasionally changed between releases, leading to existing plugins' incompatibilities with newer IDE builds.
|
||||
|
||||
@ -73,7 +73,6 @@ Please see [](verifying_plugin_compatibility.md) on how to use Plugin Verifier a
|
||||
> [Subscribe to Marketplace Developer News](https://jb.gg/mp-updates) to receive news and announcements.
|
||||
> Also follow [JBPlatform](https://twitter.com/JBPlatform/) on Twitter and visit [JetBrains Platform Blog](https://blog.jetbrains.com/platform/).
|
||||
>
|
||||
{type="tip"}
|
||||
|
||||
The following pages list the breaking changes in IDE and plugin releases with required/recommended steps to take by plugin authors.
|
||||
|
||||
|
@ -65,7 +65,7 @@ Please see [](verifying_plugin_compatibility.md) on how to use Plugin Verifier a
|
||||
>
|
||||
> For API annotated with `ApiStatus.@Internal`, see [](api_internal.md) for more details and replacements.
|
||||
>
|
||||
{type="note"}
|
||||
{style="note"}
|
||||
|
||||
## 2019.3
|
||||
|
||||
|
@ -66,7 +66,7 @@ Please see [](verifying_plugin_compatibility.md) on how to use Plugin Verifier a
|
||||
>
|
||||
> For API annotated with `ApiStatus.@Internal`, see [](api_internal.md) for more details and replacements.
|
||||
>
|
||||
{type="note"}
|
||||
{style="note"}
|
||||
|
||||
## 2020.3
|
||||
|
||||
@ -74,7 +74,7 @@ Please see [](verifying_plugin_compatibility.md) on how to use Plugin Verifier a
|
||||
>
|
||||
> Please make sure to always upgrade [](tools_gradle_intellij_plugin.md) to the latest version [{type="joined"}](https://github.com/jetbrains/gradle-intellij-plugin/releases)
|
||||
>
|
||||
{type="note"}
|
||||
{style="note"}
|
||||
|
||||
### IntelliJ Platform 2020.3
|
||||
|
||||
|
@ -66,13 +66,13 @@ Please see [](verifying_plugin_compatibility.md) on how to use Plugin Verifier a
|
||||
>
|
||||
> For API annotated with `ApiStatus.@Internal`, see [](api_internal.md) for more details and replacements.
|
||||
>
|
||||
{type="note"}
|
||||
{style="note"}
|
||||
|
||||
> Java 11 is required ([blog post](https://blog.jetbrains.com/platform/2020/09/intellij-project-migrates-to-java-11/)) when targeting 2020.3 and later only.
|
||||
>
|
||||
> Please make sure to always upgrade `gradle-intellij-plugin` to the latest version [{type="joined"}](https://github.com/jetbrains/gradle-intellij-plugin/releases)
|
||||
>
|
||||
{type="note"}
|
||||
{style="note"}
|
||||
|
||||
_Early Access Program_ (EAP) releases of upcoming versions are available [here](https://eap.jetbrains.com).
|
||||
|
||||
|
@ -66,7 +66,7 @@ Please see [](verifying_plugin_compatibility.md) on how to use Plugin Verifier a
|
||||
>
|
||||
> For API annotated with `ApiStatus.@Internal`/`@IntellijInternalApi`, see [](api_internal.md) for more details and replacements.
|
||||
>
|
||||
{type="note"}
|
||||
{style="note"}
|
||||
|
||||
> Java 17 is required ([blog post](https://blog.jetbrains.com/platform/2022/08/intellij-project-migrates-to-java-17/) when targeting 2022.2 or later only.
|
||||
>
|
||||
@ -74,13 +74,13 @@ Please see [](verifying_plugin_compatibility.md) on how to use Plugin Verifier a
|
||||
>
|
||||
> Please make sure to always upgrade `gradle-intellij-plugin` to the latest version [{type="joined"}](https://github.com/jetbrains/gradle-intellij-plugin/releases)
|
||||
>
|
||||
{type="note"}
|
||||
{style="note"}
|
||||
|
||||
_Early Access Program_ (EAP) releases of upcoming versions are available [here](https://eap.jetbrains.com).
|
||||
|
||||
## 2022.3
|
||||
|
||||
<include src="tools_gradle_intellij_plugin.md" include-id="gradle_plugin_223_problem"></include>
|
||||
<include from="tools_gradle_intellij_plugin.md" element-id="gradle_plugin_223_problem"></include>
|
||||
|
||||
### IntelliJ Platform 2022.3
|
||||
|
||||
|
@ -66,7 +66,7 @@ Please see [](verifying_plugin_compatibility.md) on how to use Plugin Verifier a
|
||||
>
|
||||
> For API annotated with `ApiStatus.@Internal`/`@IntellijInternalApi`, see [](api_internal.md) for more details and replacements.
|
||||
>
|
||||
{type="note"}
|
||||
{style="note"}
|
||||
|
||||
> Java 17 is required ([blog post](https://blog.jetbrains.com/platform/2022/08/intellij-project-migrates-to-java-17/) when targeting 2022.2 or later only.
|
||||
>
|
||||
@ -74,11 +74,11 @@ Please see [](verifying_plugin_compatibility.md) on how to use Plugin Verifier a
|
||||
>
|
||||
> Please make sure to always upgrade `gradle-intellij-plugin` to the latest version [{type="joined"}](https://github.com/jetbrains/gradle-intellij-plugin/releases)
|
||||
>
|
||||
{type="note"}
|
||||
{style="note"}
|
||||
|
||||
_Early Access Program_ (EAP) releases of upcoming versions are available [here](https://eap.jetbrains.com).
|
||||
|
||||
<include src="tools_gradle_intellij_plugin.md" include-id="gradle_plugin_223_problem"></include>
|
||||
<include from="tools_gradle_intellij_plugin.md" element-id="gradle_plugin_223_problem"></include>
|
||||
|
||||
## 2023.1
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
|
||||
|
||||
<chunk id="releases_table">
|
||||
<snippet id="releases_table">
|
||||
|
||||
## 2022.*
|
||||
|
||||
@ -387,9 +387,9 @@
|
||||
[canary]: https://img.shields.io/badge/-canary-lightgrey?style=flat-square
|
||||
[preview]: https://img.shields.io/badge/-preview-darktgrey?style=flat-square
|
||||
|
||||
</chunk>
|
||||
</snippet>
|
||||
|
||||
<chunk id="releases_table_short">
|
||||
<snippet id="releases_table_short">
|
||||
|
||||
| Release Name | Channel | Release Date | Version | IntelliJ IDEA Version |
|
||||
|--------------|:-------:|--------------|---------|-----------------------|
|
||||
@ -406,5 +406,5 @@
|
||||
[canary]: https://img.shields.io/badge/-canary-lightgrey?style=flat-square
|
||||
[preview]: https://img.shields.io/badge/-preview-darktgrey?style=flat-square
|
||||
|
||||
</chunk>
|
||||
</snippet>
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
<!-- Copyright 2000-2022 JetBrains s.r.o. and other contributors. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. -->
|
||||
|
||||
<excerpt>Lists private API annotated with ApiStatus.Internal/IntellijInternalApi and corresponding replacement.</excerpt>
|
||||
<link-summary>Lists private API annotated with ApiStatus.Internal/IntellijInternalApi and corresponding replacement.</link-summary>
|
||||
|
||||
This page lists commonly used API annotated with [`org.jetbrains.annotations.ApiStatus.Internal`](https://github.com/JetBrains/java-annotations/blob/master/common/src/main/java/org/jetbrains/annotations/ApiStatus.java)
|
||||
or [`IntellijInternalApi`](%gh-ic%/platform/util/src/com/intellij/openapi/util/IntellijInternalApi.kt)
|
||||
@ -24,7 +24,6 @@ Each entry is mapped to its corresponding _Replacement_, pointing to recommended
|
||||
>
|
||||
> Please use the feedback form at the bottom of this page if you encounter missing or unclear information.
|
||||
>
|
||||
{type="tip"}
|
||||
|
||||
## IntelliJ Platform
|
||||
|
||||
@ -81,4 +80,4 @@ Therefore, any reported violations can be disregarded.
|
||||
>
|
||||
> Please leave your email in case we need more details.
|
||||
>
|
||||
{type="note"}
|
||||
{style="note"}
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
<!-- Copyright 2000-2022 JetBrains s.r.o. and other contributors. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. -->
|
||||
|
||||
<excerpt>List of Notable API Changes by version</excerpt>
|
||||
<link-summary>List of Notable API Changes by version</link-summary>
|
||||
|
||||
The following pages list notable changes and new features in IDE releases.
|
||||
|
||||
@ -11,7 +11,6 @@ Plugin authors are encouraged to verify their compatible releases take advantage
|
||||
> [Subscribe to Marketplace Developer News](https://jb.gg/mp-updates) to receive news and announcements.
|
||||
> Also follow [JBPlatform](https://twitter.com/JBPlatform/) on Twitter and visit [JetBrains Platform Blog](https://blog.jetbrains.com/platform/).
|
||||
>
|
||||
{type="tip"}
|
||||
|
||||
* [Changes in 2023.*](api_notable_list_2023.md)
|
||||
* [Changes in 2022.*](api_notable_list_2022.md)
|
||||
|
@ -22,7 +22,7 @@ Symbol completion in plain text editor (VCS Commit Message)
|
||||
: Contribute symbol names (classes, methods, ..) via `com.intellij.completion.plainTextSymbol` extension point (`com.intellij.codeInsight.completion.PlainTextSymbolCompletionContributor`).
|
||||
|
||||
User-customizable date/time formatting
|
||||
: Use `com.intellij.util.text.JBDateFormat#getFormatter()` to use configured format from <menupath>Settings/Preferences | Appearance & Behavior | System Settings | Date Formats</menupath>.
|
||||
: Use `com.intellij.util.text.JBDateFormat#getFormatter()` to use configured format from <ui-path>Settings/Preferences | Appearance & Behavior | System Settings | Date Formats</ui-path>.
|
||||
|
||||
### IntelliJ IDEA 2019.3
|
||||
|
||||
@ -40,11 +40,11 @@ Quickfixes for file-level notifications
|
||||
Create HTML representation of code
|
||||
: Use `com.intellij.openapi.editor.richcopy.HtmlSyntaxInfoUtil` to create Lexer-based highlighted code samples, e.g. for usage in documentation.
|
||||
|
||||
<menupath>View | Appearance | Details in Tree Views</menupath>
|
||||
<ui-path>View | Appearance | Details in Tree Views</ui-path>
|
||||
: Toggles showing additional details in UI (e.g. modification timestamp in Project View) see `UISettings.getShowInplaceComments()`.
|
||||
|
||||
New API for Editor Inlay Hints
|
||||
: Allows a variety of presentations (incl. custom painting), mouse event handling, and exposing settings in <menupath>Settings/Preferences | Editor | Inlay Hints</menupath>. See `com.intellij.codeInsight.hints.InlayHintsProvider`.
|
||||
: Allows a variety of presentations (incl. custom painting), mouse event handling, and exposing settings in <ui-path>Settings/Preferences | Editor | Inlay Hints</ui-path>. See `com.intellij.codeInsight.hints.InlayHintsProvider`.
|
||||
|
||||
`com.intellij.openapi.vfs.AsyncFileListener`
|
||||
: A non-blocking variant for `com.intellij.openapi.vfs.newvfs.BulkFileListener`.
|
||||
|
@ -6,7 +6,7 @@ _Early Access Program_ (EAP) releases of upcoming versions are available [here](
|
||||
|
||||
## 2022.3
|
||||
|
||||
<include src="tools_gradle_intellij_plugin.md" include-id="gradle_plugin_223_problem"></include>
|
||||
<include from="tools_gradle_intellij_plugin.md" element-id="gradle_plugin_223_problem"></include>
|
||||
|
||||
### IntelliJ Platform 2022.3
|
||||
|
||||
|
@ -6,7 +6,7 @@ _Early Access Program_ (EAP) releases of upcoming versions are available [here](
|
||||
|
||||
## 2023.1
|
||||
|
||||
<include src="tools_gradle_intellij_plugin.md" include-id="gradle_plugin_223_problem"></include>
|
||||
<include from="tools_gradle_intellij_plugin.md" element-id="gradle_plugin_223_problem"></include>
|
||||
|
||||
### IntelliJ Platform 2023.1
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
[//]: # (title: Glossary)
|
||||
|
||||
<!-- Copyright 2000-2022 JetBrains s.r.o. and other contributors. Use of this source code is governed by the Apache 2 -->
|
||||
<!-- Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. -->
|
||||
|
||||
See also [Oracle's Java Technology Glossary](https://www.oracle.com/java/technologies/glossary.html).
|
||||
|
||||
@ -111,4 +111,4 @@ Write Action _(WA)_
|
||||
>
|
||||
> Please leave your email in case we need more details.
|
||||
>
|
||||
{type="note"}
|
||||
{style="note"}
|
||||
|
@ -6,7 +6,7 @@ JetBrains provides an official plugin repository [JetBrains Marketplace](https:/
|
||||
|
||||
> These pages have moved to [JetBrains Marketplace Documentation](https://plugins.jetbrains.com/docs/marketplace). Please update your bookmarks.
|
||||
>
|
||||
{type="warning"}
|
||||
{style="warning"}
|
||||
|
||||
For your convenience, pages previously part of this documentation are linked below:
|
||||
|
||||
|
@ -3,7 +3,6 @@
|
||||
<!-- Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. -->
|
||||
|
||||
> [Toolbox Enterprise](https://www.jetbrains.com/toolbox-enterprise/) (currently in Early Access) comes with a local built-in IntelliJ plugin repository that allows you to choose specific plugins to be approved within your organization. It also lets you upload and distribute your own plugins inside your company, as well as any publicly available plugin from the internet.
|
||||
{type="tip"}
|
||||
|
||||
If you intend to use a plugin repository _other than_ the [JetBrains Marketplace](https://plugins.jetbrains.com), you will need to:
|
||||
|
||||
@ -21,7 +20,6 @@ If you intend to use a plugin repository _other than_ the [JetBrains Marketplace
|
||||
|
||||
> Gradle plugin [IntelliJ plugin uploader](https://github.com/brian-mcnamara/plugin_uploader) can be used to automate deployment.
|
||||
>
|
||||
{type="tip"}
|
||||
|
||||
To avoid collisions between private plugins and those hosted on JetBrains Marketplace, an organization can [reserve plugin IDs](https://plugins.jetbrains.com/docs/marketplace/reserved-plugin-ids.html).
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
<!-- Copyright 2000-2022 JetBrains s.r.o. and other contributors. Use of this source code is governed by the Apache 2 -->
|
||||
|
||||
<excerpt>Strategies and tools for exploring the API.</excerpt>
|
||||
<link-summary>Strategies and tools for exploring the API.</link-summary>
|
||||
|
||||
Sometimes it can be challenging to implement plugin features for the IntelliJ Platform,
|
||||
especially when you've hit a roadblock and you're unsure how to move forward.
|
||||
@ -33,7 +33,7 @@ Another way to discover EPs is by using autocompletion or navigating through EP
|
||||
When you open a new tag in your <path>[plugin.xml](plugin_configuration_file.md)</path> file (inside the [`<extensions>`](plugin_configuration_file.md#idea-plugin__extensions) block with `defaultExtensionNs="com.intellij"`),
|
||||
the IDE will automatically suggest possible EPs.
|
||||
|
||||
{width="706"}{animated="true"}{border-effect="rounded"}
|
||||
<img src="plugin_xml_completion_suggestion.gif" alt="Using Completion Suggestions" width="706" border-effect="rounded"/>
|
||||
|
||||
This is the first step in discovering new features that haven't been explicitly mentioned in the IntelliJ Platform Docs.
|
||||
Note that in the completion popup, you can call
|
||||
@ -142,10 +142,10 @@ This provides access to a suite of tools to help you develop, debug, and test In
|
||||
|
||||
One of its most helpful features is the [UI Inspector](internal_ui_inspector.md),
|
||||
which lets you investigate all parts of the UI of every IntelliJ-based IDE by simply clicking on them.
|
||||
Equally important is the <menupath>Tools | Internal Actions | UI Debugger</menupath> tool.
|
||||
Equally important is the <ui-path>Tools | Internal Actions | UI Debugger</ui-path> tool.
|
||||
It will display all actions that are run by the IDE when you interact with UI elements, for example, by clicking a button.
|
||||
|
||||
Finally, internal mode provides the <menupath>Tools | View PSI Structure…</menupath> and <menupath>Tools | View PSI Structure of Current File…</menupath> actions,
|
||||
Finally, internal mode provides the <ui-path>Tools | View PSI Structure…</ui-path> and <ui-path>Tools | View PSI Structure of Current File…</ui-path> actions,
|
||||
which allow you to analyze the [PSI tree](psi.md), please see [documentation](https://www.jetbrains.com/help/idea/psi-viewer.html).
|
||||
The [PsiViewer plugin](https://plugins.jetbrains.com/plugin/227-psiviewer) is a separate plugin with similar capabilities for inspecting PSI trees,
|
||||
and it comes with a dedicated tool window that displays information on the fly.
|
||||
|
@ -1,8 +1,10 @@
|
||||
[//]: # (title: Extension Point and Listener List)
|
||||
|
||||
<!-- Copyright 2000-2022 JetBrains s.r.o. and other contributors. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. -->
|
||||
<show-structure for="chapter" depth="2"/>
|
||||
|
||||
<excerpt>Overview of Extension Points and Listeners for IntelliJ Platform</excerpt>
|
||||
<!-- Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. -->
|
||||
|
||||
<link-summary>Overview of Extension Points and Listeners for IntelliJ Platform</link-summary>
|
||||
|
||||
1424 Extension Points and 211 Listeners for IntelliJ Platform %ijPlatform%
|
||||
|
||||
@ -14,15 +16,13 @@
|
||||
>
|
||||
> See also [](explore_api.md) for more information and strategies.
|
||||
>
|
||||
{type="tip"}
|
||||
|
||||
<chunk id="ep_list_legend">
|
||||
<snippet id="ep_list_legend">
|
||||
|
||||
> See [](plugin_extensions.md) on how to declare extensions in your plugin.
|
||||
>
|
||||
> See [](plugin_listeners.md) on how to register listeners.
|
||||
>
|
||||
{type="tip"}
|
||||
|
||||
## Legend
|
||||
|
||||
@ -53,7 +53,7 @@
|
||||
[project-level]: https://img.shields.io/badge/-Project--Level-blue?style=flat-square
|
||||
[non-dynamic]: https://img.shields.io/badge/-Non--Dynamic-orange?style=flat-square
|
||||
[deprecated]: https://img.shields.io/badge/-Deprecated-lightgrey?style=flat-square
|
||||
</chunk>
|
||||
</snippet>
|
||||
|
||||
## IntelliJ Platform
|
||||
|
||||
|
@ -2,12 +2,11 @@
|
||||
|
||||
<!-- Copyright 2000-2022 JetBrains s.r.o. and other contributors. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. -->
|
||||
|
||||
<excerpt>Links to articles and webinars about plugin development.</excerpt>
|
||||
<link-summary>Links to articles and webinars about plugin development.</link-summary>
|
||||
|
||||
> [Subscribe to Marketplace Developer News](https://jb.gg/mp-updates) to receive news and announcements.
|
||||
> Also follow [JBPlatform](https://twitter.com/JBPlatform/) on Twitter and visit [JetBrains Platform Blog](https://blog.jetbrains.com/platform/).
|
||||
>
|
||||
{type="tip"}
|
||||
|
||||
## Articles
|
||||
|
||||
@ -33,16 +32,16 @@ A tutorial blog post series for JavaScript developers.
|
||||
## Webinars
|
||||
|
||||
| Webinar | Info |
|
||||
|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| **Busy Plugin Developers #5** <br/>Matthias Koch, 09/2022 <video href="y8adERbgt_M" title="Busy plugin developers series. Episode 5" width="300"/> | <br/><br/>Building Extensions for Rider and ReSharper |
|
||||
| **Busy Plugin Developers #4** <br/>Dmitry Kandalov/Yann Cebron, 04/2022 <video href="pgGg-IwUQYM" title="Busy plugin developers series. Episode 4" width="300"/> | <br/><br/>Adding IDE Features at runtime using LivePlugin |
|
||||
| **Busy Plugin Developers #3** <br/>Jakub Chrzanowski/Anna Maltceva/Yann Cebron, 11/2021 <video href="9J0j-90dC60" title="Busy plugin developers series. Episode 3" width="300"/> | <br/><br/><br/>Building Themes for IntelliJ-based IDEs<br/>Latest updates to JetBrains Marketplace |
|
||||
| **Busy Plugin Developers #2** <br/>Anna Maltceva/Łukasz Wawrzyk/Jakub Chrzanowski, 09/2021 <video href="oB1GA9JeeiY" title="Busy plugin developers series. Episode 2" width="300"/> | <br/><br/><br/>How to improve your Marketplace plugin page to attract more users<br/>ide-probe, a testing and benchmarking framework for IntelliJ-based IDEs |
|
||||
| **Busy Plugin Developers #1** <br/>Jakub Chrzanowski/Semyon Atamas/Paweł Lipski, 07/2021 <video href="vAlor5-hC0Q" title="Busy plugin developers series. Episode 1" width="300"/> | <br/><br/><br/>What is Gradle IntelliJ Plugin<br/>New features of Gradle IntelliJ Plugin<br/>How to start with Gradle IntelliJ Plugin<br/>Types of signing and how they work<br/>How JetBrains Marketplace signature works<br/>How to sign your plugin<br/>Tools and tips for testing UI of IntelliJ Plugins |
|
||||
| **Make IntelliJ IDEA Your Own** <br/>Sirisha Pratha, 05/2021 <video href="cAwH_DbFrfw?t=1120" title="Make IntelliJ IDEA Your Own" width="300"/> | <br/><br/>In this session, we'll explore the benefits provided by IntelliJ IDEA's customization options, and you will learn how to make the IDE your own. We will also look at the plugins available on the JetBrains Marketplace, discuss the process of developing them, and demo a few custom ones. |
|
||||
| **IntelliJ IDEA Conf 2021** <br/>Various Speakers, 02/2021 <video href="akrPpWAZzQk&list=PLPZy-hmwOdEUdLO-AKiJJ7LuZ3p16zJ4x" title="IntelliJ IDEA Conf 2021" width="300"/> | <br/><br/>Playlist includes a number of presentations related to plugin development |
|
||||
| **Busy Plugin Developers #0** <br/>Mikhail Vink/Jakub Chrzanowski/Yann Cebron, 12/2020 <video href="-6D5-xEaYig" title="Busy plugin developers series. Episode 0" width="300" /> | <br/><br/><br/>IntelliJ Platform Plugin Template<br/>Plugin DevKit Features<br/>IntelliJ Platform Explorer<br/>What's coming in 2021?<br/>Introduction to the Marketplace<br/>How to make your plugin successful?<br/>Sell on the Marketplace |
|
||||
| **How We Built Comma, the Raku IDE, on the IntelliJ Platform** <br/>Jonathan Worthington, 01/2020 <video href="zDP9uUMYrvs" title="How We Built Comma, the Raku IDE, on the IntelliJ Platform" width="300"/> | <br/><br/><br/>How to build custom language support<br/>How to go from a language support plugin to an IDE<br/>Lessons Learned<br/><br/>[Blog post](https://blog.jetbrains.com/platform/2020/01/webinar-recording-how-we-built-comma-the-raku-ide-on-the-intellij-platform/) |
|
||||
| **Building IntelliJ IDEA plugins in Scala** <br/>Igal Tabachnik, 2020 <video href="IPO-cY_giNA" title="Building IntelliJ IDEA plugins in Scala" width="300"/> | <br/><br/>In this talk, I will show how to create plugins for IDEA from scratch in Scala, and show why Scala's unique features make it a great fit for such tasks as inspecting and manipulating Abstract Syntax Trees (ASTs) to create your own custom suggestions and quick-fixes. |
|
||||
| **Live Development of a PyCharm Plugin** <br/>Joachim Ansorg, 2019 <video href="cR-28eaXGQI" title="Live Development of a PyCharm Plugin" width="300"/> | <br/><br/>Background and architecture of IntelliJ plugins<br/>Development using tests<br/>Implementing interesting extension points<br/>Viewing the plugin in the IDE (PyCharm)<br/><br/>[Blog post](https://blog.jetbrains.com/pycharm/2019/01/webinar-recording-live-development-of-a-pycharm-plugin-with-joachim-ansorg/) |
|
||||
| **Build Developer Tools On Top of IntelliJ Platform** <br/>Dmitry Jemerov, 2013 <video href="vQDzjGzkPFc" title="Build Developer Tools On Top of IntelliJ Platform" width="300"/> | <br/><br/>This webinar makes an overview on IntelliJ Platform and explains how you can use it for building your own products. |
|
||||
|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| **Busy Plugin Developers #5** <br/>Matthias Koch, 09/2022 <video src="https://www.youtube.com/watch?v=y8adERbgt_M" title="Busy plugin developers series. Episode 5" width="300"/> | <br/><br/>Building Extensions for Rider and ReSharper |
|
||||
| **Busy Plugin Developers #4** <br/>Dmitry Kandalov/Yann Cebron, 04/2022 <video src="https://www.youtube.com/watch?v=pgGg-IwUQYM" title="Busy plugin developers series. Episode 4" width="300"/> | <br/><br/>Adding IDE Features at runtime using LivePlugin |
|
||||
| **Busy Plugin Developers #3** <br/>Jakub Chrzanowski/Anna Maltceva/Yann Cebron, 11/2021 <video src="https://www.youtube.com/watch?v=9J0j-90dC60" title="Busy plugin developers series. Episode 3" width="300"/> | <br/><br/><br/>Building Themes for IntelliJ-based IDEs<br/>Latest updates to JetBrains Marketplace |
|
||||
| **Busy Plugin Developers #2** <br/>Anna Maltceva/Łukasz Wawrzyk/Jakub Chrzanowski, 09/2021 <video src="https://www.youtube.com/watch?v=oB1GA9JeeiY" title="Busy plugin developers series. Episode 2" width="300"/> | <br/><br/><br/>How to improve your Marketplace plugin page to attract more users<br/>ide-probe, a testing and benchmarking framework for IntelliJ-based IDEs |
|
||||
| **Busy Plugin Developers #1** <br/>Jakub Chrzanowski/Semyon Atamas/Paweł Lipski, 07/2021 <video src="https://www.youtube.com/watch?v=vAlor5-hC0Q" title="Busy plugin developers series. Episode 1" width="300"/> | <br/><br/><br/>What is Gradle IntelliJ Plugin<br/>New features of Gradle IntelliJ Plugin<br/>How to start with Gradle IntelliJ Plugin<br/>Types of signing and how they work<br/>How JetBrains Marketplace signature works<br/>How to sign your plugin<br/>Tools and tips for testing UI of IntelliJ Plugins |
|
||||
| **Make IntelliJ IDEA Your Own** <br/>Sirisha Pratha, 05/2021 <video src="https://www.youtube.com/watch?v=cAwH_DbFrfw?t=1120" title="Make IntelliJ IDEA Your Own" width="300"/> | <br/><br/>In this session, we'll explore the benefits provided by IntelliJ IDEA's customization options, and you will learn how to make the IDE your own. We will also look at the plugins available on the JetBrains Marketplace, discuss the process of developing them, and demo a few custom ones. |
|
||||
| **IntelliJ IDEA Conf 2021** <br/>Various Speakers, 02/2021 <video src="https://www.youtube.com/watch?v=akrPpWAZzQk&list=PLPZy-hmwOdEUdLO-AKiJJ7LuZ3p16zJ4x" title="IntelliJ IDEA Conf 2021" width="300"/> | <br/><br/>Playlist includes a number of presentations related to plugin development |
|
||||
| **Busy Plugin Developers #0** <br/>Mikhail Vink/Jakub Chrzanowski/Yann Cebron, 12/2020 <video src="https://www.youtube.com/watch?v=-6D5-xEaYig" title="Busy plugin developers series. Episode 0" width="300" /> | <br/><br/><br/>IntelliJ Platform Plugin Template<br/>Plugin DevKit Features<br/>IntelliJ Platform Explorer<br/>What's coming in 2021?<br/>Introduction to the Marketplace<br/>How to make your plugin successful?<br/>Sell on the Marketplace |
|
||||
| **How We Built Comma, the Raku IDE, on the IntelliJ Platform** <br/>Jonathan Worthington, 01/2020 <video src="https://www.youtube.com/watch?v=zDP9uUMYrvs" title="How We Built Comma, the Raku IDE, on the IntelliJ Platform" width="300"/> | <br/><br/><br/>How to build custom language support<br/>How to go from a language support plugin to an IDE<br/>Lessons Learned<br/><br/>[Blog post](https://blog.jetbrains.com/platform/2020/01/webinar-recording-how-we-built-comma-the-raku-ide-on-the-intellij-platform/) |
|
||||
| **Building IntelliJ IDEA plugins in Scala** <br/>Igal Tabachnik, 2020 <video src="https://www.youtube.com/watch?v=IPO-cY_giNA" title="Building IntelliJ IDEA plugins in Scala" width="300"/> | <br/><br/>In this talk, I will show how to create plugins for IDEA from scratch in Scala, and show why Scala's unique features make it a great fit for such tasks as inspecting and manipulating Abstract Syntax Trees (ASTs) to create your own custom suggestions and quick-fixes. |
|
||||
| **Live Development of a PyCharm Plugin** <br/>Joachim Ansorg, 2019 <video src="https://www.youtube.com/watch?v=cR-28eaXGQI" title="Live Development of a PyCharm Plugin" width="300"/> | <br/><br/>Background and architecture of IntelliJ plugins<br/>Development using tests<br/>Implementing interesting extension points<br/>Viewing the plugin in the IDE (PyCharm)<br/><br/>[Blog post](https://blog.jetbrains.com/pycharm/2019/01/webinar-recording-live-development-of-a-pycharm-plugin-with-joachim-ansorg/) |
|
||||
| **Build Developer Tools On Top of IntelliJ Platform** <br/>Dmitry Jemerov, 2013 <video src="https://www.youtube.com/watch?v=vQDzjGzkPFc" title="Build Developer Tools On Top of IntelliJ Platform" width="300"/> | <br/><br/>This webinar makes an overview on IntelliJ Platform and explains how you can use it for building your own products. |
|
||||
|
@ -6,9 +6,8 @@
|
||||
>
|
||||
> The _Busy Plugin Developers. Episode 2_ discusses [5 tips for optimizing JetBrains Marketplace plugin page](https://youtu.be/oB1GA9JeeiY?t=52) in more detail.
|
||||
>
|
||||
{type="tip"}
|
||||
|
||||
<excerpt>Widgets and badges for marketing material</excerpt>
|
||||
<link-summary>Widgets and badges for marketing material</link-summary>
|
||||
|
||||
## Embeddable Widgets
|
||||
|
||||
@ -33,21 +32,21 @@ Below are listed a few related to the IntelliJ SDK and plugins development provi
|
||||
>
|
||||
> `:packageName` for ReSharper accepts only string ID.
|
||||
>
|
||||
{type="note"}
|
||||
{style="note"}
|
||||
|
||||
### Downloads
|
||||
|
||||
**IntelliJ Plugins**
|
||||
|
||||

|
||||
```markdown
|
||||
```
|
||||

|
||||
```
|
||||
|
||||
**ReSharper Plugins**
|
||||
|
||||

|
||||
```markdown
|
||||
```
|
||||

|
||||
```
|
||||
|
||||
@ -56,30 +55,31 @@ Below are listed a few related to the IntelliJ SDK and plugins development provi
|
||||
**IntelliJ Plugin Numeric Rating**
|
||||
|
||||

|
||||
```markdown
|
||||
```
|
||||

|
||||
```
|
||||
|
||||
**IntelliJ Plugin Stars Rating**
|
||||
|
||||
{interpolate-variables="false"}
|
||||
```markdown
|
||||

|
||||
```
|
||||
[//]: # (FIXME: uncomment when Writerside issue is fixed)
|
||||
[//]: # (**IntelliJ Plugin Stars Rating**)
|
||||
[//]: # ()
|
||||
[//]: # ({interpolate-variables="false"})
|
||||
[//]: # (```)
|
||||
[//]: # ()
|
||||
[//]: # (```)
|
||||
|
||||
### Version
|
||||
|
||||
**IntelliJ Plugins**
|
||||
|
||||

|
||||
```markdown
|
||||
```
|
||||

|
||||
```
|
||||
|
||||
**ReSharper Plugins**
|
||||
|
||||

|
||||
```markdown
|
||||
```
|
||||

|
||||
```
|
||||
|
||||
@ -87,7 +87,7 @@ Below are listed a few related to the IntelliJ SDK and plugins development provi
|
||||
|
||||
|
||||

|
||||
```markdown
|
||||
```
|
||||

|
||||
```
|
||||
|
||||
@ -96,27 +96,27 @@ Below are listed a few related to the IntelliJ SDK and plugins development provi
|
||||
**GitHub Actions Workflow**
|
||||
|
||||

|
||||
```markdown
|
||||
```
|
||||

|
||||
```
|
||||
|
||||
**JetBrains IntelliJ Platform SDK Docs**
|
||||
|
||||
[](https://plugins.jetbrains.com/docs/intellij)
|
||||
```markdown
|
||||
```
|
||||
[](https://plugins.jetbrains.com/docs/intellij)
|
||||
```
|
||||
|
||||
**JetBrains Platform Slack**
|
||||
|
||||
[](https://plugins.jetbrains.com/slack)
|
||||
```markdown
|
||||
```
|
||||
[](https://plugins.jetbrains.com/slack)
|
||||
```
|
||||
|
||||
**@JBPlatform Twitter**
|
||||
|
||||
[](https://twitter.com/JBPlatform)
|
||||
```markdown
|
||||
```
|
||||
[](https://twitter.com/JBPlatform)
|
||||
```
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
<!-- Copyright 2000-2022 JetBrains s.r.o. and other contributors. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. -->
|
||||
|
||||
<excerpt>Useful tooling, plugins and repositories</excerpt>
|
||||
<link-summary>Useful tooling, plugins and repositories</link-summary>
|
||||
|
||||
The following links represent useful resources for working with the IntelliJ Platform and creating plugins.
|
||||
|
||||
|
@ -1,13 +1,13 @@
|
||||
[//]: # (title: Gradle IntelliJ Plugin)
|
||||
|
||||
<toc-settings depth="2" mode="tree" structure-elements="chapter"/>
|
||||
<show-structure for="chapter" depth="2"/>
|
||||
|
||||
<!-- Copyright 2000-2022 JetBrains s.r.o. and other contributors. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. -->
|
||||
|
||||
The Gradle IntelliJ Plugin is a plugin for the Gradle build system to help configuring your environment for building, testing, verifying, and publishing plugins for IntelliJ-based IDEs.
|
||||
|
||||
> Current Gradle IntelliJ Plugin version is [{type="joined"}](https://github.com/jetbrains/gradle-intellij-plugin/releases)
|
||||
{type="note"}
|
||||
{style="note"}
|
||||
|
||||
This plugin allows you to build plugins for IntelliJ Platform using specified IntelliJ SDK and bundled or third-party plugins.
|
||||
|
||||
@ -22,17 +22,16 @@ The plugin provides the functionalities like:
|
||||
> Before visiting the [Issue Tracker](https://github.com/JetBrains/gradle-intellij-plugin/issues), update both plugin and Gradle to the latest versions.
|
||||
> Please see [CONTRIBUTING](https://github.com/JetBrains/gradle-intellij-plugin/blob/master/CONTRIBUTING.md) on how to submit feedback and contribute to this project.
|
||||
>
|
||||
{type="tip"}
|
||||
|
||||
## Usage
|
||||
|
||||
<chunk id="gradle_plugin_223_problem">
|
||||
<snippet id="gradle_plugin_223_problem">
|
||||
|
||||
> When targeting 2022.3+ IDE releases, using [Gradle IntelliJ Plugin](tools_gradle_intellij_plugin.md) version 1.10.0 or higher is required.
|
||||
>
|
||||
{type="warning"}
|
||||
{style="warning"}
|
||||
|
||||
</chunk>
|
||||
</snippet>
|
||||
|
||||
To enable this plugin in your Gradle-based project, register the plugin in the Gradle build script's `plugins` section:
|
||||
|
||||
@ -62,8 +61,6 @@ When upgrading to `1.x` version, please make sure to follow the [migration guide
|
||||
> <control>Gradle JVM</control> must be set to Java 11 in <path>Settings/Preferences | Build, Execution, Deployment | Build Tools | Gradle</path>.
|
||||
>
|
||||
> If targeting 2022.3+, Java 17 is required instead.
|
||||
>
|
||||
{type="tip"}
|
||||
|
||||
> This project requires Gradle 6.8 or newer. However, it is highly recommended to always use the latest available Gradle version.
|
||||
> Update it with:
|
||||
@ -72,7 +69,6 @@ When upgrading to `1.x` version, please make sure to follow the [migration guide
|
||||
> ```
|
||||
>
|
||||
> See also: [Gradle Installation](https://gradle.org/install/) guide.
|
||||
{type="tip"}
|
||||
|
||||
### Snapshot Release
|
||||
The Snapshot release is a pre-release version built nightly from the latest main branch – as it is built every day using the same version number, it's not recommended to use it for production builds.
|
||||
@ -83,7 +79,7 @@ For switching to the snapshot release, point Gradle to the dedicated snapshot re
|
||||
>
|
||||
> To make sure you obtain the latest snapshot version, invoke Gradle using `--refresh-dependencies` option.
|
||||
>
|
||||
{type="note"}
|
||||
{style="note"}
|
||||
|
||||
<tabs group="languages">
|
||||
<tab title="Kotlin" group-key="kotlin">
|
||||
@ -145,7 +141,7 @@ gradle buildPlugin --configuration-cache
|
||||
|
||||
or with enabling it in the <path>gradle.properties</path> file:
|
||||
|
||||
```properties
|
||||
```
|
||||
org.gradle.unsafe.configuration-cache = true
|
||||
```
|
||||
|
||||
@ -214,7 +210,6 @@ Acceptable values
|
||||
> The _version number_ format is the most common option for specifying the version of the IntelliJ Platform.
|
||||
> Other formats should be used only when your plugin relies on specific parts of the targeted IDE or early-adopting EAP releases.
|
||||
>
|
||||
{type="tip"}
|
||||
|
||||
|
||||
#### type
|
||||
@ -280,7 +275,7 @@ Samples
|
||||
|
||||
> `intellij.version` and `intellij.localPath` must not be specified at the same time.
|
||||
>
|
||||
{type="warning"}
|
||||
{style="warning"}
|
||||
|
||||
|
||||
#### localSourcesPath
|
||||
@ -522,7 +517,6 @@ Note, that this is a [`runIde`](#tasks-runide)-based task with predefined argume
|
||||
> If your plugin doesn't implement custom settings, it is recommended to [disable it](tools_gradle_intellij_plugin_faq.md#how-to-disable-building-searchable-options).
|
||||
> See also [`noSearchableOptionsWarning`](tools_gradle_intellij_plugin_build_features.md#nosearchableoptionswarning) build feature.
|
||||
>
|
||||
{type="tip"}
|
||||
|
||||
|
||||
#### outputDir
|
||||
@ -652,7 +646,7 @@ Default value
|
||||
|
||||
> Available since the upcoming release
|
||||
>
|
||||
{type="warning"}
|
||||
{style="warning"}
|
||||
|
||||
Lists all IDs of plugins bundled within the currently targeted IDE.
|
||||
This can be used to determine Plugin ID for setting up [](plugin_dependencies.md).
|
||||
@ -825,7 +819,6 @@ Patches <path>[plugin.xml](plugin_configuration_file.md)</path> files with value
|
||||
|
||||
> To maintain and generate an up-to-date changelog, try using [Gradle Changelog Plugin](https://github.com/JetBrains/gradle-changelog-plugin).
|
||||
>
|
||||
{type="tip"}
|
||||
|
||||
|
||||
#### destinationDir
|
||||
@ -1143,7 +1136,7 @@ Accepted values
|
||||
|
||||
> For more information about JBR versions and variants, see [](ide_development_instance.md#using-a-jetbrains-runtime-for-the-development-instance).
|
||||
>
|
||||
{type="note"}
|
||||
{style="note"}
|
||||
|
||||
|
||||
#### jbrVariant
|
||||
@ -1265,11 +1258,9 @@ Plugin Verifier DSL `runPluginVerifier { ... }` allows to define the list of IDE
|
||||
|
||||
> For more details, examples or issues reporting, go to the [IntelliJ Plugin Verifier](https://github.com/JetBrains/intellij-plugin-verifier) repository.
|
||||
>
|
||||
{type="tip"}
|
||||
|
||||
> To run Plugin Verifier in [`-offline`](https://github.com/JetBrains/intellij-plugin-verifier/pull/58) mode, set the Gradle [`offline` start parameter](https://docs.gradle.org/current/javadoc/org/gradle/StartParameter.html#setOffline-boolean-).
|
||||
>
|
||||
{type="tip"}
|
||||
|
||||
|
||||
#### ideVersions
|
||||
@ -1419,7 +1410,7 @@ Acceptable values
|
||||
|
||||
> For more information about JBR versions and variants, see [](ide_development_instance.md#using-a-jetbrains-runtime-for-the-development-instance).
|
||||
>
|
||||
{type="note"}
|
||||
{style="note"}
|
||||
|
||||
|
||||
#### jbrVariant
|
||||
@ -1503,7 +1494,7 @@ This task is automatically added to the ["After Sync" Gradle trigger](https://ww
|
||||
> After removing the Gradle IntelliJ Plugin from your project, the `Task 'setupDependencies' not found in root project` exception may occur.
|
||||
> See [Frequently Asked Questions](tools_gradle_intellij_plugin_faq.md#task-setupdependencies-not-found-in-root-project) for more details.
|
||||
>
|
||||
{type="warning"}
|
||||
{style="warning"}
|
||||
|
||||
|
||||
#### idea
|
||||
|
@ -7,13 +7,13 @@ Build Features are an implementation of the feature flags concept and let you co
|
||||
|
||||
To enable or disable a particular feature, add a Project property to the <path>gradle.properties</path> file with the following pattern:
|
||||
|
||||
```properties
|
||||
```
|
||||
org.jetbrains.intellij.buildFeature.<buildFeatureName>=<true|false>
|
||||
```
|
||||
|
||||
E.g., to disable the [`selfUpdateCheck`](#selfupdatecheck) feature, add this line:
|
||||
|
||||
```properties
|
||||
```
|
||||
org.jetbrains.intellij.buildFeature.selfUpdateCheck=false
|
||||
```
|
||||
|
||||
@ -28,7 +28,7 @@ Default value
|
||||
|
||||
Example
|
||||
:
|
||||
```properties
|
||||
```
|
||||
org.jetbrains.intellij.buildFeature.buildSearchableOptions=false
|
||||
```
|
||||
|
||||
@ -45,7 +45,7 @@ Default value
|
||||
|
||||
Example
|
||||
:
|
||||
```properties
|
||||
```
|
||||
org.jetbrains.intellij.buildFeature.paidPluginSearchableOptionsWarning=false
|
||||
```
|
||||
|
||||
@ -68,6 +68,6 @@ Default value
|
||||
|
||||
Example
|
||||
:
|
||||
```properties
|
||||
```
|
||||
org.jetbrains.intellij.buildFeature.selfUpdateCheck=false
|
||||
```
|
||||
|
@ -6,7 +6,7 @@
|
||||
|
||||
### How to target 2022.3 platform
|
||||
|
||||
<include src="tools_gradle_intellij_plugin.md" include-id="gradle_plugin_223_problem"></include>
|
||||
<include from="tools_gradle_intellij_plugin.md" element-id="gradle_plugin_223_problem"></include>
|
||||
|
||||
### How to modify JVM arguments of runIde task
|
||||
|
||||
@ -118,7 +118,7 @@ buildSearchableOptions.enabled = false
|
||||
</tab>
|
||||
</tabs>
|
||||
|
||||
As a result of disabling building searchable options, the [Settings](settings.md) that your plugin provides won't be searchable in the <menupath>Settings/Preferences</menupath> dialog.
|
||||
As a result of disabling building searchable options, the [Settings](settings.md) that your plugin provides won't be searchable in the <ui-path>Settings/Preferences</ui-path> dialog.
|
||||
Disabling of the task is suggested for plugins that are not intended to provide custom settings.
|
||||
|
||||
### How to show log file of sandbox instance
|
||||
@ -169,7 +169,7 @@ Unfortunately, this entry remains even after disabling the `org.jetbrains.intell
|
||||
Task 'setupDependencies' not found in root project 'projectName'.
|
||||
```
|
||||
|
||||
To fix that, manually edit the <path>.idea/workspace.xml</path> file removing mentioned entry, go to the <control>Gradle</control> tool window, select the <menupath>Tasks Activation</menupath> action from the context menu of the root project item, and remove it.
|
||||
To fix that, manually edit the <path>.idea/workspace.xml</path> file removing mentioned entry, go to the <control>Gradle</control> tool window, select the <ui-path>Tasks Activation</ui-path> action from the context menu of the root project item, and remove it.
|
||||
|
||||
### How do I expose my plugin API sources to dependent plugins?
|
||||
|
||||
|
@ -7,16 +7,16 @@ There are useful tools, such as the <control>Internal Actions</control> menu, th
|
||||
<procedure title="Configuring Internal Mode">
|
||||
|
||||
1. Start IntelliJ IDEA.
|
||||
2. From the main menu, select <menupath>Help | Edit Custom Properties...</menupath>.
|
||||
2. From the main menu, select <ui-path>Help | Edit Custom Properties...</ui-path>.
|
||||
This selection opens IntelliJ IDEA's <path>idea.properties</path> file.
|
||||
If it does not exist, IntelliJ IDEA will prompt to create one.
|
||||
3. Add the line shown below to the <path>idea.properties</path> file:
|
||||
|
||||
```properties
|
||||
```
|
||||
idea.is.internal=true
|
||||
```
|
||||
4. Save the <path>idea.properties</path> file and restart IntelliJ IDEA.
|
||||
|
||||
5. The Internal Actions menu is now available in <menupath>Tools | Internal Actions</menupath>.
|
||||
5. The Internal Actions menu is now available in <ui-path>Tools | Internal Actions</ui-path>.
|
||||
|
||||
</procedure>
|
||||
|
@ -2,15 +2,14 @@
|
||||
|
||||
<!-- Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. -->
|
||||
|
||||
The <menupath>Tools | Internal Actions</menupath> menu provides plugin developers with a suite of tools to help develop, debug, and test their IntelliJ Platform plugins.
|
||||
The <ui-path>Tools | Internal Actions</ui-path> menu provides plugin developers with a suite of tools to help develop, debug, and test their IntelliJ Platform plugins.
|
||||
|
||||
<chunk id="enable_internal_mode_tip">
|
||||
<snippet id="enable_internal_mode_tip">
|
||||
|
||||
> If the menu item <menupath>Tools | Internal Actions</menupath> is not available in IntelliJ IDEA, then the first step is [Enabling Internal Mode](enabling_internal.md).
|
||||
> If the menu item <ui-path>Tools | Internal Actions</ui-path> is not available in IntelliJ IDEA, then the first step is [Enabling Internal Mode](enabling_internal.md).
|
||||
>
|
||||
{type="tip"}
|
||||
|
||||
</chunk>
|
||||
</snippet>
|
||||
|
||||
Click on the following topics to learn more about the _Internal Actions_ menu.
|
||||
* [Enabling Internal Mode](enabling_internal.md) provides instructions for enabling the Internal Actions menu in IntelliJ IDEA.
|
||||
|
@ -2,16 +2,16 @@
|
||||
|
||||
<!-- Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. -->
|
||||
|
||||
<excerpt>UI Inspector allows checking properties of a component selected in the frame of running IDE instance.</excerpt>
|
||||
<link-summary>UI Inspector allows checking properties of a component selected in the frame of running IDE instance.</link-summary>
|
||||
|
||||
The _UI Inspector_ is a tool to interrogate elements of the IntelliJ IDEA UI to get an internal description of each element.
|
||||
UI elements can be inspected interactively by clicking on the element while the _UI Inspector_ is enabled.
|
||||
|
||||
<include src="internal_actions_intro.md" include-id="enable_internal_mode_tip"></include>
|
||||
<include from="internal_actions_intro.md" element-id="enable_internal_mode_tip"></include>
|
||||
|
||||
## Enabling the UI Inspector
|
||||
|
||||
Before using the _UI Inspector_, it must be enabled by selecting the menu item <menupath>Tools | Internal Actions | UI | UI Inspector</menupath>.
|
||||
Before using the _UI Inspector_, it must be enabled by selecting the menu item <ui-path>Tools | Internal Actions | UI | UI Inspector</ui-path>.
|
||||
The enabled state of the _UI Inspector_ is modal; it remains enabled until it is disabled by selecting the _UI Inspector_ menu item again.
|
||||
|
||||
## Using the UI Inspector
|
||||
@ -31,6 +31,7 @@ The _UI Inspector_ displays the icon details:
|
||||
Sometimes, inspecting complex component's properties is not enough to understand how the component was created and configured.
|
||||
_UI Inspector_ gives the possibility of finding the code where the selected component was added, which makes it much easier to understand which APIs can be used to build custom components with similar complexity.
|
||||
To find the place were component was added, select the `added-at` property to show the stacktrace:
|
||||
|
||||

|
||||
|
||||
### Specific Component Properties
|
||||
|
@ -7,11 +7,11 @@ It also allows interactive prototyping of UI Control color changes.
|
||||
|
||||
_LaF_ stands for _Look and Feel_, see [Swing Tutorial](https://docs.oracle.com/javase/tutorial/uiswing/lookandfeel/index.html) for more details.
|
||||
|
||||
<include src="internal_actions_intro.md" include-id="enable_internal_mode_tip"></include>
|
||||
<include from="internal_actions_intro.md" element-id="enable_internal_mode_tip"></include>
|
||||
|
||||
## Opening LaF Defaults
|
||||
|
||||
The <control>LaF Defaults</control> window is opened by selecting the menu item <menupath>Tools | Internal Actions | UI | LaF Defaults</menupath>.
|
||||
The <control>LaF Defaults</control> window is opened by selecting the menu item <ui-path>Tools | Internal Actions | UI | LaF Defaults</ui-path>.
|
||||
|
||||
It has two columns representing key-value pairs for UI Controls:
|
||||
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
The Internal Actions UI submenu provides IntelliJ Platform plugin developers with a suite of tools to help develop, debug, and test their IntelliJ Platform project UI.
|
||||
|
||||
<include src="internal_actions_intro.md" include-id="enable_internal_mode_tip"></include>
|
||||
<include from="internal_actions_intro.md" element-id="enable_internal_mode_tip"></include>
|
||||
|
||||
## The Tools Available on the UI Submenu
|
||||
Here are some tools available on the UI submenu of the Internal Actions menu:
|
||||
|
@ -1,6 +1,6 @@
|
||||
[//]: # (title: Gradle Grammar-Kit Plugin)
|
||||
|
||||
<toc-settings depth="2" mode="tree" structure-elements="chapter"/>
|
||||
<show-structure for="chapter" depth="2"/>
|
||||
|
||||
<!-- Copyright 2000-2022 JetBrains s.r.o. and other contributors. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. -->
|
||||
|
||||
@ -8,11 +8,10 @@ The [Gradle Grammar-Kit Plugin](https://github.com/JetBrains/gradle-grammar-kit-
|
||||
|
||||
> Current Gradle Grammar-Kit Plugin version is 
|
||||
>
|
||||
{type="note"}
|
||||
{style="note"}
|
||||
|
||||
> The plugin does not support two-pass generation. Therefore, it does not support method mixins.
|
||||
>
|
||||
{type="tip"}
|
||||
|
||||
## Usage
|
||||
To enable this plugin in your Gradle-based project, register the plugin in the Gradle build script's `plugins` section:
|
||||
@ -46,13 +45,11 @@ plugins {
|
||||
>
|
||||
> See also: [Gradle Installation](https://gradle.org/install/) guide.
|
||||
>
|
||||
{type="tip"}
|
||||
|
||||
> Please see [CONTRIBUTING](https://github.com/JetBrains/gradle-grammar-kit-plugin/blob/master/CONTRIBUTING.md) on how to submit feedback and contribute to this project.
|
||||
>
|
||||
> Before visiting the [Issue Tracker](https://github.com/JetBrains/gradle-grammar-kit-plugin/issues), update both plugin and Gradle to the latest versions.
|
||||
>
|
||||
{type="tip"}
|
||||
|
||||
## Configuration
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
[//]: # (title: Verifying Plugin Compatibility)
|
||||
|
||||
<excerpt>Tooling for ensuring compatibility</excerpt>
|
||||
<link-summary>Tooling for ensuring compatibility</link-summary>
|
||||
|
||||
Please see [](api_changes_list.md) for known breaking changes.
|
||||
For API annotated with `ApiStatus.@Internal`, see [](api_internal.md) for more details and replacements.
|
||||
|
@ -15,4 +15,4 @@
|
||||
>
|
||||
> Please be specific about the topics and reasons for adding them, and leave your email in case we need more details.
|
||||
>
|
||||
{type="note"}
|
||||
{style="note"}
|
||||
|
@ -31,7 +31,7 @@ Thus, an unmodified `Document` instance can be garbage-collected if no one refer
|
||||
|
||||
> Storing `Document` references in long-term data structures of a plugin will cause memory leaks.
|
||||
>
|
||||
{type="warning"}
|
||||
{style="warning"}
|
||||
|
||||
## How do I create a Document?
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
<!-- Copyright 2000-2022 JetBrains s.r.o. and other contributors. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. -->
|
||||
|
||||
<excerpt rel="excerpt"/>
|
||||
<link-summary rel="excerpt"/>
|
||||
<p id="excerpt">
|
||||
Element patterns provide a generic way to specify conditions on objects.
|
||||
</p>
|
||||
|
@ -6,7 +6,6 @@
|
||||
|
||||
> [Thread Access Info](https://plugins.jetbrains.com/plugin/16815-thread-access-info) plugin visualizes Read/Write Access and Thread information in debugger.
|
||||
>
|
||||
{type="tip"}
|
||||
|
||||
In general, code-related data structures in the IntelliJ Platform are covered by a single reader/writer lock.
|
||||
|
||||
@ -82,10 +81,9 @@ The `checkCanceled()` should be called often enough to guarantee the process's s
|
||||
PSI internals have a lot of `checkCanceled()` calls inside.
|
||||
If a process does lengthy non-PSI activity, insert explicit `checkCanceled()` calls so that it happens frequently, e.g., on each _Nth_ loop iteration.
|
||||
|
||||
> Throwing `ProcessCanceledException` from `checkCanceled()` can be disabled for development (e.g. while debugging the code) with the <menupath>Tools | Internal Actions | Disable ProcessCanceledException</menupath> action.
|
||||
> Throwing `ProcessCanceledException` from `checkCanceled()` can be disabled for development (e.g. while debugging the code) with the <ui-path>Tools | Internal Actions | Disable ProcessCanceledException</ui-path> action.
|
||||
> The action is available only if [Internal Mode is enabled](enabling_internal.md).
|
||||
>
|
||||
{type="tip"}
|
||||
|
||||
## Read Action Cancellability
|
||||
|
||||
|
@ -10,4 +10,3 @@ The Program Structure Interface, commonly referred to as just PSI, is the layer
|
||||
|
||||
> See [useful tools](explore_api.md#31-use-internal-mode-and-psiviewer) on how to inspect the PSI structure and its properties.
|
||||
>
|
||||
{type="tip"}
|
||||
|
@ -61,7 +61,7 @@ Alternatively, register [`PsiTreeChangeListener`](%gh-ic%/platform/core-api/src/
|
||||
|
||||
> Please see [`PsiTreeChangeEvent`](%gh-ic%/platform/core-api/src/com/intellij/psi/PsiTreeChangeEvent.java) Javadoc for common problems when dealing with PSI events.
|
||||
>
|
||||
{type="note"}
|
||||
{style="note"}
|
||||
|
||||
## How do I extend PSI?
|
||||
|
||||
|
@ -6,7 +6,6 @@ See also [](general_threading_rules.md#avoiding-ui-freezes) and [](indexing_and_
|
||||
|
||||
> [IDE Perf](https://plugins.jetbrains.com/plugin/15104-ide-perf) plugin provides on-the-fly performance diagnostic tools, including a dedicated view for [`CachedValue`](#cache-results-of-heavy-computations) metrics.
|
||||
>
|
||||
{type="tip"}
|
||||
|
||||
## Avoid Expensive Methods of `PsiElement`
|
||||
|
||||
|
@ -36,7 +36,6 @@ If the code currently open in the IDE does not compile, or in other situations,
|
||||
|
||||
> Please see also [](psi_performance.md#cache-results-of-heavy-computations).
|
||||
>
|
||||
{type="tip"}
|
||||
|
||||
## Contributed References
|
||||
|
||||
|
@ -130,7 +130,7 @@ To convert `PsiElement` to the specific `UElement`, use one of the following app
|
||||
> * Because of performance: `toUElement()` with type is fail-fast
|
||||
> * Because of possibly getting different results in some cases: conversion with type is more predictable
|
||||
>
|
||||
{type="note"}
|
||||
{style="note"}
|
||||
|
||||
### UAST to PSI Conversion
|
||||
|
||||
@ -256,7 +256,7 @@ To register [extensions](plugin_extensions.md) applicable to UAST, specify `lang
|
||||
|
||||
### Inspecting UAST Tree
|
||||
|
||||
To inspect UAST Tree, invoke [internal action](enabling_internal.md) <menupath>Tools | Internal Actions | UAST | Dump UAST Tree (By Each PsiElement)</menupath>.
|
||||
To inspect UAST Tree, invoke [internal action](enabling_internal.md) <ui-path>Tools | Internal Actions | UAST | Dump UAST Tree (By Each PsiElement)</ui-path>.
|
||||
|
||||
### Inspections
|
||||
|
||||
|
@ -51,7 +51,7 @@ If one needs to create a file through VFS, use `VirtualFile.createChildData()` t
|
||||
|
||||
> See [Virtual file system events](virtual_file_system.md#virtual-file-system-events) for important details.
|
||||
>
|
||||
{type="note"}
|
||||
{style="note"}
|
||||
|
||||
Implement [`BulkFileListener`](%gh-ic%/platform/core-api/src/com/intellij/openapi/vfs/newvfs/BulkFileListener.java) and subscribe to the [message bus](messaging_infrastructure.md) topic `VirtualFileManager.VFS_CHANGES`.
|
||||
For example:
|
||||
|
@ -2,16 +2,16 @@
|
||||
|
||||
<!-- Copyright 2000-2022 JetBrains s.r.o. and other contributors. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. -->
|
||||
|
||||
<microformat>
|
||||
<tldr>
|
||||
|
||||
**Product Help:** [Menus and toolbars](https://www.jetbrains.com/help/idea/customize-actions-menus-and-toolbars.html)
|
||||
|
||||
**Platform UI Guidelines:** [Toolbar](https://jetbrains.design/intellij/controls/toolbar/)
|
||||
|
||||
</microformat>
|
||||
</tldr>
|
||||
|
||||
The actions system allows plugins to add their items to IntelliJ Platform-based IDE menus and toolbars.
|
||||
For example, one of the action classes is responsible for the <menupath>File | Open File...</menupath> menu item and the <control>Open...</control> toolbar button.
|
||||
For example, one of the action classes is responsible for the <ui-path>File | Open File...</ui-path> menu item and the <control>Open...</control> toolbar button.
|
||||
|
||||
Actions in the IntelliJ Platform require a [code implementation](#action-implementation) and must be [registered](#registering-actions).
|
||||
The action implementation determines the contexts in which an action is available, and its functionality when selected in the UI.
|
||||
@ -31,7 +31,7 @@ The IntelliJ Platform calls methods of actions when a user interacts with a menu
|
||||
> If the `AnAction` class uses a field to store data that has a shorter lifetime and doesn't clear this data promptly, the data leaks.
|
||||
> For example, any `AnAction` data that exists only within the context of a `Project` causes the `Project` to be kept in memory after the user has closed it.
|
||||
>
|
||||
{type="warning"}
|
||||
{style="warning"}
|
||||
|
||||
### Principal Implementation Overrides
|
||||
|
||||
@ -72,11 +72,10 @@ Implementors must ensure that changing presentation and availability status hand
|
||||
> It must _execute very quickly_; no real work must be performed.
|
||||
> For example, checking selection in a tree or a list is considered valid, but working with the file system is not.
|
||||
>
|
||||
{type="warning"}
|
||||
{style="warning"}
|
||||
|
||||
> If the new state of an action cannot be determined quickly, then evaluation should be performed in the `AnAction.actionPerformed()` method, and [notify](notifications.md) the user that the action cannot be executed if the context isn't suitable.
|
||||
>
|
||||
{type="tip"}
|
||||
|
||||
#### Determining the Action Context
|
||||
|
||||
@ -111,7 +110,7 @@ See [Grouping Actions](#grouping-actions) for more information about the `compac
|
||||
> If an action is added to a toolbar, its `update()` can be called if there was any user activity or focus transfer.
|
||||
> If the action's availability changes in the absence of these events, then call [`ActivityTracker.getInstance().inc()`](%gh-ic%/platform/platform-api/src/com/intellij/ide/ActivityTracker.java) to notify the action subsystem to update all toolbar actions.
|
||||
>
|
||||
{type="note"}
|
||||
{style="note"}
|
||||
|
||||
An example of enabling a menu action based on whether a project is open is demonstrated in [`PopupDialogAction.update()`](%gh-sdk-samples%/action_basics/src/main/java/org/intellij/sdk/action/PopupDialogAction.java) method.
|
||||
|
||||
@ -158,7 +157,7 @@ A group's `compact` attribute specifies whether an action within that group is v
|
||||
See [Registering Actions in plugin.xml](#registering-actions-in-pluginxml) for an explanation of how the `compact` attribute is set for a group.
|
||||
If the `compact` attribute is `true` for a menu group, an action in the menu only appears if its state is both enabled and visible.
|
||||
In contrast, if the `compact` attribute is `false`, an action in the menu appears if its state is disabled but visible.
|
||||
Some menus like <menupath>Tools</menupath> have the `compact` attribute set, so there isn't a way to show an action on the <menupath>Tools</menupath> menu if it is not enabled.
|
||||
Some menus like <ui-path>Tools</ui-path> have the `compact` attribute set, so there isn't a way to show an action on the <ui-path>Tools</ui-path> menu if it is not enabled.
|
||||
|
||||
| Host Menu<br/>`compact` Setting | Action Enabled | Visibility Enabled | Menu Item Visible? | Menu Item Appears Gray? |
|
||||
|:-------------------------------:|:--------------:|:------------------:|:------------------:|:-----------------------:|
|
||||
@ -186,11 +185,11 @@ Using the [`<override-text>`](plugin_configuration_file.md#idea-plugin__actions_
|
||||
This is also available for groups in 2020.3 and later.
|
||||
|
||||
In the `<action>` element reference example (below) with `id` attribute `VssIntegration.GarbageCollection`, the default is to use the menu text "Garbage Collector: Collect _Garbage."
|
||||
The `<add-to-group>` element declares the action is added to the <menupath>Tools</menupath> menu.
|
||||
The `<add-to-group>` element declares the action is added to the <ui-path>Tools</ui-path> menu.
|
||||
|
||||
However, the `<override-text>` element declares that text for `VssIntegration.GarbageCollection` displayed anywhere in the main menu system should be the alternate text "Collect _Garbage."
|
||||
The <menupath>Tools</menupath> menu is part of the main menu, so the displayed menu text is "Collect _Garbage."
|
||||
A different context, such as searching for the action using <menupath>Help | Find Action</menupath>, displays the default text "Garbage Collector: Collect _Garbage" to give the user additional information about the action.
|
||||
The <ui-path>Tools</ui-path> menu is part of the main menu, so the displayed menu text is "Collect _Garbage."
|
||||
A different context, such as searching for the action using <ui-path>Help | Find Action</ui-path>, displays the default text "Garbage Collector: Collect _Garbage" to give the user additional information about the action.
|
||||
|
||||
A second `<override-text>` element uses `place` and `use-text-of-place` attributes to declare the same version of the text used in the main menu is also used in the editor popup menu.
|
||||
Additional `<override-text>` elements could be used to specify other places where the main menu text should be used.
|
||||
@ -200,7 +199,7 @@ An example of using `<override-text>` is demonstrated in the [Creating Actions](
|
||||
#### Setting the Synonym Element
|
||||
|
||||
_2020.3_
|
||||
Users can locate actions via their name by invoking <menupath>Help | Find Action</menupath>.
|
||||
Users can locate actions via their name by invoking <ui-path>Help | Find Action</ui-path>.
|
||||
|
||||
To allow using alternative names in search, add one or more [`<synonym>`](plugin_configuration_file.md#idea-plugin__actions__action__synonym) elements inside [`<action>`](plugin_configuration_file.md#idea-plugin__actions__action) or [`<reference>`](plugin_configuration_file.md#idea-plugin__actions__reference):
|
||||
|
||||
@ -215,7 +214,7 @@ To provide a localized synonym, specify `key` instead of `text` attribute.
|
||||
#### Disabling Search for Group
|
||||
|
||||
_2020.3_
|
||||
To exclude a group from appearing in <menupath>Help | Find Action</menupath> results (e.g., <control>New...</control> popup), specify `searchable="false"`.
|
||||
To exclude a group from appearing in <ui-path>Help | Find Action</ui-path> results (e.g., <control>New...</control> popup), specify `searchable="false"`.
|
||||
|
||||
#### Localizing Actions and Groups
|
||||
|
||||
@ -282,11 +281,10 @@ This, and additional information can also be found by using the [Code Completion
|
||||
|
||||
> To lookup existing Action ID (e.g. for use in `relative-to-action`), [UI Inspector](internal_ui_inspector.md) can be used.
|
||||
>
|
||||
{type="tip"}
|
||||
|
||||
> See the [`<actions>`](plugin_configuration_file.md#idea-plugin__actions) element and its children documentation for details.
|
||||
>
|
||||
{type="note"}
|
||||
{style="note"}
|
||||
|
||||
```xml
|
||||
<actions>
|
||||
@ -422,4 +420,4 @@ Use [`BackAction`](%gh-ic%/platform/platform-api/src/com/intellij/ui/navigation/
|
||||
|
||||
For actions registered at runtime (e.g., in a tool window toolbar), add an [`<action>`](plugin_configuration_file.md#idea-plugin__actions__action) entry with
|
||||
[`EmptyAction`](%gh-ic%/platform/platform-api/src/com/intellij/openapi/actionSystem/EmptyAction.java)
|
||||
to "reserve" Action ID so they become visible in <menupath>Settings/Preferences | Keymap</menupath>.
|
||||
to "reserve" Action ID so they become visible in <ui-path>Settings/Preferences | Keymap</ui-path>.
|
||||
|
@ -2,11 +2,11 @@
|
||||
|
||||
<!-- Copyright 2000-2022 JetBrains s.r.o. and other contributors. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. -->
|
||||
|
||||
<microformat>
|
||||
<tldr>
|
||||
|
||||
**Product Help:** [Run/Debug Configuration](https://www.jetbrains.com/idea/help/run-debug-configuration.html)
|
||||
|
||||
</microformat>
|
||||
</tldr>
|
||||
|
||||
*Run Configurations* allow users to run specific external processes from within the IDE, e.g., a script, an application, a server, etc.
|
||||
You can provide the UI for the user to specify execution options, and an option to create a run configuration based on a specific location in the source code.
|
||||
|
@ -9,7 +9,7 @@ Being able to see API sources drastically improves the development experience, a
|
||||
|
||||
> Attaching bundled plugin sources in IDE is available starting with Gradle IntelliJ Plugin 1.7.0.
|
||||
>
|
||||
{type="note"}
|
||||
{style="note"}
|
||||
|
||||
## API sources location
|
||||
|
||||
|
@ -56,7 +56,7 @@ Use the following guidelines to choose the correct parent:
|
||||
>
|
||||
> Inspection <control>Plugin DevKit | Code | Incorrect parentDisposable parameter</control> will highlight such problems.
|
||||
>
|
||||
{type="warning"}
|
||||
{style="warning"}
|
||||
|
||||
The `Disposer` API's flexibility means that if the parent instance is chosen unwisely, the child may consume resources for longer than required.
|
||||
Continuing to use resources when they are no longer needed can be a severe source of contention due to leaving some zombie objects behind due to each invocation.
|
||||
@ -96,7 +96,7 @@ In such a case, the best strategy is usually to do nothing and return early.
|
||||
> Non-disposed objects shouldn't hold onto references to disposed objects, as this constitutes a memory leak.
|
||||
> Once a `Disposable` is released, it should be completely inactive, and there's no reason to refer to it anymore.
|
||||
>
|
||||
{type="warning"}
|
||||
{style="warning"}
|
||||
|
||||
### Ending a Disposable Lifecycle
|
||||
A plugin can manually end a `Disposable` lifecycle by calling `Disposer.dispose(Disposable)`.
|
||||
@ -137,7 +137,7 @@ Regardless, it illustrates the basic pattern, which is:
|
||||
> Never call `Disposable.dispose()` directly because it bypasses the parent-child relationships established in `Disposer`.
|
||||
> Always call `Disposer.dispose(Disposable)` instead.
|
||||
>
|
||||
{type="warning"}
|
||||
{style="warning"}
|
||||
|
||||
## Diagnosing Disposer Leaks
|
||||
|
||||
@ -176,7 +176,6 @@ The following snippet represents the sort of "memory leak detected" error encoun
|
||||
> The first part of the callstack is unrelated to diagnosing the memory leak.
|
||||
> Instead, pay attention to the second part of the call stack, after `Caused by: java.lang.Throwable`.
|
||||
>
|
||||
{type="tip"}
|
||||
|
||||
In this specific case, the IntelliJ Platform ([`CoreProgressManager`](%gh-ic%/platform/core-impl/src/com/intellij/openapi/progress/impl/CoreProgressManager.java)) started a task that contained the `DynamicWizard` code.
|
||||
In turn, that code allocated a `Project` that was never disposed by the time the application exited.
|
||||
|
@ -6,7 +6,6 @@ This FAQ is a topical index of questions that have been asked (and answered) on
|
||||
|
||||
> See also [Explore the IntelliJ Platform API](explore_api.md) for more information and strategies.
|
||||
>
|
||||
{type="tip"}
|
||||
|
||||
## Unresolved Classes after Upgrading to 2019.2 or later
|
||||
* [Java functionality extracted as a plugin](https://blog.jetbrains.com/platform/2019/06/java-functionality-extracted-as-a-plugin/)
|
||||
|
@ -16,7 +16,7 @@ Please note the following regarding values:
|
||||
> Plugins hosted on [JetBrains Marketplace](https://plugins.jetbrains.com) are checked automatically.
|
||||
> According to [Approval Guidelines](https://plugins.jetbrains.com/legal/approval-guidelines), incompatible plugin versions will be restricted by JetBrains if necessary.
|
||||
>
|
||||
{type="warning"}
|
||||
{style="warning"}
|
||||
|
||||
### Build Number Format
|
||||
|
||||
@ -38,7 +38,7 @@ Plugins may specify compatibility versions more precisely (e.g., requiring a spe
|
||||
Multipart build numbers can also be used in the `since-build` and `until-build` attributes of `idea-version`.
|
||||
Usually you should omit the product ID and use only the branch number and build number, for example:
|
||||
|
||||
<compare style="top-bottom" title-before="Any 213 branch version" title-after="Specific build number">
|
||||
<compare style="top-bottom" first-title="Any 213 branch version" second-title="Specific build number">
|
||||
|
||||
```xml
|
||||
<!-- 2021.3, 2021.3.1, 2021.3.2, ... -->
|
||||
@ -54,17 +54,16 @@ Usually you should omit the product ID and use only the branch number and build
|
||||
> Specific build numbers and their corresponding release version are available via _Previous Releases_ on the corresponding product's download page, e.g. [Previous IntelliJ IDEA Releases](https://www.jetbrains.com/idea/download/previous.html).
|
||||
> See also [What versions of IntelliJ-based IDEs are supported?](https://intellij-support.jetbrains.com/hc/en-us/articles/360019574859-What-versions-of-IntelliJ-based-IDEs-are-supported-) for JetBrains IDE support policy.
|
||||
>
|
||||
{type="note"}
|
||||
{style="note"}
|
||||
|
||||
### IntelliJ Platform Based Products of Recent IDE Versions
|
||||
|
||||
> Which versions should your plugin support? We've collected some insights based on download statistics in [Statistics: Product Versions in Use](https://plugins.jetbrains.com/docs/marketplace/product-versions-in-use-statistics.html).
|
||||
>
|
||||
{type="tip"}
|
||||
|
||||
Please see also corresponding entries in [Incompatible API Changes](api_changes_list.md) and [Notable API Changes](api_notable.md).
|
||||
|
||||
<include src="tools_gradle_intellij_plugin.md" include-id="gradle_plugin_223_problem"></include>
|
||||
<include from="tools_gradle_intellij_plugin.md" element-id="gradle_plugin_223_problem"></include>
|
||||
|
||||
| Branch number | IntelliJ Platform version |
|
||||
|-----------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------|
|
||||
|
@ -2,11 +2,10 @@
|
||||
|
||||
<!-- Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. -->
|
||||
|
||||
<excerpt>Develop an IntelliJ Platform plugin using Gradle and Gradle IntelliJ Plugin.</excerpt>
|
||||
<link-summary>Develop an IntelliJ Platform plugin using Gradle and Gradle IntelliJ Plugin.</link-summary>
|
||||
|
||||
> In some cases, implementing an actual IntelliJ Platform plugin might not be necessary, as [alternative solutions](plugin_alternatives.md) exist.
|
||||
>
|
||||
{type="tip"}
|
||||
|
||||
IntelliJ Platform plugins can be developed by using either [IntelliJ IDEA Community Edition](https://www.jetbrains.com/idea/download/) or [IntelliJ IDEA Ultimate](https://www.jetbrains.com/idea/download/) as your IDE (it is highly recommended to use the latest available version).
|
||||
Both include the complete set of plugin development tools.
|
||||
@ -32,11 +31,9 @@ See the [](plugin_github_template.md) section for more information about the adv
|
||||
> The old Plugin DevKit workflow still supports existing projects and is recommended for [creating theme plugins](developing_themes.md).
|
||||
See how to [migrate a DevKit plugin to Gradle-based](migrating_plugin_devkit_to_gradle.md).
|
||||
>
|
||||
{type="tip"}
|
||||
|
||||
> A dedicated [SBT plugin](https://github.com/JetBrains/sbt-idea-plugin) is available for plugins implemented in Scala.
|
||||
>
|
||||
{type="tip"}
|
||||
|
||||
## Plugin Development Workflow
|
||||
|
||||
|
@ -4,7 +4,6 @@
|
||||
|
||||
> See [Revamping Plugins #3 – Migrating from DevKit to the Gradle build system](https://blog.jetbrains.com/platform/2021/12/migrating-from-devkit-to-the-gradle-build-system/) blog post for a step-by-step walk-through.
|
||||
>
|
||||
{type="tip"}
|
||||
|
||||
Converting a plugin created with the old DevKit approach (which can be used for [creating themes](creating_theme_project.md)) to a Gradle-based plugin project can be done using the <control>New Project</control> wizard to create a Gradle-based project around the existing DevKit-based project:
|
||||
* Ensure the directory containing the DevKit-based IntelliJ Platform plugin project can be fully recovered if necessary.
|
||||
|
@ -10,7 +10,6 @@ Otherwise, it may not be possible to load or run the plugin in a product because
|
||||
|
||||
> Qualifying Open Source projects can [apply for free licenses](https://www.jetbrains.com/community/opensource/) of JetBrains products.
|
||||
>
|
||||
{type="tip"}
|
||||
|
||||
## Declaring Plugin Dependencies
|
||||
|
||||
@ -44,7 +43,7 @@ The following table lists modules that are currently available in all products.
|
||||
|
||||
> All plugins should declare a dependency on **`com.intellij.modules.platform`** to indicate dependence on shared functionality.
|
||||
>
|
||||
{type="note"}
|
||||
{style="note"}
|
||||
|
||||
| Module for [`<depends>`](plugin_configuration_file.md#idea-plugin__depends) Element | Functionality |
|
||||
|-------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------|
|
||||
@ -68,7 +67,6 @@ A plugin project is compatible with PHP functionality if it declares a dependenc
|
||||
|
||||
> A high-level feature comparison tool for JetBrains IDEs is available [here](https://www.jetbrains.com/products/compare/).
|
||||
>
|
||||
{type="tip"}
|
||||
|
||||
|
||||
The following table lists **(1)** modules or built-in plugins that provide specific functionality, and the products currently shipping with them.
|
||||
@ -252,7 +250,6 @@ If a project is dependent on a plugin or module, in some cases, the project can
|
||||
> See [Explore the IntelliJ Platform API](explore_api.md) for more information and strategies.
|
||||
> Dedicated Extension Point Lists specific to IDEs are available under _Part VIII — Product Specific_.
|
||||
>
|
||||
{type="tip"}
|
||||
|
||||
To browse the opportunities for an extension, start by placing the cursor on the contents of the [`<depends>`](plugin_configuration_file.md#idea-plugin__depends) elements in the project's <path>plugin.xml</path> file.
|
||||
Use the [Go to Declaration](https://www.jetbrains.com/help/idea/navigating-through-the-source-code.html#go_to_declaration) IDE feature to navigate to the <path>plugin.xml</path> file for the plugin on which the project depends.
|
||||
@ -266,7 +263,6 @@ Continuing the example, search the PHP plugin's <path>plugin.xml</path> file for
|
||||
|
||||
> If a dependency plugin [bundles its API sources](bundling_plugin_openapi_sources.md) in the distribution file, the Gradle IntelliJ Plugin (1.7.0+) will attach them to the plugin dependency in IDE, making sources available when navigating to the plugin API classes.
|
||||
>
|
||||
{type="tip"}
|
||||
|
||||
|
||||
## Verifying Dependency
|
||||
|
@ -14,7 +14,7 @@ See also [](marketing.md) about widgets and badges.
|
||||
> If your plugin ships with [additional libraries](plugin_content.md#plugin-with-dependencies), do not repackage them into the main plugin archive.
|
||||
> Otherwise, [Plugin Verifier](verifying_plugin_compatibility.md) will yield false positives for unresolved classes and methods.
|
||||
>
|
||||
{type="warning"}
|
||||
{style="warning"}
|
||||
|
||||
## Uploading a Plugin to JetBrains Marketplace
|
||||
|
||||
@ -66,7 +66,7 @@ A new token will be created and displayed right below.
|
||||
> Copy it before you close this page and keep it in a secure location.
|
||||
> This is the only time the token is visible.
|
||||
>
|
||||
{type="note"}
|
||||
{style="note"}
|
||||
|
||||
This section describes two options to supply your _Personal Access Token_ via Gradle using:
|
||||
* Environment variables,
|
||||
@ -83,7 +83,7 @@ export ORG_GRADLE_PROJECT_intellijPublishToken='YOUR_TOKEN'
|
||||
> On macOS systems, environment variables set in <path>.bash_profile</path> are only visible to processes you run from bash.
|
||||
> Environment variables visible to all processes need to be defined in [Environment.plist](https://developer.apple.com/library/archive/qa/qa1067/_index.html).
|
||||
>
|
||||
{type="note"}
|
||||
{style="note"}
|
||||
|
||||
Now provide the environment variable in the run configuration with which you run the [`publishPlugin`](tools_gradle_intellij_plugin.md#tasks-publishplugin) task locally.
|
||||
To do so, create a Gradle run configuration (if not already done), choose your Gradle project, specify the [`publishPlugin`](tools_gradle_intellij_plugin.md#tasks-publishplugin) task, and then add the environment variable.
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
<!-- Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. -->
|
||||
|
||||
<excerpt>Creating a theme plugin project with Plugin DevKit wizard and generated project overview.</excerpt>
|
||||
<link-summary>Creating a theme plugin project with Plugin DevKit wizard and generated project overview.</link-summary>
|
||||
|
||||
This documentation page describes a DevKit-based theme project generated with the [New Project Wizard](https://www.jetbrains.com/help/idea/new-project-wizard.html).
|
||||
|
||||
@ -12,7 +12,7 @@ Before creating a theme project, make sure that [development environment is set
|
||||
|
||||
<procedure title="Create Theme Plugin" id="create-theme">
|
||||
|
||||
Launch the <control>New Project</control> wizard via the <menupath>File | New | Project...</menupath> action and provide the following information:
|
||||
Launch the <control>New Project</control> wizard via the <ui-path>File | New | Project...</ui-path> action and provide the following information:
|
||||
1. Select the <control>IDE Plugin</control> generator type from the list on the left.
|
||||
2. Specify the project <control>Name</control> and <control>Location</control>.
|
||||
3. Choose the <control>Theme</control> option in the project <control>Type</control>.
|
||||
@ -56,7 +56,7 @@ The wizard can be used for both DevKit-based and Gradle-based plugins.
|
||||
<procedure title="Add Theme" id="add-theme">
|
||||
|
||||
1. In the <control>Project</control> tool window, select the <path>resources</path> directory and invoke the context menu with the right click.
|
||||
2. Select the <menupath>New | Plugin DevKit | Theme</menupath> action.<br/>
|
||||
2. Select the <ui-path>New | Plugin DevKit | Theme</ui-path> action.<br/>
|
||||
It is a good practice to include the name of the plugin in the created theme name.
|
||||
3. Check the <control>Dark theme</control> checkbox if the created theme should be based on IntelliJ IDEA _Darcula_ theme.
|
||||
Otherwise, the _Light_ theme will be used as the base.
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
<!-- Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. -->
|
||||
|
||||
<excerpt>Building and deploying a theme in IDE.</excerpt>
|
||||
<link-summary>Building and deploying a theme in IDE.</link-summary>
|
||||
|
||||
Before your custom theme plugin can be [uploaded to JetBrains Marketplace](publishing_plugin.md#uploading-a-plugin-to-jetbrains-marketplace) and used by users, it should be packaged and verified in the actual IDE.
|
||||
|
||||
@ -10,12 +10,12 @@ The deployment process prepares the plugin artifact that can be installed in IDE
|
||||
|
||||
<procedure title="Deploying Theme Plugin">
|
||||
|
||||
1. Build the theme by invoking <menupath>Build | Build Project</menupath> or <menupath>Build | Build Module $MODULE_NAME$</menupath>.
|
||||
2. Create the deployment artifact by invoking <menupath>Build | Prepare Plugin Module $MODULE_NAME$ for Deployment</menupath>.<br/>
|
||||
1. Build the theme by invoking <ui-path>Build | Build Project</ui-path> or <ui-path>Build | Build Module $MODULE_NAME$</ui-path>.
|
||||
2. Create the deployment artifact by invoking <ui-path>Build | Prepare Plugin Module $MODULE_NAME$ for Deployment</ui-path>.<br/>
|
||||
The resulting theme JAR file will be created in the project or module directory.<br/>
|
||||
In the case of developing a regular plugin, and it specifies additional dependencies, a ZIP archive is created, including all the plugin libraries.
|
||||
3. [Install](https://www.jetbrains.com/help/idea/managing-plugins.html#installing-plugins-from-disk) the newly created JAR or ZIP file from disk.
|
||||
4. Click the <control>Apply</control> button.
|
||||
5. Select your theme in <menupath>Preferences | Appearance & Behavior | Appearance</menupath> and apply the changes.
|
||||
5. Select your theme in <ui-path>Preferences | Appearance & Behavior | Appearance</ui-path> and apply the changes.
|
||||
|
||||
</procedure>
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
<!-- Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. -->
|
||||
|
||||
<excerpt>Develop an IntelliJ Platform-based IDE theme using Plugin DevKit.</excerpt>
|
||||
<link-summary>Develop an IntelliJ Platform-based IDE theme using Plugin DevKit.</link-summary>
|
||||
|
||||
This documentation section will help you get started with developing theme plugins for the IntelliJ Platform-based IDEs.
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
<!-- Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. -->
|
||||
|
||||
<excerpt>Running and debugging a theme in the actual IDE instance.</excerpt>
|
||||
<link-summary>Running and debugging a theme in the actual IDE instance.</link-summary>
|
||||
|
||||
In most cases, the results of theme plugin can be previewed by running the <control>Preview Theme</control> action in the [theme description file](themes_customize.md) editor.
|
||||
Sometimes, when more advanced styling options are implemented, the previewing theme may not be enough to see all the changes.
|
||||
@ -14,17 +14,15 @@ To run and debug a plugin directly from a theme plugin project, a _Plugin_ run c
|
||||
|
||||
> For more information about creating Run Configurations, refer to the [Run/Debug Configuration](https://www.jetbrains.com/help/idea/run-debug-configuration.html) section in IntelliJ IDEA Web Help.
|
||||
>
|
||||
{type="tip"}
|
||||
|
||||
<procedure title="Add Plugin Run Configuration">
|
||||
|
||||
1. Go to <menupath>Run | Edit Configurations...</menupath>.
|
||||
1. Go to <ui-path>Run | Edit Configurations...</ui-path>.
|
||||
2. Click the <control>Add New Configuration...</control> button (<control>+</control>) and select the <control>Plugin</control> type.
|
||||
3. Provide the configuration <control>Name</control>, e.g., _Run Theme_.
|
||||
4. Ensure that <control>Use classpath of module</control> specifies the current theme plugin module.
|
||||
5. Click the <control>Apply</control> button.
|
||||
|
||||
{type="tip"}
|
||||
|
||||
</procedure>
|
||||
|
||||
@ -33,5 +31,5 @@ If additional settings, like system property, are needed, see [Run/Debug Configu
|
||||
|
||||
## Run/Debug Theme Plugin
|
||||
|
||||
To run the theme in the IDE development instance, choose <menupath>Run | Run...</menupath> and select the created run configuration.
|
||||
To run the theme in the IDE development instance, choose <ui-path>Run | Run...</ui-path> and select the created run configuration.
|
||||
Debugging a theme is similar, but instead of <control>Run...</control>, select the <control>Debug...</control> action.
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
<!-- Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. -->
|
||||
|
||||
<excerpt>Setting up a development environment required for developing a theme.</excerpt>
|
||||
<link-summary>Setting up a development environment required for developing a theme.</link-summary>
|
||||
|
||||
<procedure title="Preliminary Steps">
|
||||
|
||||
@ -44,11 +44,11 @@ The first step of configuring a theme plugin SDK is adding the JDK.
|
||||
>
|
||||
> When targeting 2022.2 and later only, using Java 17 is required.
|
||||
>
|
||||
{type="note"}
|
||||
{style="note"}
|
||||
|
||||
<procedure title="Add JDK" id="add-jdk">
|
||||
|
||||
1. Go to <menupath>File | Project Structure | Platform Settings | SDKs</menupath>.
|
||||
1. Go to <ui-path>File | Project Structure | Platform Settings | SDKs</ui-path>.
|
||||
2. Click the <control>Add</control> button (<control>+</control>).
|
||||
3. If you have the required JDK installation on your machine, and it is detected, select it from the <control>Detected SDKs</control> list.
|
||||
If your JDK is not detected, select the <control>Add JDK...</control> option and choose the installation folder.<br/>
|
||||
@ -61,7 +61,7 @@ The second step is adding IntelliJ Platform Plugin SDK that will use the JDK con
|
||||
|
||||
<procedure title="Add IntelliJ Platform Plugin SDK" id="add-intellij-platform-plugin-sdk">
|
||||
|
||||
1. Go to <menupath>File | Project Structure | Platform Settings | SDKs</menupath>.
|
||||
1. Go to <ui-path>File | Project Structure | Platform Settings | SDKs</ui-path>.
|
||||
2. Click the <control>Add</control> button (<control>+</control>).
|
||||
3. Select the <control>Add IntelliJ Platform Plugin SDK...</control> option.
|
||||
4. Choose the installation folder of the IDE [downloaded previously](#download-intellij-based-ide) (on macOS, select application icon in <path>/Applications/</path>).
|
||||
|
@ -2,14 +2,14 @@
|
||||
|
||||
<!-- Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. -->
|
||||
|
||||
<excerpt>Overview of a theme plugin project structure and the most important elements.</excerpt>
|
||||
<link-summary>Overview of a theme plugin project structure and the most important elements.</link-summary>
|
||||
|
||||
Themes are components within [IntelliJ Platform plugins](plugin_structure.md).
|
||||
Themes are components within [IntelliJ Platform plugins](plugin_structure.topic).
|
||||
The theme plugins should be stand-alone and not combined with other plugin functionality.
|
||||
|
||||
> To see a full example theme project, see the [Theme Basics](%gh-sdk-samples%/theme_basics) in IntelliJ SDK Code Samples.
|
||||
>
|
||||
{type="note"}
|
||||
{style="note"}
|
||||
|
||||
Themes have several components:
|
||||
* A required Theme description (JSON) file in the plugin project's <path>resources</path> folder.
|
||||
@ -56,7 +56,7 @@ This declaration binds the theme description file to a theme provider extension
|
||||
|
||||
> Do not modify or re-use an existing value of the generated `id` attribute.
|
||||
>
|
||||
{type="warning"}
|
||||
{style="warning"}
|
||||
|
||||
## Theme Customization
|
||||
|
||||
|
@ -2,13 +2,13 @@
|
||||
|
||||
<!-- Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. -->
|
||||
|
||||
<microformat>
|
||||
<tldr>
|
||||
|
||||
**Platform UI Guidelines:** [Icons](https://jetbrains.design/intellij/principles/icons/), [Platform theme colors](https://jetbrains.design/intellij/principles/platform_theme_colors/#UI-components)
|
||||
|
||||
</microformat>
|
||||
</tldr>
|
||||
|
||||
<excerpt>Customizing UI controls and icons in a theme plugin.</excerpt>
|
||||
<link-summary>Customizing UI controls and icons in a theme plugin.</link-summary>
|
||||
|
||||
A theme is customized by adding information to the theme description file that overrides the base (_Light_ or _Darcula_) theme.
|
||||
|
||||
@ -16,7 +16,6 @@ For plugin developers, [Exposing Theme Metadata](themes_metadata.md) discusses t
|
||||
|
||||
> [Color Highlighter Plugin](https://plugins.jetbrains.com/plugin/13309-color-highlighter) adds additional color preview inside the editor.
|
||||
>
|
||||
{type="tip"}
|
||||
|
||||
## Introduction to Theme Description File Syntax
|
||||
|
||||
@ -145,7 +144,6 @@ The color of a replaced icon takes precedence over any `ColorPalette` overrides.
|
||||
|
||||
> For generating the SVG icons suited for the IntelliJ-based IDEs, you may also use the third-party web tool: [IntelliJ Icon Generator](https://bjansen.github.io/intellij-icon-generator/).
|
||||
>
|
||||
{type="tip"}
|
||||
|
||||
## Customizing UI Controls
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
<!-- Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. -->
|
||||
|
||||
<excerpt>Customizing editor schemes and editor or application background images in a theme plugin.</excerpt>
|
||||
<link-summary>Customizing editor schemes and editor or application background images in a theme plugin.</link-summary>
|
||||
|
||||
Themes can also provide custom color and font settings, as well as custom images for display in the IDE application window.
|
||||
|
||||
@ -85,7 +85,7 @@ Please note that custom theme (<path>*.theme.json</path>) files also contain `Sc
|
||||
|
||||
> The Editor Scroll Bar colors are the only editor scheme settings that cannot be customized and exported through IDE preferences.
|
||||
>
|
||||
{type="note"}
|
||||
{style="note"}
|
||||
|
||||
Customizing the editor scroll bar colors requires manually changing an editor color scheme XML file.
|
||||
At this time there isn't code completion functionality for changing custom color editor scheme XML files, so the `name` attributes are described below.
|
||||
@ -182,4 +182,4 @@ The following example adds an image of the Austrian countryside to the _Theme Ba
|
||||
|
||||
> The `emptyFrameBackground` property is available starting with the 2020.2 release.
|
||||
>
|
||||
{type="note"}
|
||||
{style="note"}
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
<!-- Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. -->
|
||||
|
||||
<excerpt>Customizing IDE UI by developing a custom theme.</excerpt>
|
||||
<link-summary>Customizing IDE UI by developing a custom theme.</link-summary>
|
||||
|
||||
Beginning with the 2019.1 release, custom themes are supported.
|
||||
Custom themes give designers control of the appearance of built-in UI elements.
|
||||
@ -18,7 +18,6 @@ The [themes available for download](https://plugins.jetbrains.com/search?headlin
|
||||
|
||||
> See the [Themes in IntelliJ-based IDEs](https://blog.jetbrains.com/platform/2021/10/themes-in-intellij-based-ides/) blog post for an overview (available in multiple languages).
|
||||
>
|
||||
{type="tip"}
|
||||
|
||||
## Theme Plugin Development
|
||||
|
||||
@ -46,4 +45,4 @@ If your project requires any of the mentioned capabilities, see [Developing a Pl
|
||||
|
||||
> The recording of _Busy Plugin Developer. Episode 3_ shows how to [create a new theme](https://youtu.be/9J0j-90dC60?t=582) using the Gradle approach.
|
||||
>
|
||||
{type="note"}
|
||||
{style="note"}
|
||||
|
@ -8,7 +8,6 @@ This page describes how to control some of the settings for the Development Inst
|
||||
|
||||
> Please see also [Advanced Configuration](https://www.jetbrains.com/help/idea/tuning-the-ide.html) for general VM options and properties.
|
||||
>
|
||||
{type="tip"}
|
||||
|
||||
## Using a JetBrains Runtime for the Development Instance
|
||||
|
||||
@ -49,7 +48,7 @@ Available JBR variants are:
|
||||
> For `JBR 17`, `dcevm` is bundled by default.
|
||||
> As a consequence, separated `dcevm` and `nomod` variants are no longer available.
|
||||
>
|
||||
{type="note"}
|
||||
{style="note"}
|
||||
|
||||
<tabs group="project-type">
|
||||
|
||||
@ -79,7 +78,7 @@ Please note that any unloading problems in a production environment will ask the
|
||||
|
||||
> Auto-Reload does not work when the sandbox IDE instance is running under a debugger.
|
||||
>
|
||||
{type="warning"}
|
||||
{style="warning"}
|
||||
|
||||
<tabs group="project-type">
|
||||
|
||||
@ -93,7 +92,7 @@ After starting the sandbox IDE instance, run [`buildPlugin`](tools_gradle_intell
|
||||
|
||||
> [`buildSearchableOptions`](tools_gradle_intellij_plugin.md#tasks-buildsearchableoptions) task must currently be [disabled explicitly](tools_gradle_intellij_plugin_faq.md#how-to-disable-building-searchable-options) to workaround _Only one instance of IDEA can be run at a time_ problem.
|
||||
>
|
||||
{type="warning"}
|
||||
{style="warning"}
|
||||
|
||||
</tab>
|
||||
|
||||
|
@ -6,7 +6,7 @@
|
||||
|
||||
> If your plugin uses **log4j** library directly: it is removed from IntelliJ Platform in 2022.1; please see this [blog post](https://blog.jetbrains.com/platform/2022/02/removing-log4j-from-the-intellij-platform/) for migration instructions.
|
||||
>
|
||||
{type="note"}
|
||||
{style="note"}
|
||||
|
||||
The IntelliJ platform uses [`Logger`](%gh-ic%/platform/util/src/com/intellij/openapi/diagnostic/Logger.java) abstraction class to shield from underlying logging implementation and configuration.
|
||||
|
||||
@ -59,10 +59,10 @@ catch (e: Throwable) {
|
||||
</tabs>
|
||||
|
||||
By default, all messages with level `INFO` and higher are written to log output file <path>idea.log</path>.
|
||||
To enable `DEBUG`/`TRACE` logging for specific categories, use <menupath>Help | Diagnostic Tools | Debug Log Settings</menupath>.
|
||||
To enable `DEBUG`/`TRACE` logging for specific categories, use <ui-path>Help | Diagnostic Tools | Debug Log Settings</ui-path>.
|
||||
|
||||
To locate the log file, choose the <menupath>Help | Show Log in Finder/Explorer</menupath> action.
|
||||
When [internal mode](enabling_internal.md) is enabled, the currently running IDE log file can be opened using <menupath>Help | Open Log in Editor</menupath>.
|
||||
To locate the log file, choose the <ui-path>Help | Show Log in Finder/Explorer</ui-path> action.
|
||||
When [internal mode](enabling_internal.md) is enabled, the currently running IDE log file can be opened using <ui-path>Help | Open Log in Editor</ui-path>.
|
||||
|
||||
To locate it for a specific installation, see this [Knowledge Base article](https://intellij-support.jetbrains.com/hc/en-us/articles/206544519).
|
||||
See [Development Instance Sandbox Directory](ide_development_instance.md#the-development-instance-sandbox-directory) on how to find it for development instances.
|
||||
@ -83,7 +83,7 @@ To let users report such errors to the vendor, plugins can implement custom [`Er
|
||||
See [IntelliJ Platform Explorer](https://jb.gg/ipe?extensions=com.intellij.errorHandler) for existing implementations — ranging from pre-filling web-based issue tracker forms to fully automated submission to log monitoring systems.
|
||||
This [tutorial](https://www.plugin-dev.com/intellij/general/error-reporting/) also offers a working solution for using _Sentry_.
|
||||
|
||||
To disable red exclamation notification icon in status bar, invoke <menupath>Help | Edit Custom Properties...</menupath> and add `idea.fatal.error.notification=disabled` in opened <path>idea.properties</path>.
|
||||
To disable red exclamation notification icon in status bar, invoke <ui-path>Help | Edit Custom Properties...</ui-path> and add `idea.fatal.error.notification=disabled` in opened <path>idea.properties</path>.
|
||||
|
||||
## Runtime Information
|
||||
|
||||
@ -113,7 +113,7 @@ Register [`ApplicationActivationListener`](%gh-ic%/platform/ide-core/src/com/int
|
||||
|
||||
## Power Save Mode
|
||||
|
||||
<menupath>File | Power Save Mode</menupath> can be enabled to limit power-consuming features on laptops.
|
||||
<ui-path>File | Power Save Mode</ui-path> can be enabled to limit power-consuming features on laptops.
|
||||
Use [`PowerSaveMode`](%gh-ic%/platform/core-api/src/com/intellij/ide/PowerSaveMode.java) service and `PowerSaveMode.Listener` topic to disable such features in your plugin accordingly.
|
||||
|
||||
## Plugin Management
|
||||
|
@ -22,7 +22,6 @@ Therefore, custom language plugin developers typically use stub indexes in their
|
||||
|
||||
> [Index Viewer](https://plugins.jetbrains.com/plugin/13029-index-viewer/) plugin can be used to inspect indexes' contents and properties.
|
||||
>
|
||||
{type="tip"}
|
||||
|
||||
## Dumb Mode
|
||||
|
||||
|
@ -21,13 +21,11 @@ When accessing an index, specify the key you're interested in and get back the l
|
||||
|
||||
> In some cases, using [Gists](indexing_and_psi_stubs.md#gists) can be considered as an alternative.
|
||||
>
|
||||
{type="tip"}
|
||||
|
||||
## Implementing a File-Based Index
|
||||
|
||||
> A relatively simple file-based index implementation is the [UI Designer bound forms index](%gh-ic%/plugins/ui-designer/src/com/intellij/uiDesigner/binding/FormClassIndex.java), storing FQN of bound implementation class for [GUI Designer](https://www.jetbrains.com/help/idea/gui-designer-basics.html) <path>.form</path> files.
|
||||
>
|
||||
{type="tip"}
|
||||
|
||||
Each specific index implementation is a class extending [`FileBasedIndexExtension`](%gh-ic%/platform/indexing-api/src/com/intellij/util/indexing/FileBasedIndexExtension.java) registered via `com.intellij.fileBasedIndex` extension point.
|
||||
|
||||
@ -58,7 +56,7 @@ Please see also [Improving indexing performance](indexing_and_psi_stubs.md#impro
|
||||
>
|
||||
> Please set system property `intellij.idea.indices.debug`/`intellij.idea.indices.debug.extra.sanity` to `true` to enable additional debugging assertions during development to assert correct index implementation.
|
||||
>
|
||||
{type="warning"}
|
||||
{style="warning"}
|
||||
|
||||
## Accessing a File-Based Index
|
||||
|
||||
@ -66,7 +64,7 @@ Access to file-based indexes is performed through the [`FileBasedIndex`](%gh-ic%
|
||||
|
||||
> Please note index access is restricted during [Dumb Mode](indexing_and_psi_stubs.md#dumb-mode).
|
||||
>
|
||||
{type="note"}
|
||||
{style="note"}
|
||||
|
||||
The following primary operations are supported:
|
||||
|
||||
@ -75,7 +73,7 @@ The following primary operations are supported:
|
||||
|
||||
> The returned data is guaranteed to contain all keys found in up-to-date project content, but may also include additional keys not currently found in the project.
|
||||
>
|
||||
{type="note"}
|
||||
{style="note"}
|
||||
|
||||
* `getValues()` allows to get all values associated with a specific key but not the files in which they were found.
|
||||
* `getContainingFiles()` allows collecting all files in which a particular key was encountered.
|
||||
@ -98,7 +96,7 @@ Nested index access is now possible.
|
||||
> Nested index access is forbidden as it might lead to a deadlock.
|
||||
> Collect all necessary data from index _A_ first, then process results while accessing index _B_.
|
||||
>
|
||||
{type="warning"}
|
||||
{style="warning"}
|
||||
|
||||
</tab>
|
||||
</tabs>
|
||||
|
@ -45,7 +45,7 @@ For each element type that you want to store in the stub tree, you need to perfo
|
||||
|
||||
> If you use [Grammar-Kit](https://github.com/JetBrains/Grammar-Kit) to generate your language PSI, see the [Stub indices support](https://github.com/JetBrains/Grammar-Kit/blob/master/HOWTO.md#35-stub-indices-support) section for instructions on integrating your grammar with stubs.
|
||||
>
|
||||
{type="note"}
|
||||
{style="note"}
|
||||
|
||||
By default, if a PSI element extends `StubBasedPsiElement`, all elements of that type will be stored in the stub tree.
|
||||
If you need more precise control over which elements are stored, override `IStubElementType.shouldCreateStub()` and return `false` for elements that should not be included in the stub tree.
|
||||
@ -67,7 +67,6 @@ Otherwise, the stub tree will not be rebuilt when external dependency changes, a
|
||||
|
||||
> Please see also [](indexing_and_psi_stubs.md#improving-indexing-performance).
|
||||
>
|
||||
{type="tip"}
|
||||
|
||||
## Stub Indexes
|
||||
|
||||
|
@ -57,4 +57,4 @@ The default storage format depends on the OS.
|
||||
[linux]: https://specifications.freedesktop.org/secret-service/latest/
|
||||
[linux2]: https://wiki.gnome.org/Projects/Libsecret
|
||||
|
||||
Users can override the default behavior in <menupath>Settings/Preferences | Appearance & Behavior | System Settings | Passwords</menupath>.
|
||||
Users can override the default behavior in <ui-path>Settings/Preferences | Appearance & Behavior | System Settings | Passwords</ui-path>.
|
||||
|
@ -7,7 +7,7 @@ You can use either a simple API to persist a few values or persist the state of
|
||||
|
||||
> If you need to persist sensitive data like passwords, please see [Persisting Sensitive Data](persisting_sensitive_data.md).
|
||||
>
|
||||
{type="warning"}
|
||||
{style="warning"}
|
||||
|
||||
## Using PersistentStateComponent
|
||||
|
||||
@ -144,7 +144,7 @@ See [`StoragePathMacros`](%gh-ic%/platform/projectModel-api/src/com/intellij/ope
|
||||
|
||||
> For application-level storage, it is strongly recommended to use a custom file, using of <path>other.xml</path> is deprecated.
|
||||
>
|
||||
{type="note"}
|
||||
{style="note"}
|
||||
|
||||
The `roamingType` parameter of the `@Storage` annotation specifies the roaming type when the [settings are shared](#sharing-settings-between-ide-installations):
|
||||
|
||||
@ -154,7 +154,7 @@ The `roamingType` parameter of the `@Storage` annotation specifies the roaming t
|
||||
|
||||
> If there are multiple components that store state in the same file, they must have the same `romaingType` attribute value.
|
||||
>
|
||||
{type="warning"}
|
||||
{style="warning"}
|
||||
|
||||
### Sharing Settings Between IDE Installations
|
||||
|
||||
@ -168,7 +168,6 @@ Settings can be shared via the following functionalities:
|
||||
|
||||
> Synchronization via the _Settings Sync_ or _Settings Repository_ plugins only works when these plugins are installed and enabled.
|
||||
>
|
||||
{type="tip"}
|
||||
|
||||
The decision about making a specific component's state shareable should be made carefully.
|
||||
Only the settings that are not specific to a given machine should be shared, e.g. paths to user-specific directories shouldn't be shared.
|
||||
@ -178,7 +177,7 @@ If a component contains both shareable and non-shareable data, it should be spli
|
||||
|
||||
> The _Settings Sync_ plugin is available starting with the version 2022.3.
|
||||
>
|
||||
{type="note"}
|
||||
{style="note"}
|
||||
|
||||
To include a plugin's component state in the _Settings Sync_ plugin synchronization, the settings category must be specified via the `category` attribute of the `@State` annotation.
|
||||
The default `SettingsCategory.OTHER` value disables synchronization of a component's state.
|
||||
@ -189,7 +188,7 @@ If the component state is OS-dependent, the `roamingType` of the `@Storage` anno
|
||||
|
||||
> The _Settings Repository_ plugin is unbundled starting with the version 2022.3 and will be no longer maintained.
|
||||
>
|
||||
{type="warning"}
|
||||
{style="warning"}
|
||||
|
||||
Persistent components can be shared via the _Settings Repository_ plugin and _Export Settings_ feature, depending on the `roamingType` of the `@Storage` annotation.
|
||||
See the [](#defining-the-storage-location) for more details.
|
||||
@ -199,7 +198,7 @@ See the [](#defining-the-storage-location) for more details.
|
||||
> Please consider using annotation parameters only to achieve backward compatibility.
|
||||
> Otherwise, please feel free to file issues about specific serialization cosmetics.
|
||||
>
|
||||
{type="note"}
|
||||
{style="note"}
|
||||
|
||||
If you want to use the default bean serialization but need to customize the storage format in XML (for example, for compatibility with previous versions of your plugin or externally defined XML formats), you can use the `@Tag`, `@Attribute`, `@Property`, `@MapAnnotation`, `@XCollection` annotations.
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
<!-- Copyright 2000-2022 JetBrains s.r.o. and other contributors. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. -->
|
||||
|
||||
<excerpt>Alternative strategies and tools to avoid building a "full" plugin.</excerpt>
|
||||
<link-summary>Alternative strategies and tools to avoid building a "full" plugin.</link-summary>
|
||||
|
||||
In some cases, implementing an actual IntelliJ Platform plugin can be overkill, and using one of the alternative approaches listed below may provide you with the required value in a much shorter time.
|
||||
If you need a functionality that is specific to your project domain, conventions, or practices, you can avoid all the steps that are required to implement and publish a plugin and provide these features as a part of your project or IDE configuration files.
|
||||
@ -21,11 +21,11 @@ A single inspection can use multiple search and replacement templates.
|
||||
Once SSR inspections are created and configured, they can be shared with other team members via [inspection profiles](https://www.jetbrains.com/help/idea/customizing-profiles.html).
|
||||
|
||||
SSR inspections can be created only for languages providing SSR support.
|
||||
To verify if a given language supports SSR, invoke the <menupath>Edit | Find | Search Structurally...</menupath> action in an IDE supporting the language, and check if it is present in the <control>Language</control> select list.
|
||||
To verify if a given language supports SSR, invoke the <ui-path>Edit | Find | Search Structurally...</ui-path> action in an IDE supporting the language, and check if it is present in the <control>Language</control> select list.
|
||||
|
||||
> See the [I(J)nspector](https://ijnspector.wordpress.com/) blog for practical SSR templates examples.
|
||||
>
|
||||
{type="note"}
|
||||
{style="note"}
|
||||
|
||||
## IDE Scripting Console
|
||||
|
||||
@ -41,7 +41,7 @@ Flora extensions have access to all available IntelliJ Platform APIs, just like
|
||||
|
||||
Every extension is represented by a single file and stored directly in a project's <path>.plugins</path> directory.
|
||||
Extensions can be easily shared with other team members by adding the <path>.plugins</path> directory to VCS.
|
||||
Also, adding the Flora plugin in the <menupath>Settings/Preferences | Build, Execution, Deployment | Required Plugins</menupath> and sharing this configuration as part of a project makes it effortless to deliver additional IDE functionalities to your team without any manual setup.
|
||||
Also, adding the Flora plugin in the <ui-path>Settings/Preferences | Build, Execution, Deployment | Required Plugins</ui-path> and sharing this configuration as part of a project makes it effortless to deliver additional IDE functionalities to your team without any manual setup.
|
||||
|
||||
## LivePlugin
|
||||
|
||||
@ -55,7 +55,7 @@ Additionally, if they are stored in a project's <path>.live-plugins</path> direc
|
||||
|
||||
> See the LivePlugin [description](https://dmitrykandalov.com/liveplugin), [presentation](https://www.youtube.com/watch?v=GcYa4lMRta0), and [extensions examples](https://github.com/dkandalov/live-plugin#more-examples) for more information.
|
||||
>
|
||||
{type="note"}
|
||||
{style="note"}
|
||||
|
||||
## PhpStorm Advanced Metadata
|
||||
|
||||
|
@ -19,4 +19,3 @@ It's highly recommended to get familiar with the [](explore_api.md) section befo
|
||||
|
||||
> In some cases, implementing an actual IntelliJ Platform plugin might not be necessary, as [alternative solutions](plugin_alternatives.md) exist.
|
||||
>
|
||||
{type="tip"}
|
||||
|
@ -152,7 +152,7 @@ publishPlugin {
|
||||
> token.set(System.getenv("PUBLISH_TOKEN"))
|
||||
> ```
|
||||
>
|
||||
{type="warning"}
|
||||
{style="warning"}
|
||||
|
||||
### Provide Secrets to IDE
|
||||
|
||||
@ -222,7 +222,7 @@ Instead, a trusted private CA or self-signed certificate can be used to sign and
|
||||
### Verification
|
||||
|
||||
Before looking at how we can sign a plugin, let's first review how verification works when a non-JetBrains certificate is used.
|
||||
As of 2021.2, during verification, IntelliJ-based IDEs check if the plugin was signed by the JetBrains CA certificate or any public key provided by the user via <menupath>Settings/Preferences | Plugins | Manage Plugin Certificates</menupath>. In 2021.2.1, a system property has been added: `intellij.plugins.truststore`, pointing to a trusted JKS TrustStore.
|
||||
As of 2021.2, during verification, IntelliJ-based IDEs check if the plugin was signed by the JetBrains CA certificate or any public key provided by the user via <ui-path>Settings/Preferences | Plugins | Manage Plugin Certificates</ui-path>. In 2021.2.1, a system property has been added: `intellij.plugins.truststore`, pointing to a trusted JKS TrustStore.
|
||||
During verification, the plugin's public key is extracted from the signature.
|
||||
The last certificate entry in the chain matched against the certificates stored in one of the storages from above.
|
||||
|
||||
@ -235,7 +235,7 @@ With this approach, existing internal TrustStores may exist and could be used.
|
||||
Be sure when choosing a TrustStore that the CAs are limited to the internal CAs you trust.
|
||||
Using a TrustStore with public CAs can expose the users to an attack vector.
|
||||
|
||||
If adding a TrustStore to a users environment is not possible, the user may also add the root CAs public key to <menupath>Settings/Preferences | Plugins | Manage Plugin Certificates</menupath>.
|
||||
If adding a TrustStore to a users environment is not possible, the user may also add the root CAs public key to <ui-path>Settings/Preferences | Plugins | Manage Plugin Certificates</ui-path>.
|
||||
|
||||
### Using Self-Signed Certificates
|
||||
|
||||
@ -249,4 +249,4 @@ keytool -import -alias IdeaPlugin -file chain.crt -keystore pluginKeystore.jks -
|
||||
```
|
||||
(note: the TrustStore password must remain `changeit`)
|
||||
|
||||
Otherwise, users may add the public key manually to <menupath>Settings/Preferences | Plugins | Manage Plugin Certificates</menupath>.
|
||||
Otherwise, users may add the public key manually to <ui-path>Settings/Preferences | Plugins | Manage Plugin Certificates</ui-path>.
|
||||
|
@ -1,23 +0,0 @@
|
||||
[//]: # (title: Plugin Structure)
|
||||
|
||||
<!-- Copyright 2000-2022 JetBrains s.r.o. and other contributors. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. -->
|
||||
|
||||
Click the following topics to learn more about the plugin system structure and plugin lifecycles:
|
||||
|
||||
* [](plugin_content.md)
|
||||
* [](plugin_class_loaders.md)
|
||||
* [](plugin_actions.md)
|
||||
* [](plugin_extensions.md)
|
||||
* [](plugin_services.md)
|
||||
* [](plugin_listeners.md)
|
||||
* [](plugin_extension_points.md)
|
||||
* [](plugin_components.md)
|
||||
* [](plugin_configuration_file.md)
|
||||
* [](plugin_icon_file.md)
|
||||
* [](plugin_dependencies.md)
|
||||
|
||||
> If a topic you are interested in is not covered in the above sections, let us know via the "**Was this page helpful?**" feedback form below or [other channels](getting_help.md#problems-with-the-guide).
|
||||
>
|
||||
> Please be specific about the topics and reasons for adding them, and leave your email in case we need more details.
|
||||
>
|
||||
{type="note"}
|
46
topics/basics/plugin_structure.topic
Normal file
46
topics/basics/plugin_structure.topic
Normal file
@ -0,0 +1,46 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. -->
|
||||
<!DOCTYPE topic SYSTEM "https://helpserver.labs.jb.gg/help/schemas/mvp/html-entities.dtd">
|
||||
<topic xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:noNamespaceSchemaLocation="https://helpserver.labs.jb.gg/help/schemas/mvp/topic.v2.xsd"
|
||||
id="plugin_structure" title="Plugin Structure">
|
||||
|
||||
<section-starting-page>
|
||||
|
||||
<title>Plugin Structure</title>
|
||||
<description>
|
||||
Learn about the plugin system structure and plugin components lifecycle.
|
||||
</description>
|
||||
|
||||
<spotlight>
|
||||
<a href="plugin_configuration_file.md" type="file"
|
||||
summary="A detailed description of the plugin.xml configuration file elements"/>
|
||||
<a href="plugin_dependencies.md" type="folder"
|
||||
summary="Declare required or optional dependencies on other IntelliJ Platform plugins">
|
||||
Plugin Dependencies</a>
|
||||
</spotlight>
|
||||
|
||||
<primary>
|
||||
<title>Plugin content and building blocks</title>
|
||||
<a href="plugin_content.md" summary="Plugin distribution package types and their contents"/>
|
||||
<a href="plugin_actions.md" summary="Introduction to plugin action system"/>
|
||||
<a href="plugin_extensions.md" summary="Extend IDE functionality by implementing extensions"/>
|
||||
<a href="plugin_services.md" summary="Service types, registration and lifecycle"/>
|
||||
<a href="plugin_listeners.md" summary="Subscribe to events emitted by IDE and other plugins"/>
|
||||
<a href="plugin_extension_points.md" summary="Allow other plugins extending your plugin functionality"/>
|
||||
<a href="plugin_components.md" summary="Migrate legacy components to the current solutions">
|
||||
Components (deprecated)</a>
|
||||
<a href="plugin_icon_file.md" summary="Plugin icon displayed in IDE and JetBrains Marketplace"/>
|
||||
</primary>
|
||||
|
||||
<secondary>
|
||||
<title>Advanced topics</title>
|
||||
<a href="plugin_class_loaders.md" summary="Learn how plugin and dependency classes are loaded in IDE">
|
||||
Plugin Class Loaders</a>
|
||||
<a href="bundling_plugin_openapi_sources.md"
|
||||
summary="Expose your plugin API sources for other plugins"/>
|
||||
</secondary>
|
||||
|
||||
</section-starting-page>
|
||||
|
||||
</topic>
|
@ -11,12 +11,12 @@ Please note that any unloading problems in a production environment will simply
|
||||
|
||||
> If a plugin _requires_ restart (e.g., due to using native libraries) specify `require-restart="true"` for [`<idea-plugin>`](plugin_configuration_file.md#idea-plugin) root tag in <path>[plugin.xml](plugin_configuration_file.md)</path>.
|
||||
>
|
||||
{type="note"}
|
||||
{style="note"}
|
||||
|
||||
## Restrictions
|
||||
|
||||
For a plugin to support this, all restrictions listed below must be met.
|
||||
To verify a plugin locally, invoke <menupath>Code | Analyze Code | Run Inspection by Name...</menupath> and run <control>Plugin DevKit | Plugin descriptor | Plugin.xml dynamic plugin verification inspection</control> inspection on all plugin descriptor files.
|
||||
To verify a plugin locally, invoke <ui-path>Code | Analyze Code | Run Inspection by Name...</ui-path> and run <control>Plugin DevKit | Plugin descriptor | Plugin.xml dynamic plugin verification inspection</control> inspection on all plugin descriptor files.
|
||||
|
||||
For plugins hosted on the [JetBrains Marketplace](https://plugins.jetbrains.com) the built-in [Plugin Verifier](https://blog.jetbrains.com/platform/2018/07/plugins-repository-now-integrates-with-the-plugin-verification-tool/) will run these checks automatically.
|
||||
See [](verifying_plugin_compatibility.md#plugin-verifier) for more information on how to run it locally or on CI.
|
||||
@ -51,7 +51,7 @@ Application, project, and module [services](plugin_services.md) declared with `o
|
||||
|
||||
> Loading and unloading plugins happens in EDT and under write action.
|
||||
>
|
||||
{type="note"}
|
||||
{style="note"}
|
||||
|
||||
### CachedValue
|
||||
|
||||
@ -87,7 +87,7 @@ If a plugin fails to reload, the log will contain a cause as to why.
|
||||
<procedure title="Finding leaks preventing unload">
|
||||
|
||||
1. Verify that the IDE is running with the VM parameter `-XX:+UnlockDiagnosticVMOptions`. When using [Gradle](configuring_plugin_project.md), specify `runIde.jvmArgs += "-XX:+UnlockDiagnosticVMOptions"` otherwise [Configure JVM Options](https://www.jetbrains.com/help/idea/tuning-the-ide.html#procedure-jvm-options).
|
||||
2. Set Registry key `ide.plugins.snapshot.on.unload.fail` to `true` (Go to <menupath>Navigate | Search Everywhere</menupath> and type `Registry`).
|
||||
2. Set Registry key `ide.plugins.snapshot.on.unload.fail` to `true` (Go to <ui-path>Navigate | Search Everywhere</ui-path> and type `Registry`).
|
||||
3. Trigger the plugin reload.
|
||||
4. Open the <path>.hprof</path> memory snapshot generated on plugin unload, look for the plugin ID string. [IntelliJ Ultimate](https://www.jetbrains.com/help/idea/analyze-hprof-memory-snapshots.html) can open memory snapshots directly.
|
||||
5. Find the `PluginClassLoader` referencing the plugin ID string
|
||||
|
@ -6,7 +6,7 @@ The IntelliJ Platform provides the concept of _actions_.
|
||||
An action is a class derived from [`AnAction`](%gh-ic%/platform/editor-ui-api/src/com/intellij/openapi/actionSystem/AnAction.java), whose `actionPerformed()` method is called when its menu item or toolbar button is selected.
|
||||
|
||||
Actions are the most common way for a user to invoke the functionality of your plugin.
|
||||
An action can be invoked from a menu or a toolbar, using a keyboard shortcut or the <menupath>Help | Find Action...</menupath> lookup.
|
||||
An action can be invoked from a menu or a toolbar, using a keyboard shortcut or the <ui-path>Help | Find Action...</ui-path> lookup.
|
||||
|
||||
Actions are organized into groups, which, in turn, can contain other groups.
|
||||
A group of actions can form a toolbar or a menu.
|
||||
|
@ -5,7 +5,7 @@
|
||||
> When writing new plugins, creating Components should be avoided.
|
||||
> Any existing Components should be migrated to services, extensions, or listeners (see below).
|
||||
>
|
||||
{type="warning"}
|
||||
{style="warning"}
|
||||
|
||||
Plugin Components are a legacy feature supported for compatibility with plugins created for older versions of the IntelliJ Platform.
|
||||
Plugins using Components do not support [dynamic loading](dynamic_plugins.md) (the ability to install, update, and uninstall plugins without restarting the IDE).
|
||||
@ -33,7 +33,7 @@ To subscribe to events, use a [listener](plugin_listeners.md) or create an [exte
|
||||
|
||||
> Executing code on application startup should be avoided whenever possible because it slows down startup.
|
||||
>
|
||||
{type="warning"}
|
||||
{style="warning"}
|
||||
|
||||
Plugin code should only be executed when projects are opened (see [Project Open](#project-open)) or when the user invokes an action of a plugin.
|
||||
If this cannot be avoided, add a [listener](plugin_listeners.md) subscribing to the [`AppLifecycleListener`](%gh-ic%/platform/platform-impl/src/com/intellij/ide/AppLifecycleListener.java) topic.
|
||||
|
@ -1,10 +1,10 @@
|
||||
[//]: # (title: Plugin Configuration File)
|
||||
|
||||
<toc-settings depth="4" mode="tree" structure-elements="chapter"/>
|
||||
<show-structure for="chapter" depth="4"/>
|
||||
|
||||
<!-- Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. -->
|
||||
|
||||
<excerpt>Plugin configuration file contains all the information about the plugin, as well as all registered extensions, actions, listeners, etc.</excerpt>
|
||||
<link-summary>Plugin configuration file contains all the information about the plugin, as well as all registered extensions, actions, listeners, etc.</link-summary>
|
||||
|
||||
The <path>plugin.xml</path> configuration file contains all the information about the plugin, which is displayed in the [plugins settings dialog](https://www.jetbrains.com/help/idea/managing-plugins.html), and all registered extensions, actions, listeners, etc.
|
||||
Sections below describe all the elements in detail.
|
||||
@ -81,7 +81,7 @@ Deprecated elements are omitted in the list above.
|
||||
> If an element or an attribute is not documented on this page, please consider them as configuration items intended to be used by JetBrains only.
|
||||
> They should never be used by 3rd-party plugins.
|
||||
>
|
||||
{type="note"}
|
||||
{style="note"}
|
||||
|
||||
## `idea-plugin`
|
||||
{id="idea-plugin"}
|
||||
@ -769,7 +769,7 @@ Examples
|
||||
##### `abbreviation`
|
||||
{id="idea-plugin__actions__action__abbreviation"}
|
||||
|
||||
Defines an alias for the action name which the user can use in <menupath>Help | Find Action...</menupath> or <menupath>Navigate | Search Everywhere</menupath> popups.
|
||||
Defines an alias for the action name which the user can use in <ui-path>Help | Find Action...</ui-path> or <ui-path>Navigate | Search Everywhere</ui-path> popups.
|
||||
A single action can have multiple abbreviations.
|
||||
|
||||
{style="narrow"}
|
||||
@ -850,7 +850,7 @@ Attributes
|
||||
- `use-shortcut-of` _(optional)_<br/>
|
||||
The ID of the action whose keyboard shortcut this group will use.
|
||||
- `searchable` _(optional; supported in 2020.3+)_<br/>
|
||||
Boolean flag defining whether the group is displayed in <menupath>Help | Find Action...</menupath> or <menupath>Navigate | Search Everywhere</menupath> popups.<br/>
|
||||
Boolean flag defining whether the group is displayed in <ui-path>Help | Find Action...</ui-path> or <ui-path>Navigate | Search Everywhere</ui-path> popups.<br/>
|
||||
Default value: `true`.
|
||||
|
||||
Children
|
||||
@ -1061,13 +1061,12 @@ Attributes
|
||||
Default value: `false`.
|
||||
- `area` _(optional)_<br/>
|
||||
The scope in which the [extension](plugin_extensions.md) is instantiated.
|
||||
It is not recommended to use non-default values.
|
||||
Allowed values:
|
||||
- `IDEA_APPLICATION` _(default)_
|
||||
- `IDEA_PROJECT`
|
||||
- `IDEA_MODULE` (**deprecated**)
|
||||
|
||||
It is not recommended to use non-default values.
|
||||
|
||||
Children
|
||||
: [`<with>`](#idea-plugin__extensionPoints__extensionPoint__with)
|
||||
|
||||
@ -1119,14 +1118,14 @@ An extension point which restricts the type provided in a `myClass` attribute to
|
||||
- `com.example.MyComparable` must be a subtype of `java.lang.Comparable`
|
||||
|
||||
## Deprecated Elements
|
||||
{initial-collapse-state="collapsed"}
|
||||
{collapsible="true" initial-collapse-state="collapsed"}
|
||||
|
||||
### `application-components`
|
||||
{id="idea-plugin__application-components"}
|
||||
|
||||
> Element is deprecated. Do not use it in new plugins.
|
||||
>
|
||||
{type="warning"}
|
||||
{style="warning"}
|
||||
|
||||
Defines a list of application [components](plugin_components.md).
|
||||
|
||||
@ -1142,7 +1141,7 @@ Children
|
||||
|
||||
> Element is deprecated. Do not use it in new plugins.
|
||||
>
|
||||
{type="warning"}
|
||||
{style="warning"}
|
||||
|
||||
Defines a list of project [components](plugin_components.md).
|
||||
|
||||
@ -1158,7 +1157,7 @@ Children
|
||||
|
||||
> Element is deprecated. Do not use it in new plugins.
|
||||
>
|
||||
{type="warning"}
|
||||
{style="warning"}
|
||||
|
||||
Defines a list of module [components](plugin_components.md).
|
||||
|
||||
@ -1174,7 +1173,7 @@ Children
|
||||
|
||||
> Element is deprecated. Do not use it in new plugins.
|
||||
>
|
||||
{type="warning"}
|
||||
{style="warning"}
|
||||
|
||||
Defines a single application, project, or module [component](plugin_components.md).
|
||||
A single [`<application-components>`](#idea-plugin__application-components), [`<project-components>`](#idea-plugin__project-components), or [`<module-components>`](#idea-plugin__module-components) element can contain multiple `<component>` elements.
|
||||
@ -1196,7 +1195,7 @@ Children
|
||||
|
||||
> Element is deprecated. Do not use it in new plugins.
|
||||
>
|
||||
{type="warning"}
|
||||
{style="warning"}
|
||||
|
||||
The fully qualified name of the component implementation class.
|
||||
|
||||
@ -1209,7 +1208,7 @@ Required
|
||||
|
||||
> Element is deprecated. Do not use it in new plugins.
|
||||
>
|
||||
{type="warning"}
|
||||
{style="warning"}
|
||||
|
||||
The fully qualified name of the component interface class. If not specified, the interface will be the same as defined by [`<implementation-class>`](#idea-plugin__components__component__interface-class) element.
|
||||
|
||||
@ -1222,7 +1221,7 @@ Required
|
||||
|
||||
> Element is deprecated. Do not use it in new plugins.
|
||||
>
|
||||
{type="warning"}
|
||||
{style="warning"}
|
||||
|
||||
The fully qualified name of the component implementation class to be used when the IDE runs in headless mode.
|
||||
|
||||
@ -1235,7 +1234,7 @@ Required
|
||||
|
||||
> Element is deprecated. Do not use it in new plugins.
|
||||
>
|
||||
{type="warning"}
|
||||
{style="warning"}
|
||||
|
||||
Allows to provide additional component options.
|
||||
A single [`<component>`](#idea-plugin__components__component) element can contain multiple `<option>` elements.
|
||||
@ -1256,7 +1255,7 @@ Attributes
|
||||
|
||||
> Element is deprecated. Do not use it in new plugins.
|
||||
>
|
||||
{type="warning"}
|
||||
{style="warning"}
|
||||
|
||||
If present, the component is instantiated also for the default project. It takes effect only when used inside of [`<project-components>`](#idea-plugin__project-components) element.
|
||||
|
||||
|
@ -38,7 +38,7 @@ All jars from the <path>/lib</path> folder are automatically added to the classp
|
||||
> Do not repackage libraries into the main plugin archive (<path>sample.jar</path> in the sample below).
|
||||
> Otherwise, [Plugin Verifier](verifying_plugin_compatibility.md) will yield false positives for unresolved classes and methods.
|
||||
>
|
||||
{type="warning"}
|
||||
{style="warning"}
|
||||
|
||||
```text
|
||||
.IntelliJIDEAx0/
|
||||
|
@ -8,7 +8,7 @@ For more information about dependencies on the IntelliJ Platform modules, see Pa
|
||||
|
||||
> For adding dependencies on 3rd party libraries, use regular [Gradle dependency management](https://docs.gradle.org/current/userguide/core_dependency_management.html).
|
||||
>
|
||||
{type="note"}
|
||||
{style="note"}
|
||||
|
||||
<procedure title="Required Steps">
|
||||
|
||||
@ -74,7 +74,7 @@ Depending on the chosen development workflow (Gradle or DevKit), one of the two
|
||||
|
||||
> Please see the [`intellij.plugins`](tools_gradle_intellij_plugin.md#intellij-extension-plugins) property for acceptable values.
|
||||
>
|
||||
{type="note"}
|
||||
{style="note"}
|
||||
|
||||
Add the dependency to the [`intellij.plugins`](tools_gradle_intellij_plugin.md#intellij-extension-plugins) parameter in your build script:
|
||||
|
||||
@ -101,20 +101,20 @@ intellij {
|
||||
|
||||
> Transitive dependencies required for tests must currently be [specified explicitly](https://github.com/JetBrains/gradle-intellij-plugin/issues/38).
|
||||
>
|
||||
{type="note"}
|
||||
{style="note"}
|
||||
</tab>
|
||||
|
||||
<tab title="DevKit">
|
||||
|
||||
> Existing DevKit-based projects can be [converted to use Gradle setup](migrating_plugin_devkit_to_gradle.md) where dependency management is fully automated.
|
||||
>
|
||||
{type="note"}
|
||||
{style="note"}
|
||||
|
||||
Add the JARs of the plugin on which the project depends to the <control>Classpath</control> of the [*IntelliJ Platform SDK*](setting_up_theme_environment.md#add-intellij-platform-plugin-sdk).
|
||||
|
||||
> Do not add the plugin JARs as a library: this will fail at runtime because the IntelliJ Platform will load two separate copies of the dependency plugin classes.
|
||||
>
|
||||
{type="warning"}
|
||||
{style="warning"}
|
||||
|
||||
To do that, open the <control>Project Structure</control> dialog, select the SDK used in the project, press the <shortcut>+</shortcut> button in the <control>Classpath</control> tab, and select the plugin JAR file(s):
|
||||
* For bundled plugins, the plugin JAR files are located in <path>plugins/$PLUGIN_NAME$</path> or <path>plugins/$PLUGIN_NAME$/lib</path> under the main installation directory.
|
||||
@ -155,7 +155,7 @@ Declare additional `optional="true"` and `config-file` attribute pointing to [op
|
||||
|
||||
> Additional plugin descriptor files must follow the naming pattern <path>myPluginId-$NAME$.xml</path> resulting in unique filenames to prevent problems with classloaders in tests ([Details](https://youtrack.jetbrains.com/issue/IDEA-205964)).
|
||||
>
|
||||
{type="note"}
|
||||
{style="note"}
|
||||
|
||||
For example, if a plugin adds additional highlighting for Java and Kotlin files, use the following setup.
|
||||
The main <path>plugin.xml</path> will define an annotator for Java and specify an optional dependency on the Kotlin plugin (plugin ID `org.jetbrains.kotlin`):
|
||||
|
@ -1,10 +1,12 @@
|
||||
[//]: # (title: Extension Points)
|
||||
|
||||
<show-structure for="chapter" depth="2"/>
|
||||
|
||||
<!-- Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. -->
|
||||
|
||||
> See [Plugin Extensions](plugin_extensions.md) for _using_ extension points in your plugin.
|
||||
>
|
||||
{type="note"}
|
||||
{style="note"}
|
||||
|
||||
By defining _extension points_ in your plugin, you can allow other plugins to extend your plugin's functionality.
|
||||
There are two types of extension points:
|
||||
@ -57,7 +59,7 @@ The plugin that contributes to the extension point will read those properties fr
|
||||
|
||||
> See [](bundling_plugin_openapi_sources.md) section explaining how to expose extension points sources to other plugins.
|
||||
>
|
||||
{type="note"}
|
||||
{style="note"}
|
||||
|
||||
### Sample
|
||||
|
||||
@ -86,7 +88,6 @@ public class MyBeanClass extends AbstractExtensionPointBean {
|
||||
|
||||
> See [Extension properties code insight](plugin_extensions.md#extension-properties-code-insight) on how to provide smart completion/validation.
|
||||
>
|
||||
{type="tip"}
|
||||
|
||||
For above extension points usage in _anotherPlugin_ would look like this (see also [Declaring Extensions](plugin_extensions.md#declaring-extensions)):
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
<!-- Copyright 2000-2022 JetBrains s.r.o. and other contributors. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. -->
|
||||
|
||||
<excerpt>Extensions are the most common way of customizing functionality in the IDE.</excerpt>
|
||||
<link-summary>Extensions are the most common way of customizing functionality in the IDE.</link-summary>
|
||||
|
||||
_Extensions_ are the most common way for a plugin to extend the IntelliJ Platform's functionality in a way that is not as straightforward as adding an action to a menu or toolbar.
|
||||
|
||||
@ -21,14 +21,13 @@ Additionally, dedicated Extension Point and Listener Lists specific to IDEs are
|
||||
Browse usages inside existing implementations of open-source IntelliJ Platform plugins via [IntelliJ Platform Explorer](https://jb.gg/ipe).
|
||||
|
||||
Alternatively (or when using 3rd party extension points), all available extension points for the specified namespace (`defaultExtensionNs`) can be listed using auto-completion inside the [`<extensions>`](plugin_configuration_file.md#idea-plugin__extensions) block in <path>[plugin.xml](plugin_configuration_file.md)</path>.
|
||||
Use <menupath>View | Quick Documentation</menupath> in the lookup list to access more information about the extension point and implementation (if applicable).
|
||||
Use <ui-path>View | Quick Documentation</ui-path> in the lookup list to access more information about the extension point and implementation (if applicable).
|
||||
See [](explore_api.md) for more information and strategies.
|
||||
|
||||
## Declaring Extensions
|
||||
|
||||
> Auto-completion, Quick Documentation, and other code insight features are available on extension point tags and attributes.
|
||||
>
|
||||
{type="tip"}
|
||||
|
||||
1. Add an [`<extensions>`](plugin_configuration_file.md#idea-plugin__extensions) element to your <path>plugin.xml</path> if it's not yet present there.
|
||||
Set the `defaultExtensionNs` attribute to one of the following values:
|
||||
|
@ -17,13 +17,13 @@ Whether online or in the product UI, a Plugin Logo helps users to identify a plu
|
||||
|
||||
> When browsing [custom plugin repositories](custom_plugin_repository.md), there is no support for showing logos for plugins hosted there but not yet installed.
|
||||
>
|
||||
{type="note"}
|
||||
{style="note"}
|
||||
|
||||
## Plugin Logo Requirements
|
||||
|
||||
> Please see also these [important requirements](https://plugins.jetbrains.com/docs/marketplace/plugin-overview-page.html#plugin-logo) for JetBrains Marketplace.
|
||||
>
|
||||
{type="note"}
|
||||
{style="note"}
|
||||
|
||||
For a Plugin Logo to be displayed correctly within an IntelliJ Platform-based IDE, it must:
|
||||
* Follow the best practices design guidelines,
|
||||
@ -53,10 +53,10 @@ See more examples of [visual weight compensation](https://jetbrains.design/intel
|
||||
For basic shapes, use the following sizes.
|
||||
Note the different areas of transparent padding used for each shape:
|
||||
|
||||
| {width="225"} | {:width="225"} |
|
||||
|:---------------------------------------------------------------------------:|:------------------------------------------------------------------------:|
|
||||
| {width="225"} | {width="225"} |
|
||||
|:---------------------------------------------------------------------------:|:-----------------------------------------------------------------------:|
|
||||
| _Square logo 32px by 32px_ | _Circular logo 36px in diameter_ |
|
||||
| {width="225"} | {:width="225"} |
|
||||
| {width="225"} | {width="225"} |
|
||||
| _Horizontal rectangular logo 36px by 26px_ | _Vertical rectangular logo 26px by 36px_ |
|
||||
|
||||
|
||||
@ -74,7 +74,7 @@ If one Plugin Logo design does not work on both light and dark backgrounds, crea
|
||||
The examples below illustrate how a Plugin Logo design may work well for a light background but not for a dark background.
|
||||
Consequently, a separate Plugin Logo for dark backgrounds is needed.
|
||||
|
||||
| {width="225"} | {:width="225"} | {:width="225"} |
|
||||
| {width="225"} | {width="225"} | {width="225"} |
|
||||
|:-------------------------------------------------------------:|:---------------------------------------------------------------------:|:------------------------------------------------------------------:|
|
||||
| _The light Plugin Logo design<br/>works well on light theme_ | _The light Plugin Logo design does<br/>not work well on a dark theme_ | _A separate, dark Plugin Logo design<br/>works well on dark theme_ |
|
||||
|
||||
@ -84,7 +84,7 @@ This vector image format is required because the Plugin Logo file must be small
|
||||
|
||||
> Using automatic conversion of bitmap graphics to SVG is highly discouraged, as the resulting files have excessive size (100kB or more).
|
||||
>
|
||||
{type="warning"}
|
||||
{style="warning"}
|
||||
|
||||
### Plugin Logo File Naming Convention
|
||||
Name the Plugin Logo files according to the following conventions:
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
<!-- Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. -->
|
||||
|
||||
<excerpt>Listeners allow subscription to application and project events.</excerpt>
|
||||
<link-summary>Listeners allow subscription to application and project events.</link-summary>
|
||||
|
||||
_Listeners_ allow plugins to declaratively subscribe to events delivered through the message bus (see [Messaging infrastructure](messaging_infrastructure.md) for details).
|
||||
Listener implementations must be stateless and may not implement life-cycle (e.g., `Disposable`).
|
||||
@ -12,14 +12,13 @@ You can define both application- and project-level listeners.
|
||||
> All available listeners/topics are listed on [](extension_point_list.md) under _Listeners_ sections.
|
||||
> Browse usages inside existing implementations of open-source IntelliJ Platform plugins via [IntelliJ Platform Explorer](https://jb.gg/ipe).
|
||||
>
|
||||
{type="tip"}
|
||||
|
||||
Declarative registration of listeners allows you to achieve better performance than registering listeners from code.
|
||||
The advantage is because listener instances get created lazily — the first time an event is sent to the topic — and not during application startup or project opening.
|
||||
|
||||
> Defining listeners in <path>plugin.xml</path> is supported starting with version 2019.3 of the platform.
|
||||
>
|
||||
{type="note"}
|
||||
{style="note"}
|
||||
|
||||
## Defining Application-Level Listeners
|
||||
|
||||
@ -122,4 +121,4 @@ Registration of listeners can be restricted using the following attributes:
|
||||
|
||||
> If declared listeners are intended to be used by other plugins depending on your plugin, consider [bundling their sources](bundling_plugin_openapi_sources.md) in the plugin distribution.
|
||||
>
|
||||
{type="note"}
|
||||
{style="note"}
|
||||
|
@ -19,7 +19,7 @@ For the latter two, a separate instance of the service is created for each insta
|
||||
|
||||
> Please consider not using module-level services because it can increase memory usage for projects with many modules.
|
||||
>
|
||||
{type="note"}
|
||||
{style="note"}
|
||||
|
||||
#### Constructor
|
||||
|
||||
@ -29,13 +29,13 @@ To improve startup performance, avoid any heavy initializations in the construct
|
||||
> Please note that using constructor injection of dependency services is deprecated (and not supported in [Light Services](#light-services)) for performance reasons.
|
||||
> Other dependencies should be [acquired only when needed](#retrieving-a-service) in all corresponding methods (see `someServiceMethod()` in [Project Service Sample](#project-service-sample)).
|
||||
>
|
||||
{type="note"}
|
||||
{style="note"}
|
||||
|
||||
## Light Services
|
||||
|
||||
> Light Services are available since IntelliJ Platform 2019.3.
|
||||
>
|
||||
{type="note"}
|
||||
{style="note"}
|
||||
|
||||
A service not going to be overridden does not need to be registered in <path>[plugin.xml](plugin_configuration_file.md)</path> (see [Declaring a Service](#declaring-a-service)).
|
||||
Instead, annotate service class with [`@Service`](%gh-ic%/platform/core-api/src/com/intellij/openapi/components/Service.java).
|
||||
@ -79,7 +79,7 @@ To provide custom implementation for test/headless environment, specify `testSer
|
||||
|
||||
> If declared services are intended to be used by other plugins depending on your plugin, consider [bundling their sources](bundling_plugin_openapi_sources.md) in the plugin distribution.
|
||||
>
|
||||
{type="note"}
|
||||
{style="note"}
|
||||
|
||||
## Retrieving a Service
|
||||
|
||||
@ -119,7 +119,7 @@ val projectService = project.service<MyProjectService>()
|
||||
|
||||
</tabs>
|
||||
|
||||
<procedure title="Getting Service Flow" initial-collapse-state="collapsed">
|
||||
<procedure title="Getting Service Flow" collapsible="true" default-state="collapsed">
|
||||
|
||||
{thumbnail="true" thumbnail-same-file="true"}
|
||||
|
||||
|
@ -15,7 +15,6 @@ The most common types of plugins include:
|
||||
|
||||
> In some cases, implementing an actual IntelliJ Platform plugin might not be necessary, as [alternative solutions](plugin_alternatives.md) exist.
|
||||
>
|
||||
{type="tip"}
|
||||
|
||||
## Custom Language Support
|
||||
|
||||
|
@ -9,7 +9,7 @@ It will familiarize you with the working environment, project structure, and fre
|
||||
* [](plugin_required_experience.md)
|
||||
* [](plugin_types.md)
|
||||
* [](developing_plugins.md)
|
||||
* [](plugin_structure.md)
|
||||
* [](plugin_structure.topic)
|
||||
* [Implementing Plugin in Kotlin](using_kotlin.md)
|
||||
* [](plugin_signing.md)
|
||||
* [](ide_development_instance.md)
|
||||
@ -17,4 +17,4 @@ It will familiarize you with the working environment, project structure, and fre
|
||||
|
||||
> If you are interested in the UI theme development, please see [Part X - Themes](themes_getting_started.md).
|
||||
>
|
||||
{type="note"}
|
||||
{style="note"}
|
||||
|
@ -10,7 +10,7 @@ The project structure and Java classes available to manage projects and modules
|
||||
> Internal changes related to a significant redesign of the representation of project models are included in 2020.3 release; please see [blog post](https://blog.jetbrains.com/platform/2020/10/new-implementation-of-project-model-interfaces-in-2020-3/) for details.
|
||||
> This shouldn't affect any plugins using the IntelliJ API properly and which don't access internal classes.
|
||||
>
|
||||
{type="note"}
|
||||
{style="note"}
|
||||
|
||||
## Project and Its Components
|
||||
This section briefly discusses the IDEA project structure, project components, and related terms.
|
||||
|
@ -2,11 +2,11 @@
|
||||
|
||||
<!-- Copyright 2000-2022 JetBrains s.r.o. and other contributors. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. -->
|
||||
|
||||
<microformat>
|
||||
<tldr>
|
||||
|
||||
**Product Help:** [Project tool window](https://www.jetbrains.com/help/idea/project-tool-window.html)
|
||||
|
||||
</microformat>
|
||||
</tldr>
|
||||
|
||||
* [](tree_structure_view.md)
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
<!-- Copyright 2000-2022 JetBrains s.r.o. and other contributors. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. -->
|
||||
|
||||
<excerpt rel="excerpt"/>
|
||||
<link-summary rel="excerpt"/>
|
||||
<p id="excerpt">
|
||||
This page gives recipes for the most common operations for working with the PSI (Program Structure Interface).
|
||||
</p>
|
||||
@ -11,7 +11,6 @@ Unlike [Developing Custom Language Plugins](custom_language_support.md), it is a
|
||||
|
||||
> Please see also [](psi_performance.md).
|
||||
>
|
||||
{type="tip"}
|
||||
|
||||
## General
|
||||
|
||||
@ -36,7 +35,7 @@ Unlike [Developing Custom Language Plugins](custom_language_support.md), it is a
|
||||
> If your plugin depends on Java functionality and targets 2019.2 or later, please make sure to follow the steps from this [blog post](https://blog.jetbrains.com/platform/2019/06/java-functionality-extracted-as-a-plugin/).
|
||||
> Also consider using [UAST](uast.md) if your plugin supports other JVM languages.
|
||||
>
|
||||
{type="note"}
|
||||
{style="note"}
|
||||
|
||||
### How do I find all inheritors of a class?
|
||||
|
||||
|
@ -2,11 +2,11 @@
|
||||
|
||||
<!-- Copyright 2000-2022 JetBrains s.r.o. and other contributors. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. -->
|
||||
|
||||
<microformat>
|
||||
<tldr>
|
||||
|
||||
**Product Help:** [Run/Debug Configuration](https://www.jetbrains.com/idea/help/run-debug-configuration.html)
|
||||
|
||||
</microformat>
|
||||
</tldr>
|
||||
|
||||
This document describes the primary classes to work with run configurations and everyday use cases.
|
||||
|
||||
|
@ -2,11 +2,11 @@
|
||||
|
||||
<!-- Copyright 2000-2022 JetBrains s.r.o. and other contributors. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. -->
|
||||
|
||||
<microformat>
|
||||
<tldr>
|
||||
|
||||
**Product Help:** [Settings/Preferences](https://www.jetbrains.com/help/idea/settings-preferences-dialog.html), [Configuring the IDE](https://www.jetbrains.com/help/idea/configuring-project-and-ide-settings.html)
|
||||
|
||||
</microformat>
|
||||
</tldr>
|
||||
|
||||
Settings are but one application of the IntelliJ Platform [Persistence Model](persistence.md).
|
||||
For more information, see:
|
||||
@ -18,4 +18,4 @@ For more information, see:
|
||||
>
|
||||
> Please be specific about the topics and reasons for adding them, and leave your email in case we need more details.
|
||||
>
|
||||
{type="note"}
|
||||
{style="note"}
|
||||
|
@ -14,7 +14,7 @@ Light and heavy tests use different base classes or fixture classes, as describe
|
||||
|
||||
> Because of the performance difference, we recommend plugin developers to write *light* tests whenever possible.
|
||||
>
|
||||
{type="note"}
|
||||
{style="note"}
|
||||
|
||||
## Light Tests
|
||||
|
||||
@ -36,11 +36,11 @@ Before executing each test, the project instance will be reused if the test case
|
||||
|
||||
> If you need to set up a multi-module project for your tests, you **must** write a heavy test.
|
||||
>
|
||||
{type="note"}
|
||||
{style="note"}
|
||||
|
||||
> In 2019.3, `PlatformTestCase` has been renamed to [`HeavyPlatformTestCase`](%gh-ic%/platform/testFramework/src/com/intellij/testFramework/HeavyPlatformTestCase.java) reflecting its "heavy test" characteristics.
|
||||
>
|
||||
{type="note"}
|
||||
{style="note"}
|
||||
|
||||
The setup code for a multi-module Java project looks something like that:
|
||||
|
||||
|
@ -11,7 +11,7 @@ The test project files exist either in a temporary directory or in an in-memory
|
||||
> If your tests use the in-memory implementation, and you abort the execution of your tests, the persisted filesystem caches may get out of sync with the in-memory structures, and you may get spurious errors in your tests.
|
||||
> If you get an unexpected error after a series of successful runs, **try rerunning the test**, and if that doesn't help, **delete the "system" subdirectory** in your [sandbox directory](ide_development_instance.md#the-development-instance-sandbox-directory).
|
||||
>
|
||||
{type="warning"}
|
||||
{style="warning"}
|
||||
|
||||
## Testdata Files
|
||||
|
||||
@ -26,11 +26,11 @@ The default implementation assumes running as part of the IntelliJ Platform sour
|
||||
> This allows us to reuse most of the code between different test methods that test various aspects of the same feature, and this approach is also recommended for third-party plugin tests.
|
||||
> The name of the test method can be retrieved using `UsefulTestCase.getTestName()`.
|
||||
>
|
||||
{type="note"}
|
||||
{style="note"}
|
||||
|
||||
> If your plugin builds on top of Java support, please see [](testing_faq.md#how-to-test-a-jvm-language) to set up your test environment to obtain the required _Mock JDK_ automatically.
|
||||
>
|
||||
{type="note"}
|
||||
{style="note"}
|
||||
|
||||
To copy files or directories from your <path>testdata</path> directory to the test project directory, you can use the `copyFileToProject()` and `copyDirectoryToProject()` methods from [`CodeInsightTestFixture`](%gh-ic%/platform/testFramework/src/com/intellij/testFramework/fixtures/CodeInsightTestFixture.java).
|
||||
|
||||
@ -44,7 +44,6 @@ These methods copy the specified files from the <path>testdata</path> directory
|
||||
|
||||
> The IDE supports smart navigation between test code and related test data file(s); see this [blog post](https://blog.jetbrains.com/platform/2017/10/improvements-in-testing-intellij-platform-plugins/) for more details.
|
||||
>
|
||||
{type="tip"}
|
||||
|
||||
### Special Markup
|
||||
When a file is opened in the in-memory editor, special markup in the file content can specify the caret position or selection.
|
||||
|
@ -168,4 +168,4 @@ PsiTestUtil.addLibrary(model,
|
||||
>
|
||||
> Please be specific about the topics and reasons for adding them, and leave your email in case we need more details.
|
||||
>
|
||||
{type="note"}
|
||||
{style="note"}
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user