基于正则表达式emacs org-mode的颜色标签

前端之家收集整理的这篇文章主要介绍了基于正则表达式emacs org-mode的颜色标签前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用org-mode,我希望所有以@开头的标签都用蓝色着色.
是否可能以及如何做到这一点?

最好的祝福

解决方法

以下答案使用org-mode的内置机制.变量org-tag-faces接受标签的正则表达式,标签是cons单元的汽车.函数org-set-tag-faces设置全局变量org-tags-special-faces-re,它组合了上述cons单元的标签. org-font-lock-add-tag-faces使用全局变量org-tags-special-faces-re通过组织模式缓冲区重新搜索 – 定位匹配的标记并应用适当的面部在函数org-get-tag-face上.函数org-get-tag-face的原始版本查找找到的标记的完全匹配(即,函数assoc的键参数). org-get-tag-face的修订版增加了对@.*的额外键搜索,如果找到键则返回正确的面 – 这是必要的,因为标签本身通常看起来像@home或@office,而我们的上下文正则表达式是@.*.

  

(require 'org)

(add-to-list 'org-tag-faces '("@.*" . (:foreground "cyan")))

;; Reset the global variable to nil,just in case org-mode has already beeen used.
(when org-tags-special-faces-re
  (setq org-tags-special-faces-re nil))

(defun org-get-tag-face (kwd)
  "Get the right face for a TODO keyword KWD.
If KWD is a number,get the corresponding match group."
  (if (numberp kwd) (setq kwd (match-string kwd)))
  (let ((special-tag-face (or (cdr (assoc kwd org-tag-faces))
                              (and (string-match "^@.*" kwd)
                                   (cdr (assoc "@.*" org-tag-faces))))))
    (or (org-face-from-face-or-color 'tag 'org-tag special-tag-face)
        'org-tag)))

猜你在找的正则表达式相关文章