字体锁与组织议程无法正常工作

时间:2014-12-09 11:14:47

标签: emacs elisp org-mode font-lock

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

* 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

2 个答案:

答案 0 :(得分:2)

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

(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")))

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

答案 1 :(得分:1)

我没有时间尝试去理解代码中的错误,但是你可以查看我的Emacs-Leuven.el文件(L976-1015):我对“FIXME”这个词做同样的事情。 ,“XXX”和“BUG”。

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