Merge branch 'master' of https://github.com/LChernigovskaya/intellij-sdk-docs into LChernigovskaya-master

This commit is contained in:
Dmitry Jemerov 2018-09-14 10:09:23 +02:00
commit 6bb206fd35
12 changed files with 100 additions and 8 deletions

View File

@ -225,7 +225,7 @@
* Build Your Own IDE
* Licensing
## Part X - Plugin Repository API
## Part X - Plugin Repository
* [Introduction](plugin_repository/index.md)
* [API Reference](plugin_repository/api/api_reference.md)
* [Plugin Upload](plugin_repository/api/plugin_upload.md)
@ -234,6 +234,7 @@
* [Plugin Update Download](plugin_repository/api/plugin_download_update.md)
* [Maven Interface](plugin_repository/api/maven_interface.md)
* [Plugin Developers List](plugin_repository/api/plugin_developers.md)
* [Feature Extractor](plugin_repository/feature_extractor.md)
* [Custom Release Channels](plugin_repository/custom_channels.md)
## Appendix I - Resources

View File

@ -4,6 +4,9 @@ title: Run Configurations
*Run Configurations* allow users to run a certain type of external processes from within the IDE, e.g. a script, an application, a server, etc. You can provide UI for the user to specify execution options, as well as an option to create a run configuration based on a specific location in the source code.
If you want IDEs to show a prompt to users that your plugin supports run configurations, look at the page about
[feature extractor](/plugin_repository/feature_extractor.md).
# Architectural overview
Classes used to manipulate run configurations can be split into the following groups:
@ -14,4 +17,3 @@ Classes used to manipulate run configurations can be split into the following gr
This diagram shows the main classes:
![Architecture](img/classes.png)

View File

@ -0,0 +1,73 @@
---
title: Feature Extractor
---
The IntelliJ Platform IDEs will recommend a plugin for installation if the plugin provides additional features from this list:
* Configuration Type
* Facet Type
* File Extensions Type
* Module Type
* Artifact Type
IntelliJ Platform IDEs only show plugin suggestions in the appropriate context so they are meaningful to the user.
The [`feature extractor`](https://github.com/JetBrains/intellij-plugin-verifier/tree/master/intellij-feature-extractor/) tool
catalogs these types of features for a plugin. It works by statically analyzing the bytecode of a plugin to extract values
passed to the IntelliJ Platform APIs that support extending features in the above list.
However, if values are dynamically evaluated in a plugin, the `feature extractor` may return incomplete results.
If you cannot find your plugin in [the list of features](https://plugins.jetbrains.com/feature/), you can either make your code
easier for the analysis, or ask JetBrains to manually add any missed feature types.
## Configuration Type
When you want IDEs to show that your plugin supports Run Configuration Type, you need to implement
[ConfigurationType](https://github.com/JetBrains/intellij-community/blob/master/platform/lang-api/src/com/intellij/execution/configurations/ConfigurationType.java)
and implement the `getId()` method. The `feature extractor` analyzes the value of `getId()`.
An suggestion to install plugins that support the *Run D App* Configuration Type:
![Configuration Type of Feature](img/feature_extractor_configuration.png)
Refer to [Run Configurations](/basics/run_configurations.md) to get more information about how to declare this feature in your plugin.
## Facet Type
To support a Facet Type feature you should extend [FacetType](https://github.com/JetBrains/intellij-community/blob/master/platform/lang-api/src/com/intellij/facet/FacetType.java),
and pass `stringId` to its constructor. The value of the `stringId` parameter will be analyzed by the `feature extractor`.
An notification to install plugins that support the *jangaroo* Facet Type:
![Facet Type of Feature](img/feature_extractor_facet.png)
Refer to [Facet](/reference_guide/project_model/facet.md) for additional information.
## File Extensions Type
A plugin can support specific types of file extensions. When there is a file with a specific extension open in an IDE, a hint will be shown to users prompting them to install your plugin.
You should extend [FileTypeFactory](https://github.com/JetBrains/intellij-community/blob/master/platform/platform-api/src/com/intellij/openapi/fileTypes/FileTypeFactory.java)
and feed supported file extensions in `createFileTypes(FileTypeConsumer)`. Values of `FileTypeConsumer` are analyzed by the `feature extractor`.
An suggestion to install plugins which support the _\*.d_ Extension Type:
![File Extensions Type of Feature](img/feature_extractor_extensions.png)
Refer to [Registering a File Type](/reference_guide/custom_language_support/registering_file_type.md) to provide this feature in a plugin.
## Module Type
If you want IDEs to show a prompt that your plugin can support creating specific Module Types, you should extend
[ModuleType](https://github.com/JetBrains/intellij-community/blob/master/platform/lang-api/src/com/intellij/openapi/module/ModuleType.java)
and pass the `id` parameter for your Module Type to its constructor. The `feature extractor` will evaluate the values of `id`.
See [Module](/reference_guide/project_model/module.md) and [Supporting Module Types](/tutorials/project_wizard/module_types.md)
for more information about supporting Module Types.
## Artifact Type
To support specific Artifact Types, extend [ArtifactType](https://github.com/JetBrains/intellij-community/blob/master/java/compiler/openapi/src/com/intellij/packaging/artifacts/ArtifactType.java),
and pass an `id` parameter to its constructor. The value of the `id` parameter is analyzed by the `feature extractor`.
An example suggestion to enable a plugin which supports a *dm.bundle* Artifact Type:
![Artifact Type of Feature](img/feature_extractor_artifacts.png)

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

View File

@ -2,19 +2,23 @@
title: Plugin Repository (plugins.jetbrains.com)
---
Plugins are extensions to JetBrains products core functionality. They provide various integrations (e.g. with a VCS or application servers), add support for various development technologies, frameworks and programming languages, and so on.
Plugins extend the core functionality of JetBrains products. They provide various integrations (e.g. with a VCS or application servers),
add support for various development technologies, frameworks and programming languages, and so on.
Plugin Repository is a service responsible for:
The Plugin Repository is a service responsible for:
* Providing a product (e.g. IntelliJ IDEA) with a list of compatible plugins and their updates;
* Facilitating the download of the compatible plugin update;
* Facilitating the download of compatible plugin updates;
* Storage, uploading, and management of the plugins and their updates developed and published by third-party vendors or JetBrains.
JetBrains provides an official plugins repository [plugins.jetbrains.com](https://plugins.jetbrains.com) service for all IntelliJ Platform-based IDEs, as well as TeamCity (limited functionality).
JetBrains provides an official plugins repository [plugins.jetbrains.com](https://plugins.jetbrains.com) for all IntelliJ Platform-based IDEs,
as well as TeamCity (limited functionality).
You can set up your own, enterprise plugin repositories for IntelliJ Platform based IDEs (also known as custom plugin repositories), for example, to store plugins that you want to reserve for your company's internal use only. [Read more](https://www.jetbrains.com/help/idea/managing-enterprise-plugin-repositories.html) about IntelliJ Platform-based IDEs enterprise repositories support.
You can set up your own enterprise plugin repositories for IntelliJ Platform based IDEs (also known as custom plugin repositories).
For example, to store plugins that you want to reserve for your company's internal use only.
[Read more](https://www.jetbrains.com/help/idea/managing-enterprise-plugin-repositories.html) about IntelliJ Platform-based IDEs enterprise repositories support.
This documentation section includes articles, FAQs, and tutorials on [JetBrains plugin repository](https://plugins.jetbrains.com) operations.
@ -27,6 +31,7 @@ In this section:
* [Plugin Update Download](/plugin_repository/api/plugin_download_update.md)
* [Maven Interface](/plugin_repository/api/maven_interface.md)
* [Plugin Developers List](/plugin_repository/api/plugin_developers.md)
* [Feature Extractor](/plugin_repository/feature_extractor.md)
* [Custom Release Channels](/plugin_repository/custom_channels.md)
You can always reach out to the plugin repository team via email [plugins-admin@jetbrains.com](plugins-admin@jetbrains.com).

View File

@ -2,7 +2,7 @@
title: Registering a File Type
---
The first step in developing a custom language plugin is registering a file type the language will be associated with.
The first step in developing a custom language plugin is registering a file type associated with the language.
The IDE normally determines the type of a file by looking at its file name.
A custom language file type is a class derived from
@ -22,3 +22,7 @@ subclass in
To verify that the file type is registered correctly, you can implement the
[LanguageFileType.getIcon()](upsource:///platform/core-api/src/com/intellij/openapi/fileTypes/LanguageFileType.java)
method and verify that the correct icon is displayed for files which have the extension(s) associated with your file type.
If you want IDEs to show a hint prompting users that your plugin supports some extensions as in the example below, look at the information about [the feature extractor](/plugin_repository/feature_extractor.md).
![File Extensions Type of Feature](/plugin_repository/img/feature_extractor_extensions.png)

View File

@ -10,3 +10,8 @@ For more information about facets see [Adding Support for Frameworks and Technol
To access the list of facets for a module, use the [FacetManager](upsource:///platform/lang-api/src/com/intellij/facet/FacetManager.java)
and [Facet](upsource:///platform/lang-api/src/com/intellij/facet/Facet.java) classes.
If you want IDEs to notify users that your plugin supports a facet as in the example below, look at the information about [the feature extractor](/plugin_repository/feature_extractor.md).
![Facet Type of Feature](/plugin_repository/img/feature_extractor_facet.png)

View File

@ -5,6 +5,7 @@ title: Supporting Module Types
*IntelliJ Platform* provides a set of standard module types which can be chosen, however, you might need to create a module of a type that isn't supported yet.
This tutorial shows how to register a new module type and link it to the project creation procedure and the UI.
If you want IDEs to suggest to users that your plugin supports a module type, look at the page about [feature extractor](/plugin_repository/feature_extractor.md).
## Pre-requirements
Create an empty plugin project,

View File

@ -13,6 +13,7 @@ Welcome to the _IntelliJ Platform_ SDK. This is the primary source of documentat
* [**Key Topics**](intro/key_topics.md)
* [**Getting Help**](intro/getting_help.md)
* [**Getting Started**](/basics/getting_started.md)
* [**Plugin Features**](/plugin_repository/feature_extractor.md)
* [**Resources**](resources.md)
## Open Source