diff --git a/topics/appendix/tools/gradle_intellij_plugin/tools_gradle_intellij_plugin_faq.md b/topics/appendix/tools/gradle_intellij_plugin/tools_gradle_intellij_plugin_faq.md index 73dc56464..88c4421dd 100644 --- a/topics/appendix/tools/gradle_intellij_plugin/tools_gradle_intellij_plugin_faq.md +++ b/topics/appendix/tools/gradle_intellij_plugin/tools_gradle_intellij_plugin_faq.md @@ -178,7 +178,7 @@ See the [](bundling_plugin_openapi_sources.md) section for details. ### The Plugin Verifier download directory is set to [...], but downloaded IDEs were also found in [...] With the `1.10.0` release, the [`runPluginVerifier`](tools_gradle_intellij_plugin.md#tasks-runpluginverifier) task uses the `XDG_CACHE_HOME` environment variable (see [XDG Base Directory](https://wiki.archlinux.org/title/XDG_Base_Directory) for more details) to resolve the default directory for downloaded IDEs – instead of the user's home directory. -We recommend moving your existing IDEs stored i.e., in ~/.pluginVerifier/ides/ directory into $XDG_CACHE_HOME/pluginVerifier/ides to avoid downloading them once again. +We recommend moving your existing IDEs stored i.e., in ~/.pluginVerifier/ides/ directory into \$XDG_CACHE_HOME\$/pluginVerifier/ides to avoid downloading them once again. In case you want to keep the downloaded archives in the previous location, specify the given path explicitly to the [`runPluginVerifier.downloadDir`](tools_gradle_intellij_plugin.md#tasks-runpluginverifier-downloaddir) property: diff --git a/topics/appendix/tools/intellij_platform_gradle_plugin/tools_intellij_platform_gradle_plugin_dependencies_extension.md b/topics/appendix/tools/intellij_platform_gradle_plugin/tools_intellij_platform_gradle_plugin_dependencies_extension.md index 7b9599b79..bc0ff56c2 100644 --- a/topics/appendix/tools/intellij_platform_gradle_plugin/tools_intellij_platform_gradle_plugin_dependencies_extension.md +++ b/topics/appendix/tools/intellij_platform_gradle_plugin/tools_intellij_platform_gradle_plugin_dependencies_extension.md @@ -135,7 +135,7 @@ The provided `testFramework(type, version)` helper method makes it possible to |--------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------| | `testFramework(type, version)` | Adds a dependency on Test Framework or its variant using [`TestFrameworkType`](tools_intellij_platform_gradle_plugin_types.md#TestFrameworkType) type. | -> In rare cases, when the presence of a bundled $PLATFORM_PATH$/lib/testFramework.jar library is necessary (like in the case of [Rider](rider.md), as its `test-framework` is not published as an artifact), +> In rare cases, when the presence of a bundled \$PLATFORM_PATH\$/lib/testFramework.jar library is necessary (like in the case of [Rider](rider.md), as its `test-framework` is not published as an artifact), > it is possible to attach it by using the [`TestFrameworkType.Platform.Bundled`](tools_intellij_platform_gradle_plugin_types.md#TestFrameworkType) type. {style="warning"} diff --git a/topics/basics/basic_action_system.md b/topics/basics/basic_action_system.md index 2cf1ad62b..b4ca8c82b 100644 --- a/topics/basics/basic_action_system.md +++ b/topics/basics/basic_action_system.md @@ -226,7 +226,7 @@ To exclude a group from appearing in Help | Find Action resul > to highlight such problems. > -Action and group localization use resource bundles containing property files named $NAME$Bundle.properties, each file consisting of `key=value` pairs. +Action and group localization use resource bundles containing property files named \$NAME\$Bundle.properties, each file consisting of `key=value` pairs. The [`action_basics`](%gh-sdk-samples-master%/action_basics) plugin demonstrates using a resource bundle to localize the group and action entries added to the Editor Popup Menu. When localizing actions and groups, the `text` and `description` attributes are not declared in plugin.xml. diff --git a/topics/basics/getting_started/theme/creating_theme_project.md b/topics/basics/getting_started/theme/creating_theme_project.md index 76d61bbb7..9fb4f4f9c 100644 --- a/topics/basics/getting_started/theme/creating_theme_project.md +++ b/topics/basics/getting_started/theme/creating_theme_project.md @@ -74,7 +74,7 @@ The wizard can be used for both DevKit-based and Gradle-based plugins. It is a good practice to include the name of the plugin in the created theme name. 3. Check the Dark theme checkbox if the created theme should be based on IntelliJ IDEA _Darcula_ theme. Otherwise, the _Light_ theme will be used as the base. -4. Click OK button to generate the [theme description file](themes_customize.md#introduction-to-theme-description-file-syntax) with $THEME_NAME$.theme.json name. The generated theme will be automatically configured in the plugin.xml file. +4. Click OK button to generate the [theme description file](themes_customize.md#introduction-to-theme-description-file-syntax) with \$THEME_NAME\$.theme.json name. The generated theme will be automatically configured in the plugin.xml file. diff --git a/topics/basics/getting_started/theme/deploying_theme.md b/topics/basics/getting_started/theme/deploying_theme.md index 268f9b187..4d73cddeb 100644 --- a/topics/basics/getting_started/theme/deploying_theme.md +++ b/topics/basics/getting_started/theme/deploying_theme.md @@ -1,4 +1,4 @@ - + # Deploying a Theme @@ -10,8 +10,8 @@ The deployment process prepares the plugin artifact that can be installed in IDE -1. Build the theme by invoking Build | Build Project or Build | Build Module $MODULE_NAME$. -2. Create the deployment artifact by invoking Build | Prepare Plugin Module $MODULE_NAME$ for Deployment. +1. Build the theme by invoking Build | Build Project or Build | Build Module \$MODULE_NAME\$. +2. Create the deployment artifact by invoking Build | Prepare Plugin Module \$MODULE_NAME\$ for Deployment. The resulting theme JAR file will be created in the project or module directory. diff --git a/topics/basics/getting_started/theme/theme_structure.md b/topics/basics/getting_started/theme/theme_structure.md index e0a9bdf46..0a150d10e 100644 --- a/topics/basics/getting_started/theme/theme_structure.md +++ b/topics/basics/getting_started/theme/theme_structure.md @@ -37,7 +37,7 @@ The content of the default file generated with the [Theme wizard](creating_theme } ``` -* `name` key matches the first portion of the Theme description $THEME_NAME$.theme.json file name. The value of `name` is displayed in the [Theme](https://www.jetbrains.com/help/idea/settings-appearance.html) Settings dropdown when the theme's plugin is installed in the IDE. +* `name` key matches the first portion of the Theme description \$THEME_NAME\$.theme.json file name. The value of `name` is displayed in the [Theme](https://www.jetbrains.com/help/idea/settings-appearance.html) Settings dropdown when the theme's plugin is installed in the IDE. * `author` - specifies the theme author (empty by default). * `dark` - determines the base theme (_Light_ or _Darcula_) that is customized. * `editorScheme` - specifies the editor scheme file that describes fonts and colors used in editors (see [](themes_extras.md#adding-a-custom-editor-scheme) for more details). diff --git a/topics/basics/ide_development_instance.md b/topics/basics/ide_development_instance.md index f023ea4f1..8ec7b9cee 100644 --- a/topics/basics/ide_development_instance.md +++ b/topics/basics/ide_development_instance.md @@ -1,6 +1,6 @@ -# IDE Development Instance + - +# IDE Development Instance Overview of IDE instance used for running and debugging a plugin during development. @@ -123,8 +123,8 @@ This information is stored in a different location than for the [installed IDE i The default Sandbox Home location in a plugin Gradle project is: -* Windows: $PROJECT_DIRECTORY$\\build\\idea-sandbox -* Linux/macOS: $PROJECT_DIRECTORY$/build/idea-sandbox +* Windows: \$PROJECT_DIRECTORY\$\\build\\idea-sandbox +* Linux/macOS: \$PROJECT_DIRECTORY\$/build/idea-sandbox The Sandbox Home location can be configured with the [`intellij.sandboxDir`](tools_gradle_intellij_plugin.md#intellij-extension-sandboxdir) property. @@ -136,9 +136,9 @@ For DevKit-based plugins, the default Sandbox Home location i See the [Setting Up a Theme Development Environment](setting_up_theme_environment.md#add-intellij-platform-plugin-sdk) for information about how to set up Sandbox Home in IntelliJ Platform SDK. The default Sandbox Home directory location is: -* Windows: $USER_HOME$\\.$PRODUCT_SYSTEM_NAME$$PRODUCT_VERSION$\\system\\plugins-sandbox\\ -* Linux: ~/.$PRODUCT_SYSTEM_NAME$$PRODUCT_VERSION$/system/plugins-sandbox/ -* macOS: ~/Library/Caches/$PRODUCT_SYSTEM_NAME$$PRODUCT_VERSION$/plugins-sandbox/ +* Windows: \$USER_HOME\$\\.\$PRODUCT_SYSTEM_NAME\$\$PRODUCT_VERSION\$\\system\\plugins-sandbox\\ +* Linux: ~/.\$PRODUCT_SYSTEM_NAME\$\$PRODUCT_VERSION\$/system/plugins-sandbox/ +* macOS: ~/Library/Caches/\$PRODUCT_SYSTEM_NAME\$\$PRODUCT_VERSION\$/plugins-sandbox/ diff --git a/topics/basics/plugin_structure/plugin_dependencies.md b/topics/basics/plugin_structure/plugin_dependencies.md index ed15c91b5..05d06df36 100644 --- a/topics/basics/plugin_structure/plugin_dependencies.md +++ b/topics/basics/plugin_structure/plugin_dependencies.md @@ -58,7 +58,7 @@ For [](tools_intellij_platform_gradle_plugin.md), use [`printBundledPlugins`](to When using [DevKit](developing_themes.md) and for non-public plugins, locate the plugin's main JAR file containing META-INF/plugin.xml descriptor with [``](plugin_configuration_file.md#idea-plugin__id) tag (or [``](plugin_configuration_file.md#idea-plugin__name) if not specified). -Bundled plugins are located in $PRODUCT_ROOT$/plugins/$PLUGIN_NAME$/lib/$PLUGIN_NAME$.jar. +Bundled plugins are located in \$PRODUCT_ROOT\$/plugins/\$PLUGIN_NAME\$/lib/\$PLUGIN_NAME\$.jar. diff --git a/topics/basics/testing_plugins/testing_faq.md b/topics/basics/testing_plugins/testing_faq.md index cdf24620e..beed61234 100644 --- a/topics/basics/testing_plugins/testing_faq.md +++ b/topics/basics/testing_plugins/testing_faq.md @@ -1,4 +1,4 @@ - + # Testing FAQ @@ -168,7 +168,7 @@ Use [`WaitFor`](%gh-ic%/platform/util/src/com/intellij/util/WaitFor.java). ### How to test a JVM language? Plugins supporting a JVM language may require JDK and language standard library to be set up in a test project, so that classes like `java.lang.String` can be correctly resolved during tests. -Tests extending [`LightJavaCodeInsightFixtureTestCase`](%gh-ic%/java/testFramework/src/com/intellij/testFramework/fixtures/LightJavaCodeInsightFixtureTestCase.java) use one of the mock JDKs distributed with the [IntelliJ Community project](https://github.com/JetBrains/intellij-community) sources (notice java/mockJDK-$JAVA_VERSION$ directories). +Tests extending [`LightJavaCodeInsightFixtureTestCase`](%gh-ic%/java/testFramework/src/com/intellij/testFramework/fixtures/LightJavaCodeInsightFixtureTestCase.java) use one of the mock JDKs distributed with the [IntelliJ Community project](https://github.com/JetBrains/intellij-community) sources (notice java/mockJDK-\$JAVA_VERSION\$ directories). These JAR files are not available in plugin project dependencies, so the IntelliJ Community sources must be checked out to the machine running the tests, and sources' location must be provided to the test framework. It's done by setting the `idea.home.path` system property to the absolute path of the checked-out sources in the `test` task configuration: diff --git a/topics/intro/sdk_style.md b/topics/intro/sdk_style.md index abc118bef..093539b9d 100644 --- a/topics/intro/sdk_style.md +++ b/topics/intro/sdk_style.md @@ -94,6 +94,7 @@ Consistent text styles are used to standardize references and keywords: * Filenames are wrapped using ``: `build.gradle.kts` build.gradle.kts. * File formats are shown as all capital letters: PNG and XML. * Filename extensions are not capitalized when part of a full filename, path, or URL: plugin.xml. +* When using \$PLACEHOLDER\$ in non-code parts, it must be escaped: `\$PLACEHOLDER\$/somePath`. * Keyboard shortcuts are wrapped using ``: `press Alt+Insert` becomes "press Alt+Insert". * See [Guidelines for Highlighting Syntax](#guidelines-for-highlighting-syntax) for best practices for representing code fragments. * See [Links to IntelliJ Platform Source](#links-to-intellij-platform-source) for more details about representing names of source files in links. diff --git a/topics/products/appcode/app_code.md b/topics/products/appcode/app_code.md index bbc440a68..620126692 100644 --- a/topics/products/appcode/app_code.md +++ b/topics/products/appcode/app_code.md @@ -1,4 +1,4 @@ - + # AppCode Plugin Development @@ -37,10 +37,10 @@ Instead, configure AppCode plugin projects to use the [`intellij.localPath`](too The table below summarizes the [](tools_gradle_intellij_plugin.md) attributes to set in the plugin project's Gradle build script. Click on an entry in the table's *Attribute* column to go to the documentation about that attribute. -| `gradle-intellij-plugin` Attribute | Attribute Value | -|--------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| [`intellij.localPath`](tools_gradle_intellij_plugin.md#intellij-extension-localpath) |

Path to locally installed target version of AppCode. For example, for macOS:

/Users/$USERNAME$/Library/Application Support/JetBrains/Toolbox/apps/AppCode/ch-0/193.5662.55/AppCode.app/Contents.

| -| [`runIde.ideDir`](tools_gradle_intellij_plugin.md#tasks-runide-idedir) |

Path to locally installed target version of AppCode. For example, for macOS:

/Users/$USERNAME$/Library/Application Support/JetBrains/Toolbox/apps/AppCode/ch-0/193.5662.55/AppCode.app/Contents.

| +| `gradle-intellij-plugin` Attribute | Attribute Value | +|--------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| [`intellij.localPath`](tools_gradle_intellij_plugin.md#intellij-extension-localpath) |

Path to locally installed target version of AppCode. For example, for macOS:

/Users/\$USERNAME\$/Library/Application Support/JetBrains/Toolbox/apps/AppCode/ch-0/193.5662.55/AppCode.app/Contents.

| +| [`runIde.ideDir`](tools_gradle_intellij_plugin.md#tasks-runide-idedir) |

Path to locally installed target version of AppCode. For example, for macOS:

/Users/\$USERNAME\$/Library/Application Support/JetBrains/Toolbox/apps/AppCode/ch-0/193.5662.55/AppCode.app/Contents.

| The dependency on the AppCode APIs must be declared in the [plugin.xml](plugin_configuration_file.md) file. As described in [Modules Specific to Functionality](plugin_compatibility.md#modules-specific-to-functionality) table, the [``](plugin_configuration_file.md#idea-plugin__depends) tags must declare `com.intellij.modules.appcode` module dependency, or `com.intellij.appcode` plugin dependency for plugins targeting only versions 2020.3+. diff --git a/topics/products/datagrip/data_grip.md b/topics/products/datagrip/data_grip.md index 457696d01..73e73b0ed 100644 --- a/topics/products/datagrip/data_grip.md +++ b/topics/products/datagrip/data_grip.md @@ -1,4 +1,4 @@ - + # DataGrip Plugin Development @@ -20,12 +20,12 @@ The table below summarizes the [](tools_gradle_intellij_plugin.md) attributes to Click on an entry in the table's *Attribute* column to go to the documentation about that attribute. To see how these attributes appear in a similar Gradle build script for PhpStorm, see [](dev_alternate_products.md#configuring-gradle-build-script-using-the-intellij-idea-product-attribute). -| `gradle-intellij-plugin` Attribute | Attribute Value | -|----------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| [`intellij.type`](tools_gradle_intellij_plugin.md#intellij-extension-type) |

`IU` for IntelliJ IDEA Ultimate.

_`IC` is incompatible with the required `DatabaseTools` plugin._

| -| [`intellij.version`](tools_gradle_intellij_plugin.md#intellij-extension-version) | `2019.3` Set to the same version as the DataGrip target version, as set by `runIde.ideDir`. | -| [`intellij.plugins`](tools_gradle_intellij_plugin.md#intellij-extension-plugins) | `DatabaseTools` Dependency on the bundled `DatabaseTools` plugin. | -| [`runIde.ideDir`](tools_gradle_intellij_plugin.md#tasks-runide-idedir) |

Path to locally installed target version of DataGrip. For example, for macOS:

/Users/$USERNAME$/Library/Application Support/JetBrains/Toolbox/apps/datagrip/ch-0/193.5233.139/DataGrip.app/Contents.

| +| `gradle-intellij-plugin` Attribute | Attribute Value | +|----------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| [`intellij.type`](tools_gradle_intellij_plugin.md#intellij-extension-type) |

`IU` for IntelliJ IDEA Ultimate.

_`IC` is incompatible with the required `DatabaseTools` plugin._

| +| [`intellij.version`](tools_gradle_intellij_plugin.md#intellij-extension-version) | `2019.3` Set to the same version as the DataGrip target version, as set by `runIde.ideDir`. | +| [`intellij.plugins`](tools_gradle_intellij_plugin.md#intellij-extension-plugins) | `DatabaseTools` Dependency on the bundled `DatabaseTools` plugin. | +| [`runIde.ideDir`](tools_gradle_intellij_plugin.md#tasks-runide-idedir) |

Path to locally installed target version of DataGrip. For example, for macOS:

/Users/\$USERNAME\$/Library/Application Support/JetBrains/Toolbox/apps/datagrip/ch-0/193.5233.139/DataGrip.app/Contents.

| The dependency on the DataGrip APIs must be declared in the [plugin.xml](plugin_configuration_file.md) file. As described in [Modules Specific to Functionality](plugin_compatibility.md#modules-specific-to-functionality) table, the [``](plugin_configuration_file.md#idea-plugin__depends) tags must declare `com.intellij.database`. diff --git a/topics/products/goland/goland.md b/topics/products/goland/goland.md index 437624262..5a9187d19 100644 --- a/topics/products/goland/goland.md +++ b/topics/products/goland/goland.md @@ -66,12 +66,12 @@ To see how these attributes appear in a similar Gradle build script for PhpStorm The Go plugin version is explicitly declared because it isn't bundled with IntelliJ IDEA Ultimate Edition. Select a [version](https://plugins.jetbrains.com/plugin/9568-go/versions) of the Go plugin compatible with the IntelliJ Idea Ultimate version. -| Gradle IntelliJ Plugin Attribute | Attribute Value | -|----------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| [`intellij.type`](tools_gradle_intellij_plugin.md#intellij-extension-type) | `IU` for IntelliJ IDEA Ultimate. The Go plugin isn't compatible with IntelliJ IDEA Community Edition. | -| [`intellij.version`](tools_gradle_intellij_plugin.md#intellij-extension-version) | Set to the same `IU` BRANCH.BUILD as the GoLand target version, e.g. `193.5233.102`. | -| [`intellij.plugins`](tools_gradle_intellij_plugin.md#intellij-extension-plugins) |

`org.jetbrains.plugins.go:193.5233.102.83` for the Go plugin.

See below for Go plugin version information.

| -| [`runIde.ideDir`](tools_gradle_intellij_plugin.md#tasks-runide-idedir) |

Path to locally installed target version of GoLand. For example, on macOS:

/Users/$USERNAME$/Library/Application Support/JetBrains/Toolbox/apps/Goland/ch-0/193.5233.112/GoLand.app/Contents.

| +| Gradle IntelliJ Plugin Attribute | Attribute Value | +|----------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| [`intellij.type`](tools_gradle_intellij_plugin.md#intellij-extension-type) | `IU` for IntelliJ IDEA Ultimate. The Go plugin isn't compatible with IntelliJ IDEA Community Edition. | +| [`intellij.version`](tools_gradle_intellij_plugin.md#intellij-extension-version) | Set to the same `IU` BRANCH.BUILD as the GoLand target version, e.g. `193.5233.102`. | +| [`intellij.plugins`](tools_gradle_intellij_plugin.md#intellij-extension-plugins) |

`org.jetbrains.plugins.go:193.5233.102.83` for the Go plugin.

See below for Go plugin version information.

| +| [`runIde.ideDir`](tools_gradle_intellij_plugin.md#tasks-runide-idedir) |

Path to locally installed target version of GoLand. For example, on macOS:

/Users/\$USERNAME\$/Library/Application Support/JetBrains/Toolbox/apps/Goland/ch-0/193.5233.112/GoLand.app/Contents.

| @@ -99,7 +99,7 @@ To make the plugin compatible with GoLand and other IDEs supporting the Go langu > {style="note"} -Use the [Exploring APIs as a Consumer](plugin_compatibility.md#exploring-apis-as-a-consumer) process to identify the library intellij-go-$version$.jar, where `$version$` corresponds to the version of the Go plugin. +Use the [Exploring APIs as a Consumer](plugin_compatibility.md#exploring-apis-as-a-consumer) process to identify the library intellij-go-\$version\$.jar, where `$version$` corresponds to the version of the Go plugin. Test your plugin with any version of GoLand you intend to support. ## GoLand Test Framework diff --git a/topics/products/idea/spring_api.md b/topics/products/idea/spring_api.md index 2fea96df0..0278a9309 100644 --- a/topics/products/idea/spring_api.md +++ b/topics/products/idea/spring_api.md @@ -17,7 +17,7 @@ To develop plugins, you will need to use _IntelliJ IDEA Ultimate Edition_ versio Setup [Gradle build script](configuring_plugin_project.md#intellij-platform-configuration) to target IntelliJ IDEA Ultimate, then [add dependency](plugin_dependencies.md) to bundled Spring plugin with ID `com.intellij.spring`. -Please use only Spring-related functionality exposed in spring-api.jar (sources are provided in $IDEA_HOME$/lib/src/src_spring-boot-openapi.zip) in your plugin. +Please use only Spring-related functionality exposed in spring-api.jar (sources are provided in \$IDEA_HOME\$/lib/src/src_spring-boot-openapi.zip) in your plugin. Using any other "internal" (implementation) classes from Spring plugin itself (spring.jar) is _not_ supported. ### plugin.xml @@ -173,7 +173,7 @@ Spring Boot API allows extending/accessing Spring Boot specific support in the I ### Setting Up [Add dependency](plugin_dependencies.md) to bundled Spring Boot plugin with ID `com.intellij.spring.boot`. -Sources for Spring Boot API are available in $IDEA_HOME$/lib/src/src_spring-boot-openapi.zip. +Sources for Spring Boot API are available in \$IDEA_HOME\$/lib/src/src_spring-boot-openapi.zip. ### Update plugin.xml Add `com.intellij.spring.boot` to your [plugin.xml](plugin_configuration_file.md) to require "Spring Boot" plugin to be activated. diff --git a/topics/products/phpstorm/phpstorm.md b/topics/products/phpstorm/phpstorm.md index 9a26d1cc1..cae83c05d 100644 --- a/topics/products/phpstorm/phpstorm.md +++ b/topics/products/phpstorm/phpstorm.md @@ -1,4 +1,4 @@ - + # PhpStorm Plugin Development @@ -57,12 +57,12 @@ The table below summarizes the [](tools_gradle_intellij_plugin.md) attributes to Click on an entry in the table's *Attribute* column to go to the documentation about that attribute. To see how these attributes appear in the Gradle build script for PhpStorm, see [](dev_alternate_products.md#configuring-gradle-build-script-using-the-intellij-idea-product-attribute). -| `gradle-intellij-plugin` Attribute | Attribute Value | -|----------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| [`intellij.type`](tools_gradle_intellij_plugin.md#intellij-extension-type) | `IU` for IntelliJ IDEA Ultimate. The required PHP plugin isn't compatible with IntelliJ IDEA Community Edition. | -| [`intellij.version`](tools_gradle_intellij_plugin.md#intellij-extension-version) | Set to the same `IU` BRANCH.BUILD as the PhpStorm target version, e.g. `193.5233.102`. | -| [`intellij.plugins`](tools_gradle_intellij_plugin.md#intellij-extension-plugins) |

`com.jetbrains.php:193.5233.102` for the PHP plugin.

See below for PHP plugin version information.

| -| [`runIde.ideDir`](tools_gradle_intellij_plugin.md#tasks-runide-idedir) |

Path to locally installed target version of PhpStorm. For example, on macOS:

/Users/$USERNAME$/Library/Application Support/JetBrains/Toolbox/apps/PhpStorm/ch-0/193.5233.101/PhpStorm.app/Contents.

| +| `gradle-intellij-plugin` Attribute | Attribute Value | +|----------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| [`intellij.type`](tools_gradle_intellij_plugin.md#intellij-extension-type) | `IU` for IntelliJ IDEA Ultimate. The required PHP plugin isn't compatible with IntelliJ IDEA Community Edition. | +| [`intellij.version`](tools_gradle_intellij_plugin.md#intellij-extension-version) | Set to the same `IU` BRANCH.BUILD as the PhpStorm target version, e.g. `193.5233.102`. | +| [`intellij.plugins`](tools_gradle_intellij_plugin.md#intellij-extension-plugins) |

`com.jetbrains.php:193.5233.102` for the PHP plugin.

See below for PHP plugin version information.

| +| [`runIde.ideDir`](tools_gradle_intellij_plugin.md#tasks-runide-idedir) |

Path to locally installed target version of PhpStorm. For example, on macOS:

/Users/\$USERNAME\$/Library/Application Support/JetBrains/Toolbox/apps/PhpStorm/ch-0/193.5233.101/PhpStorm.app/Contents.

| The PHP plugin version is explicitly declared because it isn't bundled with IntelliJ IDEA Ultimate Edition. Select a [version](https://plugins.jetbrains.com/plugin/6610-php/versions) of the PHP plugin compatible with the [`intellij.version`](tools_gradle_intellij_plugin.md#intellij-extension-version). diff --git a/topics/products/rider/rider.md b/topics/products/rider/rider.md index c38ac7dcb..29d7c685a 100644 --- a/topics/products/rider/rider.md +++ b/topics/products/rider/rider.md @@ -1,4 +1,4 @@ - + # Rider Plugin Development @@ -36,7 +36,7 @@ The article is a good counterpoint to the ReSharper DevGuide content, which disc Rider plugins may introduce their own .DotSettings files with customized [ReSharper settings](https://www.jetbrains.com/help/resharper/Sharing_Configuration_Options.html). This is useful e.g. when a plugin brings its own file templates. -For the ReSharper part to pick these settings, the settings files should be available in the plugin JAR file under the path dotnet/Extensions/$backend-plugin-id$/settings, where `backend-plugin-id` is calculated according to the following rules: +For the ReSharper part to pick these settings, the settings files should be available in the plugin JAR file under the path dotnet/Extensions/\$backend-plugin-id\$/settings, where `backend-plugin-id` is calculated according to the following rules: - if the IntelliJ plugin id (the [``](plugin_configuration_file.md#idea-plugin__id) element of the [plugin.xml](plugin_configuration_file.md)) includes a dot, then `backend-plugin-id` is the same as the IntelliJ plugin id; - otherwise, the `backend-plugin-id` is a concatenation of the IntelliJ plugin vendor name (the [``](plugin_configuration_file.md#idea-plugin__vendor) element of the plugin.xml) and the IntelliJ plugin id. diff --git a/topics/products/rubymine/rubymine.md b/topics/products/rubymine/rubymine.md index 9720bb450..78c006b78 100644 --- a/topics/products/rubymine/rubymine.md +++ b/topics/products/rubymine/rubymine.md @@ -1,4 +1,4 @@ - + # RubyMine Plugin Development @@ -21,12 +21,12 @@ The table below summarizes the [](tools_gradle_intellij_plugin.md) attributes to Click on an entry in the table's *Attribute* column to go to the documentation about that attribute. To see how these attributes appear in a similar Gradle build script for PhpStorm, see [](dev_alternate_products.md#configuring-gradle-build-script-using-the-intellij-idea-product-attribute). -| `gradle-intellij-plugin` Attribute | Attribute Value | -|----------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| [`intellij.type`](tools_gradle_intellij_plugin.md#intellij-extension-type) | `IU` for IntelliJ IDEA Ultimate. | -| [`intellij.version`](tools_gradle_intellij_plugin.md#intellij-extension-version) | Set to the same `IU` BRANCH.BUILD as the RubyMine target version, e.g. `192.7142.36`. | -| [`intellij.plugins`](tools_gradle_intellij_plugin.md#intellij-extension-plugins) |

`org.jetbrains.plugins.ruby:2019.2.20191029` for the Ruby plugin.

See below for Ruby plugin version information.

| -| [`runIde.ideDir`](tools_gradle_intellij_plugin.md#tasks-runide-idedir) |

Path to locally installed target version of RubyMine. For example, on macOS:

/Users/$USERNAME$/Library/Application Support/JetBrains/Toolbox/apps/RubyMine/ch-0/192.7142.37/RubyMine.app/Contents.

| +| `gradle-intellij-plugin` Attribute | Attribute Value | +|----------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| [`intellij.type`](tools_gradle_intellij_plugin.md#intellij-extension-type) | `IU` for IntelliJ IDEA Ultimate. | +| [`intellij.version`](tools_gradle_intellij_plugin.md#intellij-extension-version) | Set to the same `IU` BRANCH.BUILD as the RubyMine target version, e.g. `192.7142.36`. | +| [`intellij.plugins`](tools_gradle_intellij_plugin.md#intellij-extension-plugins) |

`org.jetbrains.plugins.ruby:2019.2.20191029` for the Ruby plugin.

See below for Ruby plugin version information.

| +| [`runIde.ideDir`](tools_gradle_intellij_plugin.md#tasks-runide-idedir) |

Path to locally installed target version of RubyMine. For example, on macOS:

/Users/\$USERNAME\$/Library/Application Support/JetBrains/Toolbox/apps/RubyMine/ch-0/192.7142.37/RubyMine.app/Contents.

| The required `org.jetbrains.plugins.ruby` plugin isn't compatible with IntelliJ IDEA Community edition but is compatible with IntelliJ IDEA Ultimate (`IU`) edition. Product compatibility is determined from the Ruby plugin [version page](https://plugins.jetbrains.com/plugin/1293-ruby/versions). diff --git a/topics/products/webstorm/webstorm.md b/topics/products/webstorm/webstorm.md index da4248e4e..57eff1c2b 100644 --- a/topics/products/webstorm/webstorm.md +++ b/topics/products/webstorm/webstorm.md @@ -26,12 +26,12 @@ The table below summarizes the [](tools_gradle_intellij_plugin.md) attributes to Click on an entry in the table's *Attribute* column to go to the documentation about that attribute. To see how these attributes appear in a similar Gradle build script for PhpStorm, see [](dev_alternate_products.md#configuring-gradle-build-script-using-the-intellij-idea-product-attribute). -| `gradle-intellij-plugin` Attribute | Attribute Value | -|----------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| [`intellij.type`](tools_gradle_intellij_plugin.md#intellij-extension-type) | `IU` for [](idea_ultimate.md). | -| [`intellij.version`](tools_gradle_intellij_plugin.md#intellij-extension-version) | `192.7142.36` Set to the same BRANCH.BUILD as the WebStorm target version. | -| [`intellij.plugins`](tools_gradle_intellij_plugin.md#intellij-extension-plugins) | Dependency on the `JavaScript` plugin. | -| [`runIde.ideDir`](tools_gradle_intellij_plugin.md#tasks-runide-idedir) |

Path to locally installed target version of WebStorm. For example, for macOS:

/Users/$USERNAME$/Library/Application Support/JetBrains/Toolbox/apps/WebStorm/ch-0/192.7142.35/WebStorm.app/Contents.

| +| `gradle-intellij-plugin` Attribute | Attribute Value | +|----------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| [`intellij.type`](tools_gradle_intellij_plugin.md#intellij-extension-type) | `IU` for [](idea_ultimate.md). | +| [`intellij.version`](tools_gradle_intellij_plugin.md#intellij-extension-version) | `192.7142.36` Set to the same BRANCH.BUILD as the WebStorm target version. | +| [`intellij.plugins`](tools_gradle_intellij_plugin.md#intellij-extension-plugins) | Dependency on the `JavaScript` plugin. | +| [`runIde.ideDir`](tools_gradle_intellij_plugin.md#tasks-runide-idedir) |

Path to locally installed target version of WebStorm. For example, for macOS:

/Users/\$USERNAME\$/Library/Application Support/JetBrains/Toolbox/apps/WebStorm/ch-0/192.7142.35/WebStorm.app/Contents.

| The dependency on the WebStorm APIs must be declared in the [plugin.xml](plugin_configuration_file.md) file. As described in [Modules Specific to Functionality](plugin_compatibility.md#modules-specific-to-functionality) table, the [``](plugin_configuration_file.md#idea-plugin__depends) tags must declare `JavaScript`. diff --git a/topics/reference_guide/frameworks_and_external_apis/external_builder_api.md b/topics/reference_guide/frameworks_and_external_apis/external_builder_api.md index b682eb6e2..64a40cf83 100644 --- a/topics/reference_guide/frameworks_and_external_apis/external_builder_api.md +++ b/topics/reference_guide/frameworks_and_external_apis/external_builder_api.md @@ -1,4 +1,4 @@ - + # External Builder API and Plugins @@ -47,7 +47,7 @@ To pass custom data between the invocation of the same builder between multiple The external builder process uses the standard Java [services](https://docs.oracle.com/javase/8/docs/api/java/util/ServiceLoader.html) mechanism to support plugins. There are several service interfaces (e.g. [`BuilderService`](%gh-ic%/jps/jps-builders/src/org/jetbrains/jps/incremental/BuilderService.java) which can be implemented in plugins to extend the builder functionality. -An implementation of a service needs to be registered by creating the META-INF/services/$service-interface-fqn$ file containing the implementation class's qualified name. +An implementation of a service needs to be registered by creating the META-INF/services/\$service-interface-fqn\$ file containing the implementation class's qualified name. E.g. `BuilderService` implementations are registered in META-INF/services/org.jetbrains.jps.incremental.BuilderService file. These files don't have extensions, so you need to map corresponding patterns to text files in IDE settings. @@ -55,7 +55,7 @@ These files don't have extensions, so you need to map corresponding patterns to Sources of a plugin for External Builder should be put in a separate module. By convention, such a module has a name '...-jps-plugin', and its sources are placed under the jps-plugin directory in the main plugin directory. -Use `com.intellij.compileServer.plugin` extension point to add the plugin to the classpath of the external build process, the plugin JAR should be named $JPS_module_name$.jar. Build | Prepare Plugin Module for Deployment action will automatically pack the 'jps-plugin' part to a separate JAR accordingly. +Use `com.intellij.compileServer.plugin` extension point to add the plugin to the classpath of the external build process, the plugin JAR should be named \$JPS_module_name\$.jar. Build | Prepare Plugin Module for Deployment action will automatically pack the 'jps-plugin' part to a separate JAR accordingly. See [IntelliJ Platform Explorer](https://jb.gg/ipe?extensions=com.intellij.compileServer.plugin) for samples. @@ -91,14 +91,14 @@ The build process has built-in self-CPU-profiling capabilities. 1. _2023.2+_ Install [YourKit Profiler for IDE Performance Testing](https://plugins.jetbrains.com/plugin/20892-yourkit-profiler-for-ide-performance-testing) plugin -2. Copy $IDE_HOME$/lib/yjp-controller-api-redist.jar and $IDE_HOME$/bin/yjpagent.* files to $IDE_SYSTEM_DIR$/compile-server +2. Copy \$IDE_HOME\$/lib/yjp-controller-api-redist.jar and \$IDE_HOME\$/bin/yjpagent.* files to \$IDE_SYSTEM_DIR\$/compile-server 3. In Settings | Build, Execution, Deployment | Compiler | Java Compiler add `-Dprofiling.mode=true` in Additional command line parameters 4. Make sure Build project automatically in Settings | Build, Execution, Deployment | Compiler is disabled -After this, every build process run should result in a CPU snapshot stored in $USER_HOME$/Snapshots directory. -Snapshots are named like ExternalBuild\-\$DATE$.snapshot. +After this, every build process run should result in a CPU snapshot stored in \$USER_HOME\$/Snapshots directory. +Snapshots are named like ExternalBuild\-\$DATE\$.snapshot. Specifying `-Dprofiling.mode=false` will turn profiling off. Please capture a couple of snapshots for the situations you believe the build should work much faster than it does. diff --git a/topics/reference_guide/icons.md b/topics/reference_guide/icons.md index 87572bc13..8f99a1060 100644 --- a/topics/reference_guide/icons.md +++ b/topics/reference_guide/icons.md @@ -230,8 +230,8 @@ This allows supporting both UI variants at the same time, depending on what the 1. Create a new expui directory in the icon root directory ([Reference](#organizing-icons)). 2. Copy all icons for the New UI into this directory. -3. Create an empty $PluginName$IconMappings.json mapping file in the resources root directory. -4. Register $PluginName$IconMappings.json in plugin.xml via the `com.intellij.iconMapper` extension point. +3. Create an empty \$PluginName\$IconMappings.json mapping file in the resources root directory. +4. Register \$PluginName\$IconMappings.json in plugin.xml via the `com.intellij.iconMapper` extension point.
@@ -243,7 +243,7 @@ This allows supporting both UI variants at the same time, depending on what the ### Mapping Entries -All New UI icons must be mapped in the $PluginName$IconMappings.json mapping file. +All New UI icons must be mapped in the \$PluginName\$IconMappings.json mapping file. For each New UI icon, add a mapping entry inside `expui` block. Each directory starts a new block containing all its entries (see linked `MavenIconMappins.json` sample from above). diff --git a/topics/reference_guide/localization/internationalization.md b/topics/reference_guide/localization/internationalization.md index 7c6bf0c24..d4193c0d0 100644 --- a/topics/reference_guide/localization/internationalization.md +++ b/topics/reference_guide/localization/internationalization.md @@ -63,7 +63,7 @@ At best, this will add unnecessary work for translators, but it is also quite po All NLS strings from a module should be added to a *.properties file. A standard location of message files in JAR is /messages/\*.properties. -In [Gradle-based plugin](developing_plugins.md#gradle-intellij-plugin) project sources, message files are located in $MODULE_ROOT$/src/main/resources/messages/\*.properties. +In [Gradle-based plugin](developing_plugins.md#gradle-intellij-plugin) project sources, message files are located in \$MODULE_ROOT\$/src/main/resources/messages/\*.properties. > A standard convention for naming message bundle properties file is *Bundle.properties. diff --git a/topics/reference_guide/localization/providing_translations.md b/topics/reference_guide/localization/providing_translations.md index 6af3364d7..2fc02dc39 100644 --- a/topics/reference_guide/localization/providing_translations.md +++ b/topics/reference_guide/localization/providing_translations.md @@ -44,7 +44,7 @@ Only a single language pack can be installed at the same time, and restart is re See the [translated elements](#translated-elements) list for the elements possible to translate. All the elements should be located in exactly the same paths as in original locations in their JAR files. -For example, if the original location of a message bundle is $PLUGIN_JAR$/messages/AbcBundle.properties, it must be located in $LANGUAGE_PACK_JAR$/messages/AbcBundle.properties. +For example, if the original location of a message bundle is \$PLUGIN_JAR\$/messages/AbcBundle.properties, it must be located in \$LANGUAGE_PACK_JAR\$/messages/AbcBundle.properties. It is allowed to organize them within [localization directories or with file name language suffixes](#bundled-translations-structure), but it is unnecessary as language pack can define only a single language. diff --git a/topics/reference_guide/project_model/library.md b/topics/reference_guide/project_model/library.md index 3e6dd15b6..9d6175adc 100644 --- a/topics/reference_guide/project_model/library.md +++ b/topics/reference_guide/project_model/library.md @@ -15,7 +15,7 @@ A library is an archive of compiled code (such as JAR files) that modules depend The IntelliJ Platform supports three types of libraries: * **Module Library**: the library classes are visible only in this module and the library information is recorded in the module .iml file. * **Project Library**: the library classes are visible within the project and the library information is recorded under .idea/libraries directory or in the project .ipr file. -* **Global Library**: the library information is recorded in the applicationLibraries.xml file in $USER_HOME$/.IntelliJIdea/config/options directory. Global libraries are similar to project libraries, but are visible for different projects. +* **Global Library**: the library information is recorded in the applicationLibraries.xml file in \$USER_HOME\$/.IntelliJIdea/config/options directory. Global libraries are similar to project libraries, but are visible for different projects. A particular type of programmatically defined libraries is [Predefined Libraries](#predefined-libraries). diff --git a/topics/reference_guide/project_model/project.md b/topics/reference_guide/project_model/project.md index 97d7ac228..97acac20f 100644 --- a/topics/reference_guide/project_model/project.md +++ b/topics/reference_guide/project_model/project.md @@ -15,11 +15,11 @@ The IntelliJ Platform stores the project configuration data in XML files. The list of those files depends on the chosen [project format](https://www.jetbrains.com/help/idea/creating-and-managing-projects.html#project-formats). -For file-based format projects (legacy), the information core to the project itself (e.g., location of the component modules, compiler settings, etc.) is stored in the $project_name$.ipr file. -The information about modules the project includes is stored in $module_name$.iml files. +For file-based format projects (legacy), the information core to the project itself (e.g., location of the component modules, compiler settings, etc.) is stored in the \$project_name\$.ipr file. +The information about modules the project includes is stored in \$module_name\$.iml files. Module files are created for each module. -For directory-based format projects, the project and workspace settings are stored in a number of XML files under the $project_home_directory$/.idea directory. +For directory-based format projects, the project and workspace settings are stored in a number of XML files under the \$project_home_directory\$/.idea directory. Each XML file is responsible for its own set of settings and can be recognized by its name: projectCodeStyle.xml, encodings.xml, vcs.xml etc. As for the file-based format projects, .iml files describe modules. diff --git a/topics/tutorials/build_system/creating_plugin_project.md b/topics/tutorials/build_system/creating_plugin_project.md index 9b63fa1e7..4b594e628 100644 --- a/topics/tutorials/build_system/creating_plugin_project.md +++ b/topics/tutorials/build_system/creating_plugin_project.md @@ -22,9 +22,9 @@ Launch the New Project wizard via the File | New | P For this example select the Kotlin option. See also [Kotlin for Plugin Developers](using_kotlin.md) for more information. - > Projects generated with IntelliJ IDEA 2023.1 or newer, support both Kotlin and Java sources out of the box. - > Project generator automatically creates $PLUGIN_DIR$/src/main/kotlin sources directory. - > To add Java sources, create $PLUGIN_DIR$/src/main/java directory. + > Projects generated with IntelliJ IDEA 2023.1 or newer support both Kotlin and Java sources out of the box. + > Project generator automatically creates \$PLUGIN_DIR\$/src/main/kotlin sources directory. + > To add Java sources, create \$PLUGIN_DIR\$/src/main/java directory. > {style="note"} diff --git a/topics/tutorials/code_inspections.md b/topics/tutorials/code_inspections.md index 78eae6602..3ddc90247 100644 --- a/topics/tutorials/code_inspections.md +++ b/topics/tutorials/code_inspections.md @@ -116,9 +116,9 @@ See the [Inspections](inspections.md) topic in UI Guidelines on important guidel Implicit in using [`LocalInspectionTool`](%gh-ic%/platform/analysis-api/src/com/intellij/codeInspection/LocalInspectionTool.java) in the class hierarchy of the inspection implementation means following some conventions. -* The inspection description file is expected to be located under $RESOURCES_ROOT_DIRECTORY$/inspectionDescriptions/. +* The inspection description file is expected to be located under \$RESOURCES_ROOT_DIRECTORY\$/inspectionDescriptions/. If the inspection description file is to be located elsewhere, override `getDescriptionUrl()` in the inspection implementation class. -* The name of the description file is expected to be the inspection $SHORT_NAME$.html as provided by the inspection description, or the inspection implementation class. +* The name of the description file is expected to be the inspection \$SHORT_NAME\$.html as provided by the inspection description, or the inspection implementation class. If a short name is not provided, the IntelliJ Platform computes one by removing `Inspection` suffix from the implementation class name. #### Code Snippets diff --git a/topics/tutorials/postfix_completion/postfix_templates.md b/topics/tutorials/postfix_completion/postfix_templates.md index 6cc4a34d9..99156e501 100644 --- a/topics/tutorials/postfix_completion/postfix_templates.md +++ b/topics/tutorials/postfix_completion/postfix_templates.md @@ -1,6 +1,6 @@ -# Postfix Templates + - +# Postfix Templates Postfix templates implement possibility to modify or wrap the existing code in additional constructs without navigating the caret back. @@ -39,13 +39,13 @@ class and implementing the key methods: ## Postfix Template Description All postfix templates must provide descriptions and examples showing the code before and after a template is expanded. -The files describing the template must be placed in the plugin's resources in the postfixTemplates/_$TEMPLATE_NAME$_ where the _$TEMPLATE_NAME$_ directory must match the simple name of the template class, +The files describing the template must be placed in the plugin's resources in the postfixTemplates/\$TEMPLATE_NAME\$ where the _\$TEMPLATE_NAME\$_ directory must match the simple name of the template class, e.g., for a template implemented in `com.example.IntroduceVariablePostfixTemplate` class, the directory name should be named as IntroduceVariablePostfixTemplate. Providing the description explaining the template purpose and context details is achieved by creating the description.html file. -Providing the code snippets showing the template in "before" and "after" expanding states is achieved via the before._$EXTENSION$_.template and after._$EXTENSION$_.template files accordingly. -The _$EXTENSION$_ placeholder should be replaced with the extension of the template language, e.g., before.kt.template for a Kotlin template. +Providing the code snippets showing the template in "before" and "after" expanding states is achieved via the before.\$EXTENSION\$.template and after.\$EXTENSION\$.template files accordingly. +The _\$EXTENSION\$_ placeholder should be replaced with the extension of the template language, e.g., before.kt.template for a Kotlin template. The code snippets included in the example files can use the `` marker, which should surround the most important code parts, e.g., expression to expand and position of the caret after expanding. Marked parts will be highlighted in the Settings | Editor | General | Postfix Completion settings page, making it easier for users to understand how a template is expanded, e.g.: