2011-04-06 83 views
2

我需要一些Emacs語法突出問題的幫助。我想設置所有C/C++操作符的顏色。我遇到了麻煩,因爲「/」用於除法(我想要着色),但也用於開始註釋(我不想爲自己着色,默認代碼着色它們很好。)我似乎無法弄清楚如何告訴Emacs在沒有被任何其他正斜槓包圍的情況下僅着色一個正斜槓。Emacs:如何設置標點符號/ C運算符的顏色?

這是我現在有:

(add-hook 'c-mode-common-hook (lambda() 
    (font-lock-add-keywords nil   
    '(("[<>:&*=+^%!~,.?;/-]" 0 font-lock-warning-face t))) 
)) 

但它不會正確地強調這樣的事情:

i = 1/2 
// Test 
i=1/2//test 

當然,如果有已經是一個顏色/臉分配的一種方式標點/運營商,我剛剛錯過了,請讓我知道!

+0

我想操作者需要用一個|符號。如果你在'font-lock-add-keywords'上做'describe-function',你會在這個例子中看到。 – vpit3833 2011-04-06 06:05:07

+1

@vpit:正則表達式synatx正常,'['和']'列出了一組匹配的字符,在這種情況下,'|'符號沒有特殊含義。 – Lindydancer 2011-04-06 09:11:45

回答

0

每種字體長項具有以下格式:

(SUBEXP FACENAME [OVERRIDE [LAXMATCH]]) 

規則中的t對應OVERRIDE條目。如果您放棄它,則您的規則不會重新突出顯示已被突出顯示的內容,例如註釋和字符串。

有突出顯示所有運營商沒有一般包,但cwarn-mode將突出=+=等嵌入更大的表達式中,以及在它不應該是情況;,像if (condition);。它使用函數而不是regexp:s來實現,如果您計劃實現相對高級的字體鎖定規則,我認爲它是一個很好的參考。

+0

刪除't'完美無缺 - 謝謝! – Malvineous 2011-04-08 00:46:15