Comment personnaliser la coloration syntaxique pour un mode donné uniquement


10

Je voudrais changer la coloration syntaxique dans mon lua-mode.elsans affecter les autres modes principaux.

À titre d'exemple, je voudrais « mots clés » comme if, then, elseêtre en caractères gras et bleue en lua-mode( au lieu de la rose par défaut) sans avoir le même style de mise en évidence lors de l' édition d' un .texfichier avec AUCTeX.

Jusqu'à présent, j'ai essayé de mettre le code suivant dans mon .emacs, puis aussi dans mon 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")))))

mais de cette façon, j'obtiens la même coloration syntaxique pour chaque mode avec lequel je travaille.

Cette question pourrait être liée: modifier la coloration syntaxique sans changer le mode principal?

Existe-t-il un moyen (espérons-le simple et général) de procéder?

Réponses:


8

Les visages sont globaux donc changer ses attributs n'importe où le change partout, comme vous l'avez remarqué. Pour le modifier localement, faites une copie de la face, modifiez les attributs de la copie, puis utilisez un hook de mode pour définir localement l'ancienne face sur la copie par tampon. L'exemple ci-dessous le fait font-lock-comment-face, mais la même incantation fonctionnera pour n'importe quel visage.

(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)            
            ))
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.