在Emacs24 python模式下,如何自定义每种语法的颜色?

时间:2013-09-08 20:32:40

标签: emacs python-mode

例如,我希望“while”为蓝色,“for”为绿色,如何做到这一点?除了颜色,我可以使语法粗体或斜体吗?非常感谢你。

3 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:1)

由于以下关键字的ALLpython.el中定义为python-font-lock-keywords,因此您需要使用不同的字体或者将这些相同的关键字的来源破解为其中的一部分。有不同的字体:

“和”“del”“来自”“not”“而”“as”“elif”“global”“或”“with”“assert”“else”“if”“pass”“yield”“break “”除“”import“”class“”in“”raise“”continue“”finally“”is“”return“”def“”for“”lambda“”try“”print“”exec“”nonlocal“”自”。

以下代码是如何为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)

   ))

答案 2 :(得分:0)

另一种方法是使更改永久生效

M-x customize-face RET font-lock TAB

这将为您提供一个列表,以选择要更改的脸部。 在打开的缓冲区中,它会显示当前变量,您可以输入[选择]链接,然后从emacs的颜色变量中进行选择。