Cómo personalizar el resaltado de sintaxis solo para un modo determinado


10

Me gustaría cambiar el resaltado de sintaxis en mi lua-mode.elsin afectar a otros modos principales.

A modo de ejemplo, me gustaría "palabras clave", como if, then, elsepara estar en negrita y azul cuando está en lua-mode(en lugar de la rosa por defecto) sin tener el mismo estilo de resaltado durante la edición de un .texarchivo con AUCTeX.

Hasta ahora he tratado de poner el siguiente código en mi .emacsy luego también en mi lua-mode.el:

(custom-set-faces
  '(font-lock-builtin-face ((t (:foreground "maroon3"))))
  '(font-lock-comment-face ((t (:foreground "green4"))))
  '(font-lock-keyword-face ((t (:foreground "dark blue" :weight bold))))
  '(font-lock-string-face ((t (:foreground "dark cyan")))))

pero de esta manera obtengo el mismo resaltado de sintaxis para cada modo con el que trabajo.

Esta pregunta podría estar relacionada: ¿ Cambiar el resaltado de sintaxis sin cambiar el modo principal?

¿Hay alguna forma (con suerte simple y general) de hacer esto?

Respuestas:


8

Las caras son globales, por lo que cambiar sus atributos en cualquier lugar lo cambia en todas partes, como habrás notado. Para cambiarlo localmente, haga una copia de la cara, cambie los atributos en la copia y luego use un enlace de modo para establecer localmente la cara anterior en la copia por búfer. El siguiente ejemplo lo hace font-lock-comment-face, pero el mismo encantamiento funcionará para cualquier cara.

(make-variable-buffer-local 'font-lock-comment-face)
(copy-face 'font-lock-comment-face 'lua-comment-face)
(set-face-foreground 'lua-comment-face "green4")

(add-hook 'lua-mode-hook
          (lambda ()
            (setq font-lock-comment-face 'lua-comment-face)            
            ))
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.