0

我正在尝试设置一个 emacs 主要模式,它基本上只是突出显示许多不同字符之间的文本,不同的颜色。我有方括号使用:

(font-lock-add-keywords nil '(("\\[\\(.*\\)\\]"
                             1 font-lock-keyword-face prepend)))

但是当我尝试用其他字符替换[and]时,它停止工作。例如,圆括号 ' ()'不起作用

(font-lock-add-keywords nil '(("\\(\\(.*\\)\\)"
                             1 font-lock-function-name-face prepend)))

尝试单引号、双引号或反引号等也不起作用。我对 lisp 语法完全不熟悉——我做错了什么?另外:有什么方法可以包含括号中的字符吗?

4

1 回答 1

2

您正在混合正则表达式和正则字符串。

试试这些:

;; square brackets - escape the first one so you don't get a [..] regexp
(font-lock-add-keywords nil '(("\\(\\[.*]\\)"
                         1 font-lock-keyword-face prepend)))

;; parentheses - don't escape the parentheses you want to match!
(font-lock-add-keywords nil '(("\\((.*)\\)"
                         1 font-lock-keyword-face prepend)))

;; quotes - single escape so you don't break your string:
(font-lock-add-keywords nil '(("\\(\".*\"\\)"
                         1 font-lock-keyword-face prepend)))

;; other characters - not regexps, so don't escape them:
(font-lock-add-keywords nil '(("\\('.*'\\)"
                         1 font-lock-keyword-face prepend)))
(font-lock-add-keywords nil '(("\\(<.*>\\)"
                         1 font-lock-keyword-face prepend)))
于 2013-10-21T16:44:58.190 回答