For example, I want "while" to be blue, "for" to be green, how to do that? Beyond colors, can I make syntax bold or italic? Thank you so much in advance.
3 回答
最简单的方法是将光标放入给定颜色和类型的字符串中M-xset-face-foreground
Enter。然后只需确认面部名称并指定颜色。要将面设置为粗体或斜体,请set-face-font
以类似方式使用。
您可以将设置保存到.emacs
文件中:
(set-face-foreground 'font-lock-comment-face "gray")
hl-line-mode
启用后,这在最近的 Emacs 版本中不起作用。您需要从 获取人脸名称C-uC-x=,因为set-face-foreground
不会自动完成人脸名称,而是hl-line
人脸。
由于ALL
在python.el
as中定义了以下关键字python-font-lock-keywords
,因此您需要使用不同的字体来胜过其中一些关键字,或者破解这些相同关键字的源以具有不同的字体:
“and” “del” “from” “not” “while” “as” “elif” “global” “or” “with” “assert” “else” “if” “pass” “yield” “break” “except ""import""class""in""raise""continue""finally""is""return""def""for""lambda""try""print""exec""nonlocal""self"。
下面的代码是一个示例,说明如何对python-font-lock-keywords
已经定义的一些关键字进行处理python.el
——在这个示例中,while
是蓝色加粗体;并且,for
是绿色的,带有粗体和斜体。 python-font-lock-keywords
没有被特别定义的字体所胜过的字体将默认为font-lock-keyword-face
- 我也包含了对该字体的示例修改:
(custom-set-faces
'(font-lock-keyword-face
((t (:background "white" :foreground "red" :bold t))))
)
(defvar lawlist-blue (make-face 'lawlist-blue))
(set-face-attribute 'lawlist-blue nil
:background "white" :foreground "blue" :bold t)
(defvar lawlist-green (make-face 'lawlist-green))
(set-face-attribute 'lawlist-green nil
:background "white" :foreground "green" :bold t :italic t)
(defvar lawlist-keywords-01
(concat "\\b\\(?:"
(regexp-opt (list "hello" "world" "while" ))
"\\)\\b"))
(defvar lawlist-keywords-02
(concat "\\b\\(?:"
(regexp-opt (list "foo" "bar" "for" ))
"\\)\\b"))
(font-lock-add-keywords 'python-mode (list
(list (concat
"\\("lawlist-keywords-01"\\)") 1 'lawlist-blue t)
(list (concat
"\\("lawlist-keywords-02"\\)") 1 'lawlist-green t)
))
另一种方法是使更改永久化
M-x customize-face RET font-lock TAB
这会给你一个列表来选择你想要改变的脸。从打开的缓冲区中显示当前变量,您可以输入 [选择] 链接并从 emacs 的颜色变量中进行选择。