如何区分emacs中关键字“import”“def”和“try”的颜色?

2024-10-05 14:28:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我不熟悉emacs。我从here开始使用emacs的twilight主题。但是我在python中得到了相同的颜色

但是,我希望为以下对使用不同的颜色集:

  • import and from
  • def and class
  • try and if。在

我查看了这个主题文件,发现font-lock-keyword-face决定了上述关键字以及与它们相似的关键字的颜色。在

那么我如何给上面的两个颜色设置不同的颜色呢?有办法吗?在

我在emacs24上。我的.emacs怎么了?在


Tags: and文件fromimport主题ifhere颜色
3条回答

因为下列关键字中的ALLpython.el中定义为python-font-lock-keywords,因此您需要用不同的字体来替换其中的一些关键字,或者破解源代码,使这些相同的关键字具有不同的字体:

“and”“del”“from”“not”“while”“as”“elif”“global”“or”“with”“assert”“else”“if”“pass”“yield”“break”“exece”“nonlocal”“self”“中”“raise”“continue”“finally”“中”“pass”“yield”“exec”“nonlocal”“self”“的”“return”“def”“。”。在

下面的代码是一个示例,说明如何对python.el中已定义的一些关键字使用python-font-lock-keywords在本例中,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)

   ))

你的.emacs没有问题。font lock就是这样做的:有几个字体锁定目标—一个用于类型,一个用于变量,一个用于关键字等等。您可以自定义每个目标获得的人脸(例如,M-x自定义,然后是Faces、font lock、font lock Faces),您还可以配置每种语言如何将正则表达式与目标相匹配。因为这些都是关键字,所以它们都映射到关键字face。在

如果您真的愿意,可以编辑python模式设置的font-lock keywords变量来分别匹配每个关键字,而不是仅仅将字体锁定目标命名为facespec,而是给出一个列表(face face face PROP VALUE…),其中包含您喜欢的道具和值。如果你真的想这么做的话,你真的想看看文件。在

完整的细节在手册的“基于搜索的字体化”(GNUEmacs23.4中的23.6.2;在您的版本中可能有所不同,但是您可以从字体锁定定制页面很容易地找到它)。在

它在这里实现:

https://github.com/pdee/pdee

基本上代码库是python的-模式.el,但附带内联pymac、公司模式、自动完成

或者通过集市买到:

bzr branch lp:python-mode/components-python-mode

它是python的开发分支-模式.el在

相关问题 更多 >