2

在一个新的并且希望非常简单的 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

4

2 回答 2

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)

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

于 2013-01-24T21:42:38.423 回答
4

add-font-lock-keywords主要用于用户自定义。如果您自己编写模式,最好设置font-lock-defaults一个适当的值。

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

于 2013-01-24T22:49:33.613 回答