首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Emacs字体锁关键字中的单词边界

Emacs字体锁关键字中的单词边界
EN

Stack Overflow用户
提问于 2013-09-22 19:39:32
回答 1查看 392关注 0票数 1

如果在scratch缓冲区中粘贴和计算,下面的代码将无法突出显示2323-23中,但如果在文本缓冲区中完成,则不会突出显示。

代码语言:javascript
复制
;; 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仍然与2323-23中的匹配时,它会失败?

即使我更改为下面的代码,也只突出显示23-23中的第一个23-23

代码语言:javascript
复制
;;; 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的荧光笔是否有不良的形状。如果它的形式不正确,或者默默地发出错误信号,那么结束就不会被突出显示。

代码语言:javascript
复制
;;; 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))
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-22 23:46:01

它不在缓冲区*scratch*中这一事实表明,它是当前模式的一个问题。有两种主要可能性:

  • @wvcvw建议:检查chars、23的语法类是什么。
  • 已经为模式定义的font-lock-keywords与您的代码交互--例如,它们覆盖它。尝试将'APPEND作为第三个arg添加到font-lock-add-keywords中。尝试将t作为HIGHLIGHT表达式添加到萤光笔中(请参阅文档)。这将使您的高亮显示覆盖其他可能已经存在的任何内容。

顺便说一下,你说它在“文本缓冲区”中不起作用,但这意味着什么呢?在emacs -Q中,在text-mode中的缓冲区中计算代码会显示它确实有效。研究一下您的“文本缓冲区”模式是什么,并尝试上面的建议(如果必要的话,这两个项目,但首先尝试第二个)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18947980

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档