Emacs 临时缓冲区中的字体锁定?

Emacs 临时缓冲区中的字体锁定?,emacs,elisp,Emacs,Elisp,我喜欢在lisp缓冲区中将lambda字体锁定到λ。 我是这样做的: (defvar关键字lambda “((“(\\(lambda\\)\>” (0(prog1()(组成区域) (比赛开始1) (匹配端1)?λ()()))) (字体锁定添加关键字“emacs lisp模式关键字lambda”) 符号lambda的字符宽度变为1,并且indent sexp尊重它, 但似乎不在临时缓冲区中。请在elisp缓冲区中使用C-u C-x C-e进行验证: (插入 “\n” (带临时缓冲器) (emac

我喜欢在lisp缓冲区中将
lambda
字体锁定到
λ
。 我是这样做的:

(defvar关键字lambda
“((“(\\(lambda\\)\>”
(0(prog1()(组成区域)
(比赛开始1)
(匹配端1)?λ()())))
(字体锁定添加关键字“emacs lisp模式关键字lambda”)
符号
lambda
的字符宽度变为1,并且
indent sexp
尊重它, 但似乎不在临时缓冲区中。请在elisp缓冲区中使用C-u C-x C-e进行验证:

(插入
“\n”
(带临时缓冲器)
(emacs lisp模式)
(插入“(lambda()(交互式)\n(foo)))
(转到字符(最小点))
(缩进sexp)
(缓冲区子字符串没有属性
(最低分)
(最大点)
代码缩进为:

(λ()(交互式)
(foo))
这是压痕,好像
λ
有5个字符宽


有办法解决这个问题吗?

字体锁定添加关键字用于装饰
lambda
,并有一个小提示,上面写着“将其显示为
λ

但字体锁定的方式不是“在文本插入缓冲区时”应用。而是“在文本插入缓冲区后的一段时间内,在文本显示之前”应用字体锁定,具体时间取决于各种因素和配置。此外,在临时缓冲区中禁用字体锁定


所有这一切意味着,在调用
indent sexp
之前,您需要强制字体锁执行它的操作,例如,通过调用
font-lock确保

这仍然准确吗?我可以通过调用
font-lock确保
在Emacs 25.1.1中的临时缓冲区中锁定文本。@tianxing雄:感谢您提到
font-lock确保
这确实比字体锁定FontifBuffer好。