2016-09-12 133 views
1

我想覆盖org-modeorg-agenda-mode缓冲区中的默认语法突出显示。覆盖emacs组织模式面

为了澄清我的意图:我目前这样做的理由是根据标签强调标题(或部分标题)。内置变量org-tag-faces仅允许自定义标签,而不是包含标签的标题。

参照以下相关的问题:

  1. Emacs font lock mode: provide a custom color instead of a face

  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所接受的一个swer是为了这个目的使用字体锁。

在线程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) 
        )))) 
+0

只是好奇,你为什么要改变'org-mode'和'org-agenda-mode'默认的语法高亮? –

+0

我希望能够根据标签改变项目的颜色。使用字体锁定是http://emacs.stackexchange.com/questions/8211/color-code-a-new-generic-character-combination中接受的答案。 – Adam

+0

'org-agenda-mode'不*使用'font-lock',所以任何加入该功能的努力都不会奏效。相反,'org-agenda-mode'涉及在从主缓冲区收集项目时放置文本属性和脸部。 – lawlist

回答

0

这主要适用于我:

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

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

+0

因为'org-agenda-mode'不使用'font-lock',所以这个解决方案对于'* Org Agenda *'缓冲区并不理想。如果你(需要'org-agenda)',然后通过输入'Mx find-function RET org-agenda-mode RET'查看'org-agenda-mode'的代码,你会看到如下符号:' ;;保持全局字体锁模式打开字体锁模式,下面的代码是:'(org-set-local'font-lock-global-modes(list'not major-mode))' – lawlist

+0

这个代码与原始文章中的代码给出了相同的结果:_“在组织模式缓冲区中,这显示为标题文本的主体正在更改,但其他任何项目(如待办事项状态,日期,标记等等)仍然存在面对。“_ – Adam