【问题标题】:Font lock with org-agenda not workingorg-agenda 的字体锁定不起作用
【发布时间】:2014-12-09 11:14:47
【问题描述】:

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

* 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-versionGNU Emacs 24.4.1 (i686-pc-mingw32)
  • M-x org-versionOrg-mode version 8.2.10

【问题讨论】:

  • *Org-Agenda* 缓冲区使用 text-properties 没有字体锁定。 font-lock-mode 是否在该特定缓冲区中启用? -- 例如,M-x describe-variable RET font-lock-mode RET
  • @lawlist Touché。 font-lock-mode 已禁用。感谢您的提示,我已经找到了答案。

标签: emacs elisp org-mode font-lock


【解决方案1】:

正如@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")))

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

【讨论】:

  • 感谢您的回答。它可以帮助我突出显示我的组织议程中的一些字符串。
  • 提醒一下:现在钩子名称已更改为org-agenda-finalize-hook,请在上面提供的代码中修改。
【解决方案2】:

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

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

【讨论】:

  • 根据@lawlist 的评论,问题是org-agenda 不使用font-lock-mode
  • 正确。我错过了你在议程中需要它的事实。感谢您纠正我。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多