8
我想在c/C++缓冲区中搜索正则表达式,但我想避免表达式匹配注释区域。有没有一种方法使用c模式来了解一堆文本是否在注释区域内(或点在注释区域内)?emacs lisp和c-mode:当我在评论区
我想在c/C++缓冲区中搜索正则表达式,但我想避免表达式匹配注释区域。有没有一种方法使用c模式来了解一堆文本是否在注释区域内(或点在注释区域内)?emacs lisp和c-mode:当我在评论区
明白这一点的方法是用syntax-ppss
这在C/C++,最重要的模式运作。例如。 (null (nth 8 (syntax-ppss)))
将是非零,当且仅当您不在字符串或评论中。
(defun re-search-forward-not-in-comment (regexp)
"Search forward first regexp not inside a comment. "
(interactive
(list (read-from-minibuffer "Regexp: ")))
(while (and (re-search-forward regexp nil t 1)
(and (nth 8 (syntax-ppss))(nth 4 (syntax-ppss))))))
请提供的不仅仅是一个链接。 – skolima
你可以在这里粘贴代码来修复你的答案。这样,链接烂掉后,答案仍然有用。 –
如果你喜欢它,为什么不复制它,它是免费的。 –