如果在scratch缓冲区中粘贴和计算,下面的代码将无法突出显示23在23-23中,但如果在文本缓冲区中完成,则不会突出显示。
;; Example 1
'(1234 23 23-23 end)
(progn
(font-lock-add-keywords nil
`(("\\b23\\b"
(0 'success))
"end"))
(font-lock-fontify-buffer))为什么当M-x isearch-forward-regexp RET \b23\b仍然与23在23-23中的匹配时,它会失败?
即使我更改为下面的代码,也只突出显示23-23中的第一个23-23。
;;; Example 2
'(1234 23 23-23 end)
(progn
(font-lock-add-keywords nil
`((,(rx (or word-boundary
"-")
(group "23")
(or word-boundary
"-"))
(1 'success))
"end"))
(font-lock-fontify-buffer))边注:“结束”在那里,这样我就可以检测到23的荧光笔是否有不良的形状。如果它的形式不正确,或者默默地发出错误信号,那么结束就不会被突出显示。
;;; Example 3 (with xy instead of 23. also passing t and 'append.)
;;; if evaluated in the scratch buffer, it doesn't highlight xy in xy-xy
'(wxyz xy xy-xy end)
(progn
(font-lock-add-keywords nil
`(("\\bxy\\b"
(0 'success t))
"end")
'append)
(font-lock-fontify-buffer))发布于 2013-09-22 23:46:01
它不在缓冲区*scratch*中这一事实表明,它是当前模式的一个问题。有两种主要可能性:
2和3的语法类是什么。font-lock-keywords与您的代码交互--例如,它们覆盖它。尝试将'APPEND作为第三个arg添加到font-lock-add-keywords中。尝试将t作为HIGHLIGHT表达式添加到萤光笔中(请参阅文档)。这将使您的高亮显示覆盖其他可能已经存在的任何内容。顺便说一下,你说它在“文本缓冲区”中不起作用,但这意味着什么呢?在emacs -Q中,在text-mode中的缓冲区中计算代码会显示它确实有效。研究一下您的“文本缓冲区”模式是什么,并尝试上面的建议(如果必要的话,这两个项目,但首先尝试第二个)。
https://stackoverflow.com/questions/18947980
复制相似问题