如何仅针对给定模式自定义语法高亮


10

我想在lua-mode.el不影响其他主要模式的情况下更改语法高亮显示。

只是作为一个例子,我想“关键词”一样ifthenelse是在大胆和蓝色字体时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")))))

但是通过这种方式,我在使用的每种模式下都会得到相同的语法突出显示。

这个问题可能是相关的:在不更改主模式的情况下更改语法突出显示?

有(希望简单和通用)的方法吗?

Answers:


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)            
            ))
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.