emacs lisp モードでは、すべての関数呼び出しを 1 つの色で強調表示し、すべての引用符を別の色で強調表示したいと考えています。たとえば、 では(foo 1 2 'bar)
、foo を色 1 で強調表示し、'bar を色 2 で強調表示する必要があります。
以下のコードでこれを行うことができましたが、リストが引用されているときにリストの最初のシンボルも強調表示されています。たとえば、 では'(nil a b c)
、nil を関数呼び出しとして強調表示してはならず、そのリスト内のすべての項目を引用符で囲んだ記号 (色 2) として強調表示する必要があります。
(defface font-lock-func-face
'((nil (:foreground "#6fc2ef"))
(t (:bold t :italic t)))
"Font Lock mode face used for function calls."
:group 'font-lock-highlighting-faces)
(defface font-lock-quoted-face
'((nil (:foreground "#e1a3ee"))
(t (:bold t :italic t)))
"Font Lock mode face used for function calls."
:group 'font-lock-highlighting-faces)
(font-lock-add-keywords
'emacs-lisp-mode
'(("(\\s-*\\(\\_<\\(?:\\sw\\|\\s_\\)+\\)\\_>"
1 'font-lock-func-face)))
(font-lock-add-keywords
'emacs-lisp-mode
'(("'[-a-zA-Z_][-a-zA-Z0-9_]*\\>" 0 'font-lock-quoted-face)))
私がここで見ているものの画像もあります: http://imgur.com/Iluku05