在Emacs中,是否可以用不同的顏色標記不同數據類型的所有變量?例如如果我有下列變量在C/C++我的程序emacs中的語法高亮顯示。使用不同的顏色標記不同的數據類型
int i,j;
float g,h;
char a,b;
然後整個源代碼i和j將被標記爲紅色,g和h爲綠色,a和b爲藍色。
我不確定這將是多麼有用,但我覺得它會幫助我,而閱讀代碼, 併成爲匈牙利符號(不是我使用這個符號:D)的一個很好的選擇。
在Emacs中,是否可以用不同的顏色標記不同數據類型的所有變量?例如如果我有下列變量在C/C++我的程序emacs中的語法高亮顯示。使用不同的顏色標記不同的數據類型
int i,j;
float g,h;
char a,b;
然後整個源代碼i和j將被標記爲紅色,g和h爲綠色,a和b爲藍色。
我不確定這將是多麼有用,但我覺得它會幫助我,而閱讀代碼, 併成爲匈牙利符號(不是我使用這個符號:D)的一個很好的選擇。
編號Emacs不知道特定表達式的類型;這樣做等於編寫ELisp
編譯器的重要部分C
。
但是,隧道盡頭有一盞燈。例如,如果使用tuareg-mode
編輯OCaml
代碼,則可以詢問Emacs有關任何表達式的類型,因爲ocaml
編譯器提供了該信息;因此您應該可以讓它按類型突出顯示變量。這是要遵循的道路。
唉,gcc
不提供該信息;然而,它的擴展gccxml
呢。
此外,其他C
編譯器,例如,clang
,提供該信息開箱,且有一個新的文件semantic-clang.el
其依賴於這些特徵(雖然完成,而不用於語法高亮)。
因此,這裏沒有任何開箱即用,但如果您願意使用clang
而不是gcc
併爲CEDET
開發做出貢獻,您可能會得到您想要的結果。
不,不可能有選擇地將給定的顏色分配給emacs中的給定變量(或者只是給定一個給定的程序)。
但是,如果只是語法突出顯示您正在尋找,當然,emacs將突出顯示大多數語言,甚至可以爲emacs不知道的語言創建語法突出顯示。例子:
Ex。 Smali:https://github.com/strazzere/Emacs-Smali
使用正常的emacs C模式,這將是非常平凡的 - 您需要實際解析文件以獲取此信息,您當前只使用正則表達式進行高亮顯示。我會查看[「Semantic Bovinator」](http://www.emacswiki.org/emacs/SemanticBovinator)來解析C/C++文件並從那裏開始工作。 –
也許你想看看[highlight-symbol](http://www.emacswiki.org/emacs/HighlightSymbol)。它突出顯示所有符號的出現點,並且可以同時突出顯示幾個符號(以不同的顏色)。不完全是你要求的,但它有助於以類似的方式閱讀代碼。 – Tarmil
另一個不準確的評論:正則表達式匹配可能不足以實現這一點,但它可能會讓你成爲一部分。調整正則表達式匹配的簡單而互動的方式是使用「C-M-s」。另見庫['highlight.el'](http://www.emacswiki.org/emacs/HighlightLibrary)。 – Drew