emacs lisp和c-mode:我什么时候在评论区域

时间:2012-10-10 09:09:37

标签: emacs elisp

我想在c / c ++缓冲区中搜索正则表达式,但我想避免表达式匹配注释区域。有没有办法使用c模式来知道一堆文本是否在评论区域内(或者一个点是否在评论区域内)?

2 个答案:

答案 0 :(得分:10)

解决问题的方法是syntax-ppss,它适用于C / C ++和大多数主要模式。例如。当且仅当您不在字符串或评论范围内时,(null (nth 8 (syntax-ppss)))才是非零的。

答案 1 :(得分:0)

(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))))))