2011-12-12 70 views
9

在Emacs中,是否可以用不同的顏色標記不同數據類型的所有變量?例如如果我有下列變量在C/C++我的程序emacs中的語法高亮顯示。使用不同的顏色標記不同的數據類型

int i,j; 
float g,h; 
char a,b; 

然後整個源代碼i和j將被標記爲紅色,g和h爲綠色,a和b爲藍色。

我不確定這將是多麼有用,但我覺得它會幫助我,而閱讀代碼, 併成爲匈牙利符號(不是我使用這個符號:D)的一個很好的選擇。

+6

使用正常的emacs C模式,這將是非常平凡的 - 您需要實際解析文件以獲取此信息,您當前只使用正則表達式進行高亮顯示。我會查看[「Semantic Bovinator」](http://www.emacswiki.org/emacs/SemanticBovinator)來解析C/C++文件並從那裏開始工作。 –

+0

也許你想看看[highlight-symbol](http://www.emacswiki.org/emacs/HighlightSymbol)。它突出顯示所有符號的出現點,並且可以同時突出顯示幾個符號(以不同的顏色)。不完全是你要求的,但它有助於以類似的方式閱讀代碼。 – Tarmil

+0

另一個不準確的評論:正則表達式匹配可能不足以實現這一點,但它可能會讓你成爲一部分。調整正則表達式匹配的簡單而互動的方式是使用「C-M-s」。另見庫['highlight.el'](http://www.emacswiki.org/emacs/HighlightLibrary)。 – Drew

回答

4

編號Emacs不知道特定表達式的類型;這樣做等於編寫ELisp編譯器的重要部分C

但是,隧道盡頭有一盞燈。例如,如果使用tuareg-mode編輯OCaml代碼,則可以詢問Emacs有關任何表達式的類型,因爲ocaml編譯器提供了該信息;因此您應該可以讓它按類型突出顯示變量。這是要遵循的道路。

唉,gcc不提供該信息;然而,它的擴展gccxml呢。

此外,其他C編譯器,例如,clang,提供該信息開箱,且有一個新的文件semantic-clang.el其依賴於這些特徵(雖然完成,而不用於語法高亮)。

因此,這裏沒有任何開箱即用,但如果您願意使用clang而不是gcc併爲CEDET開發做出貢獻,您可能會得到您想要的結果。

1

不,不可能有選擇地將給定的顏色分配給emacs中的給定變量(或者只是給定一個給定的程序)。
但是,如果只是語法突出顯示您正在尋找,當然,emacs將突出顯示大多數語言,甚至可以爲emacs不知道的語言創建語法突出顯示。例子:
Ex。 Smali:https://github.com/strazzere/Emacs-Smali

相關問題