我有一个包含以下内容的组织文件:
* My Heading
** TODO Make a FOO
** TODO Take action on bar and FOO
** TODO Check if FOO is working
我的目标是突出显示org-agenda-mode
中任务标题中的FOO
一词。为了实现这一目标,我尝试了:
(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-version
GNU Emacs 24.4.1 (i686-pc-mingw32)
-
M-x org-version
Org-mode version 8.2.10
正如@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")))
请注意我正在使用的钩子:每次我重新绘制议程缓冲区时,这个钩子都会再次运行。
我没有时间尝试理解您的代码中存在什么问题,但您可以查看我的Emacs-Leuven.el文件(L976-1015): 我对单词"FIXME","XXX"和"BUG"也做了同样的事情。
https://github.com/fniessen/emacs-leuven/blob/master/emacs-leuven.el