Im Emacs-Lisp-Modus möchte ich alle Funktionsaufrufe eine Farbe und alle zitierten Symbole eine andere Farbe markieren. Zum Beispiel, in (foo 1 2 'bar)
, foo sollte Farbe 1 hervorgehoben werden und 'bar sollte Farbe 2 markiert werden.Markieren Sie Funktionsaufrufe, aber nicht zuerst in der Emacs-Liste in Anführungszeichen
Ich konnte dies mit dem unten stehenden Code tun, jedoch markiert es auch das erste Symbol in einer Liste, wenn die Liste wird zitiert. In '(nil a b c)
sollte z. B. nicht als Funktionsaufruf hervorgehoben werden, und alle Elemente in dieser Liste sollten als zitierte Symbole hervorgehoben werden (Farbe 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)))
Es gibt auch ein Bild von dem, was ich hier bin auf der Suche: http://imgur.com/Iluku05
danke, das ist genau das, was ich brauchte :) –