我写了一个简单的emacs模式。我如何明确指定所有内容,例如:方括号应为彩色。必须像那样:
( (if thing is in square brackets) . font-lock-string-face)
答案 0 :(得分:6)
我假设您正在编写一个主要模式,但font-lock-add-keywords
也适用于次要模式
模式。请使用C-h f RET font-lock-add-keywords
查看其文档。
(define-derived-mode my-mode text-mode "mymode"
;; some init code
(font-lock-add-keywords nil '(("\\[\\(.*\\)\\]"
1 font-lock-warning-face prepend)))
;; some more init code
)
答案 1 :(得分:2)
您必须扩展您所使用的模式以合并新的语法规则,或者您只需使用highlight-regexp
进行快速和脏的突出显示。
答案 2 :(得分:2)
所以这是一个总结: 要将新关键字添加到模式
(font-lock-add-keywords 'emacs-lisp-mode
'(("foo" . font-lock-keyword-face)))
它可以有正则表达式:
(font-lock-add-keywords 'emacs-lisp-mode '(("\\[\\(.+?\\)\\]" . font-lock-keyword-face)))
(这使得方括号中的所有字体都具有给定的颜色)
对于当前模式和当前emacs会话 - 您只需评估以下内容:
(font-lock-add-keywords nil '(("\\[\\(.+?\\)\\]" . font-lock-keyword-face)))
(注意 - 此处未指定模式)
使其永久化你可以将它作为钩子添加到模式中:
(add-hook 'bk-grmx-mode-hook
(lambda ()
(font-lock-add-keywords nil '(("\\[\\(.+?\\)\\]" . font-lock-keyword-face)))
)
)
您也可以将其添加到模式规范中:
(define-derived-mode bk-grmx-mode fundamental-mode
(setq font-lock-defaults '(bk-grmx-keyWords))
;; the next line is added:
(font-lock-add-keywords nil '(("\\[\\(.+?\\)\\]" . font-lock-keyword-face)))
(setq mode-name "bk-grmx-mode")