IntellijIDEA插件编写-删除/插入/替换文档内容
錯誤
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());
官方插件開發sdk doc-https://github.com/JetBrains/intellij-sdk-docs,內有實例
總結
以上是生活随笔為你收集整理的IntellijIDEA插件编写-删除/插入/替换文档内容的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 电脑自动弹出广告网页(电脑自动弹出广告网
- 下一篇: u大师u盘启动盘制作工具使用教程(u盘启