你如何为emacs中的特定字母着色?

2 emacs elisp

在一个新的,希望非常简单的emacs模式中,我希望'a'的每个实例都是#0000FF而'b'是#DF0101.到目前为止,尽管有大量的谷歌搜索,我还没有找到办法做到这一点.理想情况下,它会在您输入时实时发生.

http://www.gnu.org/savannah-checkouts/gnu/emacs/manual/html_node/emacs/Highlight-Interactively.html

http://www.gnu.org/savannah-checkouts/gnu/emacs/manual/html_node/emacs/Font-Lock.html#Font-Lock

Pas*_*ten 5

我将它用于我的Navi次要模式:

;; Adding Navi to the syntax highlighting of emacs mode.
Run Code Online (Sandbox Code Playgroud)

首先用他们的颜色制作新面孔,在我的情况下为绿色表示字母"t"的成功字体,青色为"Navi"和"navi".

如果需要,请阅读有关font-lock的信息.

(make-face 'font-lock-Navi-face)
(set-face-foreground 'font-lock-Navi-face "cyan")

(make-face 'font-lock-success-face)
(set-face-attribute 'font-lock-success-face nil :foreground "green")
Run Code Online (Sandbox Code Playgroud)

现在添加要附加的"关键字"(regexp):

(defun add-custom-keywords()
  "adds a few keywords for emacs mode"
  ;
  (font-lock-add-keywords nil
                     '(
                       ("Navi\\|navi" . 'font-lock-Navi-face)

 ;; here you can see that I highlight the letter "t" in " t " when spaced, 
 ;; or with a parenthesis\newline around it

                       ("\\s-t\\s-\\|\\s-t)\\|\\s-t\n" . 'font-lock-success-face)
                       )
                     )
)
Run Code Online (Sandbox Code Playgroud)

你可以用"\\|"你的字母"a"或"b" 替换Navi("或"在这里)或navi,"a\\|b"然后给它面部.

; This is the hook to activate when the mode is triggered
(add-hook 'emacs-lisp-mode-hook 'add-custom-keywords)
Run Code Online (Sandbox Code Playgroud)

最后一部分确保此字体为"实时",并且每次打开文件时都是如此.