1

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

为了澄清我的意图:我目前这样做的原因是根据标签突出显示标题(或标题的一部分)。内置变量org-tag-faces只允许自定义标签本身,而不是包含标签的标题。

参考以下相关问题:

  1. Emacs 字体锁定模式:提供自定义颜色而不是面

  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

在线程 2 中,接受的答案是为此目的使用 font-lock。

在线程 3 中,我试图实现与海报完全相反的效果。Jordon Biondo的最后一条评论说:

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

因为我想覆盖已经着色的东西,所以我在 t 中添加了,但据我所知,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)
                   ))))
4

1 回答 1

0

这主要对我有用:

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

标题是红色的,虽然标签本身不是。

于 2016-09-13T13:51:36.567 回答