1. 程式人生 > >IntellijIDEA外掛編寫-刪除/插入/替換文件內容

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());

相關推薦

IntellijIDEA外掛編寫-刪除/插入/替換內容

錯誤 ERROR - plication.impl.ApplicationImpl - Assertion failed: Write2018-03-24 01:57:49,835 [ 138880] ERROR - plication.impl.Appli

Linux下批量替換內容和文名(轉)

lan 其中 xargs ava 提取 pat 內容 文件內容 nbsp 1、批量替換指定多個文件的文件內容 在指定目錄/your/path裏,查找包含old_string字符串的所有文件,並用new_string字符串替換old_string字符串。 sed -i

Word 2007 POI 替換內容

最近專案中需要替換Word模版中的變數,本來打算用書籤做的,後來發現POI的bookmark不具有設定標籤內容的功能。如果採用getText(),則會丟失樣式。 模版截圖為 分為頁首、頁尾、中間內容。 處理程式碼如下。 package cn.com.ebiddin

使用正則替換內容中的特殊字元

如果前端使用的是富文字編輯器,那麼在編輯文件的時候資料庫就會存一些樣式標籤例如<br> <p></p> <style>等等,有時間我們需要拿到一些純淨的資料,例如匯出的時間,我們就不想這些標籤展示,那麼就可以使用正則來替換掉這些

使用Aspose.Words元件進行word書籤替換,、圖表插入,轉pdf等

Program.cs using Aspose.Words; using Aspose.Words.Drawing; using Aspose.Words.Drawing.Charts; using System; using System.Collect

為什麼刪除記錄表不會減小?(記錄的插入刪除在磁碟上的變化)

如果你熟悉 MySQL 緩衝池(不熟悉可以檢視 一條 sql 的執行過程詳解),可能會覺得是因為刪除操作只更新到緩衝池和 redo log,並沒有進行 flush 落盤,但如果關閉資料庫,觸發 flush ,會發現表文件大小還是不會改變,這是為什麼? 原因 首先要了解資料的儲存方式,儲存方

數組的方法(連接,截取,刪除,插入,替換,以及封裝一個函數)

log clas span 選擇 數組遍歷 p s func 第一個 code 連接兩個數組;concat,形成一個新數組 數組1.concat(數組2,數組1) 返回值:數組 var arr1=[1,2], arr2=[3,4], arr3; arr3=arr1.con

python fileinput 模塊替換全局內容

python fileinputnginx.conf 文件有如下內容: server { ..................................................................... server 192.

linux刪除之前的日誌

自動刪除舊loglinux下每天都在產生LOG日誌文件,如果不定期刪除,遲早擠爆硬盤,如果手動刪除,幾次可以,不是長久之計。這些事交給Linux系統就可以解決。試驗環境:系統:CentOS 6.5 x64測試路徑、測試文件名、測試時間(2017-06-05)執行命令:# find /root/Text -mt

Linux rm刪除大批量

tar 分享 必須 span 數據 轉載 comm 參數 新浪 在使用rm刪除大批量文件時,有可能會遭遇“參數列太長”(Argument list too long)的問題。如下所示 [[email protected]/* */ bdump]$ rm -

linux下刪除大量小

小文件 刪除 linux1、Linux下怎麽刪除大量的小文件或者以數字開頭的小文件?解答:模擬環境,在/tmp目錄下創建1000000個小文件cd /tmp && touch {1..1000000}方法1:[[email protected]/* */ tmp]# ls|eg

laravel 5.4 刪除引入layer的寫法

laravel 5.4 刪除引入layer文件的寫法最新發現一個layer 的js文件引入laravel框架中<script type="text/javascript" src="{{asset(‘js/layer/layer.js‘)}}"></script><td>&

WebSphere V8.5 靜默安裝升級(三)-命令查看創建刪除WAS概要

fig home 存儲目錄 ipv6 ssd listen cfg nco osg 【命令查看已建的WAS概要文件】:/opt/IBM/WebSphere/AppServer/bin/manageprofiles.sh -listProfiles【命令刪除WAS概要文件】:

刪除txt內容

面試 txt readlines span 英雄聯盟 clas 文件內容 log 聊天 刪除txt文件裏的 聊天記錄的時間那一行 f = open("d:\\面試.txt", "r") g = open("d:\\英雄聯盟ADC技巧.txt", "w") for line

[ SHELL編程 ] 內容大小寫替換

nbsp size 適用場景 大小 upper 提高 大小寫 tolower pri shell編程經常會碰到字符串、文件內容大小寫的轉換,在不同的場景下選擇合適的命令可以提高編程效率。 適用場景 需大小寫轉換的文件內容或字符串 字符串大小寫替換 小寫替換大寫

使用PDF編輯器快速刪除PDF內容技巧

自己 lin image 需要 pdf 比較 點擊 es2017 技術   我們在接觸PDF文件的時候難免會對文件進行修改與編輯,但是大家都應該很清楚,PDF格式的文件是一種比較特殊而又簡單的文件,文件特殊到需要使用專業的軟件來修改這種文件,下面我們就一起來看看怎麽刪除pd

php替換指定行的內容

元素 nbsp () 一個 指針 current col 前行 imp 1 //第一種 利用file 函數 讀取文件,每一行都是一個數組元素 2 $arr = file($file); 3 $arr[$line] = "hello"; 4 file_put_co

linux刪除不了, 修改屬性也刪除不了的一個解決思路

邏輯 連接 文件屬性 英文 一個 -- span 隱藏屬性 linux 場景:   公司要求卸載軟件時, 也包含卸載一個目錄下的所有文件. 於是去修改刪除文件的shell腳本, 添加了刪除文件及文件夾的命令(當然是在root權限下的)   如: rm -rf /home/v

shell腳本批量替換名和文內容

sed rename 方法1: 這兩天在做camera bringup的時候,需要添加chromatic文件,由於有需要太多的文件裏面的內容進行替換,手工一個個改文件配置有點不太實際,所以google了一下,找到批量替換文件內容的好方法,命令結構如下:grep "被替換的字符串" * -R | awk