18. Quick Fix
A quick fix for a custom language supports the Consulo-based IDE feature Intention Actions. For the Simple Language, this tutorial adds a quick fix that helps to define an unresolved property from its usage.
Reference: Code Inspections and Intentions
- bullet list {:toc}
18.1. Update the Element Factory
The SimpleElementFactory is updated to include two new methods to support the user choice of creating a new property for the Simple Language quick fix.
The new createCRLF() method supports adding a newline to the end of the test.simple file before adding a new property.
A new overload of createProperty() creates a new key-value pair for Simple Language.
{% include /code_samples/simple_language_plugin/src/main/java/org/intellij/sdk/language/psi/SimpleElementFactory.java %}
18.2. Define an Intention Action
The SimpleCreatePropertyQuickFix creates a property in the file chosen by the user - in this case, a Java file containing a prefix:key - and navigate to this property after creation.
Under the hood, SimpleCreatePropertyQuickFix is an Intention Action.
For a more in-depth example of an Intention Action, see conditional_operator_intention.
{% include /code_samples/simple_language_plugin/src/main/java/org/intellij/sdk/language/SimpleCreatePropertyQuickFix.java %}
18.3. Update the Annotator
When a badProperty annotation is created, the badProperty.registerFix() method is called.
This method call registers the SimpleCreatePropertyQuickFix as the Intention Action for the Consulo to use to correct the problem.
{% include /code_samples/simple_language_plugin/src/main/java/org/intellij/sdk/language/SimpleAnnotator.java %}
18.4. Run the Project
Open the test Java file in an IDE Development Instance running the simple_language_plugin.
To test SimpleCreatePropertyQuickFix, change simple:website to simple:website.url.
The key website.url is highlighted by SimpleAnnotator as an invalid key, as shown below.
Choose "Create Property".
{:width="800px"}
The IDE opens the test.simple file and adds website.url as a new key.
Add the new value jetbrains.com for the new website.url key.

Now switch back to the Java file; the new key is highlighted as valid.