2

我有一个包含以下内容的 org 文件:

* My Heading
** TODO Make a FOO
** TODO Take action on bar and FOO
** TODO Check if FOO is working

我的目标是突出显示FOO任务标题中的单词org-agenda-mode。为了实现这一点,我尝试过:

(add-hook 'org-agenda-mode-hook
  (lambda ()
    (font-lock-add-keywords nil
                            '(("\\(FOO\\)" 1 '(:background "red"))))))

但没有任何改变。我的钩子正在C-h v font-lock-keywords运行,如果我在议程视图中尝试,返回的值是

(t
 (("\\(FOO\\)" 1
   '(:background "red")))
 ("\\(FOO\\)"
  (1
   '(:background "red"))))

除了两次显示相同的项目之外,我看不出为什么这不起作用。是否忽略 font-lock-mode设置?如果是这样,我怎么能添加一个“自定义”关键字突出显示org-agenda-mode

编辑 :

  • M-x emacs-versionGNU Emacs 24.4.1 (i686-pc-mingw32)
  • M-x org-versionOrg-mode version 8.2.10
4

2 回答 2

2

正如@lawlist 建议的那样,*Org-Agenda*缓冲区不使用font-lock-mode. 在议程视图中实现我想要的最简单的方法是按照这个问题的建议使用HiLock

(defface my-hi-lock-face '((t (:background  "red"
                               :foreground  "yellow"
                               :bold t)))
                          "my-hi-lock-face")

(add-hook 'org-finalize-agenda-hook
          (lambda ()
            (highlight-regexp "\\(FOO\\)" "my-hi-lock-face")))

请注意我正在使用的钩子:每次我重绘议程缓冲区时,这个钩子都会再次运行。

于 2014-12-09T19:25:50.870 回答
1

我没有时间尝试了解您的代码有什么问题,但您可以查看我的 Emacs-Leuven.el 文件 (L976-1015):我对“FIXME”、“XXX ”和“错误”。

https://github.com/fniessen/emacs-leuven/blob/master/emacs-leuven.el

于 2014-12-09T13:24:00.533 回答