2016-09-12 165 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