字体锁定 Emacs-Lisp 正则表达式组
Font-Lock an Emacs-Lisp Regexp Group
我目前正在为 Emacs 编写主要模式,并且正在尝试弄清楚如何让语法高亮显示工作。我的主要模式适用于类似 lisp 的语言,如下所示:
[= a 3]
[= [double x] [* x 2]]
[double a]
基本上,我想做的是编写一个正则表达式来匹配所有以 [
开头的单词,但不匹配 [
本身以突出显示函数调用。我进行了一些谷歌搜索,发现 emacs 不支持正则表达式后视,那么我该怎么做呢?
您可以指定要突出显示的正则表达式组的编号。因此,您可以构造一个正则表达式来捕获 [
加上以下函数名称,然后仅通过指定第一个捕获组来突出显示函数名称,例如
(defvar my-mode-font-lock-keywords
'(("\[\s-*\([^\][:space:]]+\)" (1 font-lock-function-name-face))))
(define-derived-mode my-mode prog-mode "MyMode"
(setq-local font-lock-defaults '(my-mode-font-lock-keywords)))
我目前正在为 Emacs 编写主要模式,并且正在尝试弄清楚如何让语法高亮显示工作。我的主要模式适用于类似 lisp 的语言,如下所示:
[= a 3]
[= [double x] [* x 2]]
[double a]
基本上,我想做的是编写一个正则表达式来匹配所有以 [
开头的单词,但不匹配 [
本身以突出显示函数调用。我进行了一些谷歌搜索,发现 emacs 不支持正则表达式后视,那么我该怎么做呢?
您可以指定要突出显示的正则表达式组的编号。因此,您可以构造一个正则表达式来捕获 [
加上以下函数名称,然后仅通过指定第一个捕获组来突出显示函数名称,例如
(defvar my-mode-font-lock-keywords
'(("\[\s-*\([^\][:space:]]+\)" (1 font-lock-function-name-face))))
(define-derived-mode my-mode prog-mode "MyMode"
(setq-local font-lock-defaults '(my-mode-font-lock-keywords)))