我试图让emacs在字体锁定模式下正确渲染数学组合字符,如分音符、横杆等。目标是能够编写像 x_dot 这样的数学运算并将其显示为“ẋ”,或将 x_bar 显示为“x̄”。
这是我到目前为止所拥有的,而且它大部分都有效。
(font-lock-add-keywords
nil
`(("\\<\\(\\w\\)\\(_dot\\)\\>"
(0 (progn (compose-region (match-beginning 1) (match-end 2)
(concatenate 'string (match-string 1) " ̇" )) nil)))))
但是:我在组合角色之前看到了一个视觉伪影角色。执行上述操作后,通过在 *scratch* 缓冲区中写入“x_dot”或类似内容来测试这一点。
这件神器像幻影一样来来去去。组合普通字符(如“o”和“-”)时不会发生此行为,如下例所示。
(font-lock-add-keywords
nil
`(("\\<\\(\\w\\)\\(_dash\\)\\>"
(0 (progn (compose-region (match-beginning 1) (match-end 2)
(concatenate 'string (match-string 1) "-" )) nil)))))
然后在某处输入“x_dash”。
到底是怎么回事?