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-syntaxに完全に慣れていません---何が間違っていますか? また、式を括弧で囲む文字を含める方法はありますか?

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 に答える