如果忽略字符串中的注释,我如何匹配Font Lock fontification的字符串? e.g。
(setq str-regexp "^foobar$"
comment-regexp "/\\*[^*]*\\*/")
现在我如何返回匹配数据以在下面的缓冲区文本中为字符串“foobar”提供信息?
foo/*comment*/bar
fo/*comment*/obar
fooba/*comment*/r
我可以轻松地从缓冲区子字符串中删除注释,然后匹配该子字符串中的正则表达式,但我不知道如何将其转换回适合Font Lock的缓冲区标记/点。有什么想法吗?
答案 0 :(得分:1)
尝试使用库hide-comnts.el
中的宏with-comments-hidden
内的匹配代码。
EmacsWiki页面Hide Or Ignore Comments简要介绍了宏和库。
答案 1 :(得分:0)
也许你想删除文本中的所有评论:
使用以下正则表达式匹配注释:
((?:\/\*)(.*?)(?:\*\/))
然后将其替换为''
,以仅生成未注释的文本。
结果文字:
foobar
foobar
foobar
答案 2 :(得分:0)
Font-lock支持另一种匹配单词的方法。它不是使用正则表达式,而是允许您调用函数来为它完成工作。
在此功能中,您可以匹配字母单词,随意浏览评论。该函数的唯一要求是行为类似re-search-forward
,当找到匹配时返回非零值并相应地设置match-data
。
由于匹配的单词将包含注释,您必须编写字体锁定规则,以便为单词着色,但保持注释不变。您可以通过将规则中的OVERRIDE标记设置为keep
或append
(取决于您要执行的操作)来执行此操作。