覆盖emacs组织模式面

时间:2016-09-12 12:09:21

标签: emacs colors org-mode font-lock

我正在尝试覆盖org-modeorg-agenda-mode个缓冲区中的默认语法高亮显示。

澄清我的意图:我目前的理由是根据标签突出显示标题(或部分标题)。内置变量org-tag-faces仅允许自定义标记本身,而不是包含标记的标题。

参考以下相关问题:

  1. Emacs font lock mode: provide a custom color instead of a face

  2. https://emacs.stackexchange.com/questions/8211/color-code-a-new-generic-character-combination

  3. https://emacs.stackexchange.com/questions/8222/how-to-make-the-custom-font-lock-keywords-not-override-the-default-major-mode-fo#comment12615_8222

  4. 在第2个主题中,接受的答案是为此目的使用font-lock。

    在主题3中,我试图与海报完全相反。 Jordon Biondo的最后一条评论说:

      

    从关键字中取出t,t指定的是font-lock应该覆盖已经有颜色的东西。

    因为我想覆盖已添加的已经有色的东西,但据我所知,org-mode突出显示仍然覆盖了我的自定义面孔。 在org-mode缓冲区中,这表现为标题文本的主体被更改,但任何其他项目(如待办事项状态,日期,标签等)保留现有面部。 在org-agenda-mode缓冲区中,它完全无法修改匹配行的任何方面。

    通过一个简单的例子,这里有一些代码我试图用来设置任何包含以下内容的行:TT:在org-mode缓冲区中变为红色:

    (add-hook 'org-mode-hook
                    (lambda ()
                      (font-lock-add-keywords
                       'org-mode
                       '(
                         ("^.*:TT:.*$" 0 '(:foreground "#FF0000") t)
                       ))))
    

1 个答案:

答案 0 :(得分:0)

这主要适用于我:

(add-hook 'org-mode-hook
      (lambda ()
        (font-lock-add-keywords
         'org-mode
         '(("^.*:TT:.*$" . font-lock-warning-face)))))

标题为红色,但标签本身不是。