mirror of
https://github.com/JetBrains/intellij-sdk-code-samples.git
synced 2025-07-28 01:07:49 +08:00
plugin_user_experience.md: minor edits
This commit is contained in:
parent
9944ead6c4
commit
d60764be98
@ -29,10 +29,10 @@ Plugins should be just easy to use.
|
|||||||
Ideally, all the features should work out of the box after the installation, without any special user interactions, like manually enabling crucial plugin features.
|
Ideally, all the features should work out of the box after the installation, without any special user interactions, like manually enabling crucial plugin features.
|
||||||
Default settings should reflect the typical plugin usage in a standard project.
|
Default settings should reflect the typical plugin usage in a standard project.
|
||||||
|
|
||||||
All the settings and actions should be easy to find and be placed in the proper [settings](settings.md) or [action group](grouping_action.md), e.g.:
|
All the settings and actions should be easy to find and be placed in the proper [](settings.md) or [Action Group](grouping_action.md), e.g.:
|
||||||
|
|
||||||
* framework plugin settings should be placed under the <ui-path>Settings | Languages & Frameworks</ui-path>
|
* Framework plugin settings should be placed under the <ui-path>Settings | Languages & Frameworks</ui-path>
|
||||||
* action marking a directory as a plugin-specific root should be added to <ui-path>Mark Directory as...</ui-path> group
|
* Action marking a directory as a plugin-specific root type should be added to <ui-path>Mark Directory as...</ui-path> group
|
||||||
|
|
||||||
Plugins that are hard to configure with features that are hard to find may be quickly abandoned out of frustration.
|
Plugins that are hard to configure with features that are hard to find may be quickly abandoned out of frustration.
|
||||||
|
|
||||||
@ -44,17 +44,14 @@ To improve the overall stability and minimize the risk of introducing regression
|
|||||||
It is a great safety net, which in the long term, will speed up your development and help you release new versions without the fear of breaking existing plugin features.
|
It is a great safety net, which in the long term, will speed up your development and help you release new versions without the fear of breaking existing plugin features.
|
||||||
|
|
||||||
It's nearly impossible to develop software without bugs, so it is recommended to set up an issue tracker where users can report errors.
|
It's nearly impossible to develop software without bugs, so it is recommended to set up an issue tracker where users can report errors.
|
||||||
In addition, it's worth implementing a custom [error report submitter](ide_infrastructure.md#error-reporting) that allows sending error reports directly from within the IDE, with all required information attached.
|
In addition, it's worth implementing [](ide_infrastructure.md#error-reporting) that allows sending reports directly from within the IDE, with all required information attached.
|
||||||
|
To reproduce and understand problems in production, use [](ide_infrastructure.md#logging) consistently.
|
||||||
|
|
||||||
## Performance
|
## Performance
|
||||||
|
|
||||||
Even if a plugin works correctly and looks pleasing, poor performance will impact user satisfaction.
|
Even if a plugin works correctly and looks pleasing, poor performance will impact user satisfaction.
|
||||||
Slow highlighting, code completion, code generation, and other features may break the user's workflow and cause frustration leading to plugin uninstallation.
|
Slow highlighting, code completion, code generation, and other features may break the user's workflow and cause frustration leading to plugin uninstallation.
|
||||||
Always try to follow the performance tips described on the topic pages, e.g.:
|
Always try to follow the performance tips described on the relevant topic pages, e.g., [](psi_performance.md), [](general_threading_rules.md#avoiding-ui-freezes), [](indexing_and_psi_stubs.md#improving-indexing-performance).
|
||||||
|
|
||||||
* [](psi_performance.md)
|
|
||||||
* [](general_threading_rules.md#avoiding-ui-freezes)
|
|
||||||
* [](indexing_and_psi_stubs.md#improving-indexing-performance)
|
|
||||||
|
|
||||||
Making as much functionality as possible working during [](indexing_and_psi_stubs.md#dumb-mode) can also improve perceived performance.
|
Making as much functionality as possible working during [](indexing_and_psi_stubs.md#dumb-mode) can also improve perceived performance.
|
||||||
|
|
||||||
@ -64,8 +61,8 @@ In addition to the plugin execution performance, it is recommended to optimize t
|
|||||||
Users with a poor internet connection may cancel the download when they realize that it will take too long to wait for a plugin they are not sure will meet their expectations.
|
Users with a poor internet connection may cancel the download when they realize that it will take too long to wait for a plugin they are not sure will meet their expectations.
|
||||||
Consider the following techniques for optimizing the plugin distribution size:
|
Consider the following techniques for optimizing the plugin distribution size:
|
||||||
|
|
||||||
* Decrease the number of dependencies. Check if the target platform includes utilities or libraries you need and reuse them by declaring runtime dependency if needed.
|
* Decrease the number of dependencies. Check if the target platform includes utilities like those mentioned in [](ui_faq.md) or [libraries](api_changes_list.md#bundled-library-updates) you need and reuse them.
|
||||||
* Optimize assets like images, videos, etc.
|
* Optimize assets like icons, images, videos, etc.
|
||||||
* If large resources (e.g., SDKs) are needed only in specific setups, consider downloading them by the plugin on-demand instead of bundling them in the plugin distribution.
|
* If large resources (e.g., SDKs) are needed only in specific setups, consider downloading them by the plugin on-demand instead of bundling them in the plugin distribution.
|
||||||
|
|
||||||
[Obfuscation](https://plugins.jetbrains.com/docs/marketplace/obfuscate-the-plugin.html) may also help reduce the distribution file size.
|
[Obfuscation](https://plugins.jetbrains.com/docs/marketplace/obfuscate-the-plugin.html) may also help reduce the distribution file size.
|
||||||
@ -75,7 +72,7 @@ Consider the following techniques for optimizing the plugin distribution size:
|
|||||||
When designing and implementing features, review existing functionalities of the IDE and plugins and design your features in a similar and consistent way.
|
When designing and implementing features, review existing functionalities of the IDE and plugins and design your features in a similar and consistent way.
|
||||||
A consistent approach will make it easier for users to work with your plugin, increasing overall satisfaction.
|
A consistent approach will make it easier for users to work with your plugin, increasing overall satisfaction.
|
||||||
|
|
||||||
If you implement custom language support, review and consider implementing extension points from the [](additional_minor_features.md) list so that your plugin provides an experience consistent with other plugins.
|
If you implement [](custom_language_support.md), review and consider implementing extension points from the [](additional_minor_features.md) list so that your plugin provides an experience consistent with other plugins.
|
||||||
|
|
||||||
## Consistent and Good-Looking UI
|
## Consistent and Good-Looking UI
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user