Як налаштувати підсвітку синтаксису лише для заданого режиму


10

Я хотів би змінити виділення синтаксису в моєму, lua-mode.elне впливаючи на інші основні режими.

Просто в якості прикладу, я хотів би «ключові слова» , як if, then, elseбути виділені жирним шрифтом і синім шрифтом , коли в lua-mode(замість рожевого за замовчуванням) , не маючи один і той же стиль виділення при редагуванні .texфайлу з AucTeX.

Поки я намагався ввести наступний код у свій, .emacsа потім і в мій 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")))))

але таким чином я отримую однакове виділення синтаксису для кожного режиму, з яким я працюю.

Це питання може бути пов’язане: змінити виділення синтаксису без зміни основного режиму?

Чи існує (сподіваюся, простий і загальний) спосіб зробити це?

Відповіді:


8

Обличчя є глобальними, тому зміна його атрибутів де завгодно змінюється скрізь, як ви помітили. Щоб змінити її локально, зробіть копію обличчя, змініть атрибути в копії та використовуйте гачок режиму, щоб локально встановити старе обличчя на копію на основі буфера. Наведений нижче зразок це робить font-lock-comment-face, але те саме заклинання буде працювати для будь-якого обличчя.

(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)            
            ))
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.