簡易代碼編緝器的編寫

最近由于項(xiàng)目需要,需用 c# 寫一個(gè)簡易 python 代碼編緝器,嵌入在 winform 程序中。需實(shí)現(xiàn)以下幾個(gè)基本功能:

  • 行號顯示;
  • 撤銷重做;
  • 代碼高亮;
  • 代碼縮進(jìn);
  • 代碼折疊;
  • 代碼提示、補(bǔ)全,即 Intellisense 功能。

找了一圈,找到一個(gè)第三放開源控件 Scintilla ,可以滿足需求,但此控件是 c++。幸運(yùn)的是,有大神寫了 c# 版本 ScintillaNet ,是對 SciLexer 進(jìn)行的包裝(wrapper)。因此,可基于 ScintillaNet 進(jìn)行二次開發(fā),記錄如下。

1、行號顯示

設(shè)置 scintilla 的 Margions 區(qū)域:
scintilla.Margins[0].Width = 16;

2、撤銷重做

scintilla 已有自帶,可調(diào)用其 Redo、Undo 方法。

3、代碼高亮

已有相應(yīng)語言的 Recipe ,如 python 的設(shè)置。

4、代碼縮進(jìn)

參考1、參考2

5、代碼折疊

參考

6、Intellisense 功能

在 CharAdded 事件里判斷,調(diào)用 AutoCShow 來顯示提醒功能。但這只是最基本的提醒功能。要做的完整些,比較復(fù)雜,需能提前獲取到所需提醒的所有信息,同時(shí)需考慮性能問題。正在研究中。

更多使用方法,請參考官方 wiki。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容