1

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.

4

3 回答 3

2

最简单的方法是将光标放入给定颜色和类型的字符串中M-xset-face-foregroundEnter。然后只需确认面部名称并指定颜色。要将面设置为粗体或斜体,请set-face-font以类似方式使用。

您可以将设置保存到.emacs文件中:

(set-face-foreground 'font-lock-comment-face "gray")

hl-line-mode启用后,这在最近的 Emacs 版本中不起作用。您需要从 获取人脸名称C-uC-x=,因为set-face-foreground不会自动完成人脸名称,而是hl-line人脸。

于 2013-09-08T20:49:41.073 回答
2

由于ALLpython.elas中定义了以下关键字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)

   ))
于 2013-09-08T23:01:29.990 回答
0

另一种方法是使更改永久化

M-x customize-face RET font-lock TAB

这会给你一个列表来选择你想要改变的脸。从打开的缓冲区中显示当前变量,您可以输入 [选择] 链接并从 emacs 的颜色变量中进行选择。

于 2019-12-26T12:34:36.383 回答