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

时间:2013-01-24 21:27:14

标签: 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

2 个答案:

答案 0 :(得分:5)

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

;; Adding Navi to the syntax highlighting of emacs mode.

首先用他们的颜色制作新面孔,在我的情况下为绿色表示字母“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")

现在添加要附加的'关键字'(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)
                       )
                     )
)

你可以用你的字母“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)

最后一部分确保此字体为“实时”,并且每次打开文件时都会。

答案 1 :(得分:4)

add-font-lock-keywords主要用于用户自定义。如果您自己编写模式,那么将font-lock-defaults设置为适当的值会更好。

在emacswiki上查看sample-mode以获取一些示例。