日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

IntellijIDEA插件编写-删除/插入/替换文档内容

發布時間:2023/12/2 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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插件编写-删除/插入/替换文档内容的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。