19. Quick Fix
A quick fix for a custom language supports the IntelliJ Platform-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.
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.
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
.
Update the Annotator
When a badProperty
annotation is created, the badProperty.registerFix()
method in SimpleAnnotator
is called. This method call registers the SimpleCreatePropertyQuickFix
as the Intention Action for the Intellij Platform to use to correct the problem.
Run the Project
Run the project by using the Gradle runIde
task. Open the test Java file.
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".
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.