天天看點

【筆記】簡單實作vscode read-only模式插件

嘗試玩了一下vscode插件,困惑着如果有人想啟動一個vscode instance,隻想讀代碼,不想無意中修改了代碼。查了一下github上vscode的issue,有一些人提,但是都沒有解決方法;還有一些人說看能不能拿到moanco editor的instance就解決問題了,然後下面就是一個回複“不可能”就close了。那怎麼實作vscode打開文檔是read-only模式呢?

其實做一遍,就發現非常簡單。當然,我們目前的需求隻是無意按鍵後不要修改文檔,暫時不想管太多比如複制/粘貼,比如格式化文檔後怎麼辦。

代碼:https://github.com/stallpool/vscode-readonly-extension

編譯好的直接能安裝的vsix檔案下載下傳:https://github.com/stallpool/vscode-readonly-extension/releases/tag/1.0.0

二話不說,先上code。這裡其實就是拿兩個samples拼接出來的一個extension,在github的repo上也注明了reference。一個是 statusbar 的sample extension,一個是 vim 的sample extension。

原理就是 editor 有一個

type

command,當輸入之後就會觸發這個command,是以把這個command覆寫掉就能做到在typing的時候什麼都不發生了。為了能有個開關,定義一下configuration的item,來一個

readOnly

變量控制,如果開,那麼什麼都不發生,否則将

type

的執行丢給

default:type

去執行,這樣又可以鍵盤輸入了。

statusbar

就是定義一個statusbar item,然後開關給出目前readonly的文本描述。再注冊一個指令開關readonly模式。

原理知道了,想必大家也都清楚怎麼禁止 copy/paste 了,進一步加強readonly,這都是後話了。Enjoy.