嘗試玩了一下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.