Разработка плагина 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);

Это на самом деле, кажется, работает - текст добавляется в документ, и создается узел, но когда я редактирую текст внутри кавычек в редакторе - выдается несколько исключений ...

Что я делаю неправильно? Как правильно добавить новые элементы?

Ответы на вопрос(1)

Ваш ответ на вопрос