错误
ERROR - plication.impl.ApplicationImpl - Assertion failed: Write2018-03-24 01:57:49,835 [ 138880]
ERROR - plication.impl.ApplicationImpl - Assertion failed: Write access is allowed inside write-action only (see com.intellij.openapi.application.Application.runWriteAction())
java.lang.Throwable: Assertion failed: Write access is allowed inside write-action only (see com.intellij.openapi.application.Application.runWriteAction())
原因
猜测是不能直接通过document的删除,必须使用方法开启一个线程运行删除/插入/替换操作
解决
方法一
WriteCommandAction.runWriteCommandAction(project)
{ document.deleteString(funcDeclareTextRange.startOffset, funcDeclareTextRange.endOffset) }
WriteCommandAction.runWriteCommandAction(project)
{document.insertString(docAnnoTextRange.endOffset, “\n+$funcDeclareText”)}
方法二
1 定义一个handle
public class MyTypedHandler implements TypedActionHandler {
@Override
public void execute(@NotNull Editor editor, char c, @NotNull DataContext dataContext) {
final Document document = editor.getDocument();
Project project = editor.getProject();
Runnable runnable = new Runnable() {
@Override
public void run() {
document.insertString(0, “Typed\n”);
}
};
WriteCommandAction.runWriteCommandAction(project, runnable);
}
}
2 开启handler任务-执行操作
final EditorActionManager actionManager = EditorActionManager.getInstance();
final TypedAction typedAction = actionManager.getTypedAction();
typedAction.setupHandler(new MyTypedHandler());