【问题标题】:emacs lisp and c-mode: when am I in a comment regionemacs lisp 和 c-mode:我什么时候在评论区
【发布时间】:2016-04-26 14:44:13
【问题描述】:

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

【问题讨论】:

    标签: emacs elisp


    【解决方案1】:

    解决这个问题的方法是使用syntax-ppss,它适用于 C/C++ 和大多数主要模式。例如。当且仅当您不在字符串或注释中时,(null (nth 8 (syntax-ppss))) 才会为非零。

    【讨论】:

      【解决方案2】:
      (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))))))
      

      【讨论】:

      • 请提供的不仅仅是链接。
      • 您可以通过在此处粘贴代码来修正您的答案。这样,在链接失效后,答案仍然有用。
      • 如果你喜欢它,为什么不复制它,它是免费的。
      猜你喜欢
      • 2013-07-20
      • 2011-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-16
      • 1970-01-01
      • 1970-01-01
      • 2020-12-12
      相关资源
      最近更新 更多