乙個C 語法高亮外掛程式

2021-09-07 05:48:20 字數 1415 閱讀 5775

語法高亮對程式設計師閱讀**來說有著不小的幫助,雖然visualstudio本身支援c#語法高亮,但也只是對關鍵字、類名、字串等少數元素加了標記,而我們**中主題:變數、函式、屬性、事件等都沒有進行高亮,如下所示:

varnodes = fromid ingetidentifiersinspans(doc.workspace, doc.semanticmodel, spans)

letnode = doc.syntaxroot.findnode(id.textspan)

letsymbol = doc.semanticmodel.getsymbolinfo(getexpression(node)).symbol

wheresymbol != null

lettype = roslynsymbolparser.getsymboltype(symbol)

wheretype != null

letclassficationtype = _classificationmap[type]

selectid.textspan.totagspan(spans[0].snapshot, classficationtype);

有一些第三方控制項如visual assist針對這一不足進行了增強,不過visualassist是乙個收費控制項,之前我找到了乙個控制項,這個控制項雖然效果非常不錯,不過它的語法解析功能太弱,在**中間修改的時候,一旦有語法錯誤,它的語法高亮就時效了,導致介面出現不停的閃爍現象。這個bug導致該語法高亮特性基本不可用。本來想自己寫的,結果發現visualstudio擴充套件的相關文件太少,又沒有什麼時間投入研究它,便一度擱置了。

今天在github上發現了乙個語法高亮控制項的專案roslyn-colorizer,這個專案本身做的並不完善,因此並沒有作為外掛程式發布。不過倒是乙個很好的示例**,基於它簡單的改了一下,增加了引數、成員變數、屬性、事件、列舉、函式等幾種元素的語法高亮,前面的**加上語法高亮外掛程式後就變成了如下形式:

varnodes = fromid ingetidentifiersinspans(doc.workspace, doc.semanticmodel, spans)

letnode = doc.syntaxroot.findnode(id.textspan)

letsymbol = doc.semanticmodel.getsymbolinfo(getexpression(node)).symbol

wheresymbol != null

lettype = roslynsymbolparser.getsymboltype(symbol)

wheretype != null

letclassficationtype = _classificationmap[type]

selectid.textspan.totagspan(spans[0].snapshot, classficationtype);

寫了乙個Hy的vscode語法高亮外掛程式

2018 8 3 把函式名和引數改了,正則有點古怪,參考自帶的lambda表示式才搞定 但彩色括號走了彎路,各種配圖有彩色括號的外掛程式其實很少是自己搞的,其實只要再裝乙個rainbow brackets外掛程式就好了 現在的效果,基本能用啦 寫了乙個vscode的hy語言語法高亮外掛程式 用vsc...

為部落格園選擇乙個小巧霸氣的語法高亮外掛程式

我的測試非常簡單,對 jquery 1.10.2 原始碼 9789 行,進行高亮渲染測試,看看每個指令碼的渲染耗時。非常清晰明了,他們的成績分別為 注意單位 highlight 567ms shjs 627ms pretiffy 1.26s snippet 9.40s snippet 號稱基於 sh...

再議 語法高亮外掛程式的選擇

這些天在做深度定製的時候發現乙個嚴重的問題,匹配精度不夠。來看幾個圖吧 可以看到他們渲染後的精度。節點越多,表示精度越高 排名名稱 節點數1 pretiffy 59802 節點 2snippet 43775 節點 3shjs 33985 節點 4highlight 8432 節點 再結合他們渲染速度...