從font-lock-keywords
文檔:
MATCH高亮應該是這樣的形式:
(SUBEXP面名[OVERRIDE [LAXMATCH]])
OVERRIDE和LAXMATCH是標誌。如果OVERRIDE是t,現有的 可以被覆蓋。如果將keep', only parts not already fontified are highlighted. If
前置'或'附加',現有的 分成合並與新的,其中新的或現有的分別優先。
換句話說,如果您在成功後放棄t
,它將不再在評論和字符串中使用美元符號。
編輯:
顯然,上述方案是不是在這種情況下,充足的,可能是因爲美元的跡象已使用另一張臉前面着色。
可能有效的一種方法是不將HOW參數(當前爲t
)傳遞至font-lock-add-keywords
。這意味着它們應該被添加到列表的結尾。但是,這可能會導致其他事情停止工作。
如果我們需要更大的錘子,您可以編寫一些更先進的規則來檢查當前的分形,並決定如何處理。例如,使用由Emacs中添加一個警告面以下以括號內的字符串放置在柱0:
"^\\s("
(0
(if
(memq
(get-text-property
(match-beginning 0)
'face)
'(font-lock-string-face font-lock-doc-face font-lock-comment-face))
(list 'face font-lock-warning-face 'help-echo "Looks like a toplevel defun: escape the parenthesis"))
prepend)
甲第三方式做到這一點是具有功能的名稱來代替正則表達式(rx "$")
那可以搜索$
並檢查它是否顯示在正確的上下文中。這種字體鎖規則的一個例子可以在標準的Emacs包cwarn
中找到。
它不再適用於註釋外的美元符號的成功字體 –
@JisangYoo,請參閱我的更新答案。 – Lindydancer