Разработка плагина IntelliJ IDEA: как изменить дерево Psi?
Я хотел бы знать, каков «правильный» способ создания новых экземпляров PsiElement и добавления их в дерево Psi.
Я посмотрел учебник, предоставленный JetBrains (http://www.jetbrains.org/intellij/sdk/docs/tutorials/custom_language_support/quick_fix.html). Метод, который они там используют, кажется подходящим для языка простых свойств, который они вводят, но я не думаю, что это способ пойти с более сложным синтаксисом, где я хочу добавить дочерний элемент PsiElement, который не может появиться на корневом уровне PsiFile.
Для меня было бы лучше иметь возможность анализировать текстовый фрагмент как элемент и добавлять его в дерево. Я пытался сделать что-то вроде этого:
myLangTopElement.getNode().addLeaf(MyLangTypes.CHILD_EXPRESSION, "fish = '42'", null);
Это на самом деле, кажется, работает - текст добавляется в документ, и создается узел, но когда я редактирую текст внутри кавычек в редакторе - выдается несколько исключений ...
Что я делаю неправильно? Как правильно добавить новые элементы?