Definindo faces para realce de sintaxe no Emacs

0

Esta é uma pergunta de acompanhamento para Adicionando destaque de sintaxe para uma seção de comentários no Emacs .

Eu tenho a seguinte definição de face adaptada da definição de font-lock-warning-face in font-lock.el :

; (defface font-lock-warning-face
;   '((t :inherit error))
;   "Font Lock mode face used to highlight warnings."
;   :group 'font-lock-faces)
(defface my-code-section-face
  '((t :inherit font-lock-warning-face))
  "Face used for comment guards")

(defun add-c-syntax-highlighting ()
  (font-lock-add-keywords nil '(
    ("//\-+" 0 (if t font-lock-warning-face
                  my-code-section-face) prepend))))

Quando uso t ( font-lock-warning-face ), a função funciona. Quando nil (para usar my-code-section-face ), isso não acontece. Eu só posso supor que é um problema com como eu estou definindo o rosto , mas não consigo encontrar um problema. (Usar ' vs. ' não faz diferença efetiva.)

    
por Sean Allred 20.10.2014 / 17:28

1 resposta

1

Parece que você precisa citar prepend : 'prepend e movê-lo para fora da lista:

(font-lock-add-keywords nil '(("//\-+" 0 whatever)) 'prepend)

E para testar, pelo menos, livre-se de tudo em whatever - use apenas algo como (0 'my-code-section-face t) .

Então, algo assim:

(font-lock-add-keywords nil '(("//\-+" (0 'my-code-section-face t))) 'prepend)

E você sempre pode ver se o seu defface funciona da maneira que você deseja, usando M-x list-faces-display .

    
por 21.10.2014 / 04:26