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

时间:2016-11-29 21:43:30

标签: emacs org-mode

我正在使用org-mode,我希望以@开头的所有代码都以蓝色显示。 是否有可能以及如何做到这一点?

祝你好运

2 个答案:

答案 0 :(得分:5)

以下答案使用org-mode的内置机制。变量org-tag-faces接受标记的正则表达式,即cons单元格的car。函数org-set-tag-faces设置全局变量org-tags-special-faces-re,其组合了上述缺点单元格的标签。 org-tags-special-faces-re通过org-font-lock-add-tag-faces缓冲区使用全局变量re-search-forward - 找到匹配的代码并根据函数org-mode应用适当的面。函数org-get-tag-face的原始版本查找找到的标记的完全匹配(即函数org-get-tag-face的{​​{1}}参数)。修订后的key版本会为assoc添加org-get-tag-face次搜索,并在找到key后返回正确的面孔 - 这是必要的,因为标记本身通常会显示类似于@.*key,而我们的上下文regexp是@home

  
@office

答案 1 :(得分:1)

您可以使用var ltrToNato = function(ch) { var x = ch var nato = ('{"A": "Alpha", "B": "Bravo", "C": "Charlie", "D": "Delta", "E": "Echo", "F": "Foxtrot", "G": "Golf", "H": "Hotel", "I": "India", "J": "Juliet", "K": "Kilo",\ "L": "Lima", "M": "Mike", "N": "November", "O": "Oscar", "P": "Papa", "Q": "Quebec", "R": "Romeo", "S": "Sierra", "T": "Tango", "U": "Uniform", "V": "Victor",\ "W": "Whiskey", "X": "X-Ray", "Y": "Yankee", "Z": "Zulu", "0" : "Zero", "1" : "One", "2" : "Two", "3" : "Three", "4" : "Four", "5" : "Five", "6" : "Six",\ "7" : "Seven", "8" : "Eight", "9" : "Niner"}') var natoLower = nato.toLowerCase() var natoAlpha = JSON.parse(nato) var natoAlphaLower = JSON.parse(natoLower) if (ch >= "A" && ch <= "Z") return natoAlpha[ch] else if (ch >= "a" && ch <= "z") return (natoAlphaLower[ch]) else if (x.match(/[0-9]/g)) return natoAlpha[ch] else return x } //B var wordToNato1 = function(str) { var s = "" for (var i = 0; i <= str.length-1; i++) { s += ltrToNato(str[i]) } return s; } console.log('nato: '+wordToNato1("ABC123"));,例如,评估以下组织源块应该为&#39; @&#39;标记蓝色。

font-lock-add-keywords

评估后,还原缓冲区或致电#+TITLE: Tag face #+BEGIN_SRC emacs-lisp (defface org-tag-face '((nil :foreground "blue" :background "#f7f7f7")) "org tag face") (font-lock-add-keywords 'org-mode '((":\\(@[^\:]+\\):" (1 'org-tag-face)))) #+END_SRC * test :@tst: * test2 :tst: font-lock-flush以更新字体锁定。