在emacs

时间:2018-02-21 16:39:13

标签: emacs face

我想为python-mode制作一个派生模式,以添加自定义关键字和颜色。所以我检索了定义关键字面部的代码部分并添加了我自己的关键字。

如果我使用已经存在的脸,它可以正常工作。但我想使用自定义面,因此如果在其他面部的同一时间内它不会改变颜色。 我搜索如何定义一个面并最终得到这个:

(defface printr-face
  '((t :foreground "red" :weight bold))
  "Face for printr function"
  :group 'python-print-color-faces)

我尝试应用它的部分代码(在变量" python-font-lock-keywords"中)看起来像这样:

(,(rx symbol-start (or "printr") symbol-end) . printr-face)

我使用时printr-face会出现在列表中 M-x list-faces-display

但脸部没有应用。 M-x describe-face将其视为默认值。

我做错了什么?我怎样才能使用我新定义的脸?

2 个答案:

答案 0 :(得分:1)

向新关键字添加新面孔时,您还需要添加关键字:

(font-lock-add-keywords
 'my-mode
 '(("regex1" 1 'my-face1)
   ("regex2" 1 'my-face2))
 1)

答案 1 :(得分:1)

choroba在右边。 我也错过了defface中的一个括号:

(defface printr-face `((t (:foreground "red" :weight bold))) "Face for printr function"
  :group  'python-print-color)

(我忘了封装:forground:weight)

然后

 (font-lock-add-keywords
 'python-print-color-mode
 '(("printr" . 'printr)
   ("printg" . 'printg)))

请注意,我必须使用"。"而不是" 1"使它工作。不确定" 1"应该已经完成​​了,但它并不适合我。