Emacs缓冲区的语法信息

Emacs缓冲区的语法信息,emacs,syntax,buffer,Emacs,Syntax,Buffer,我目前正在Emacs中实现集群查询替换。集群应该对环境敏感 案例 符号和词的上下文及其应用 hit是普通代码、注释内部还是字符串文本的一部分 前两点很容易提高效率。最后一点需要一种有效的方法来提取Emacs缓冲区的所有模式语法特定(语法表)注释和字符串区域。我知道语法PPS,但我想用一种更快的方法获取所有区域。是否有内置函数,或者我必须手动搜索每个字符串和注释开始-结束对。我不想依赖于字体锁定,因为这对我的应用程序来说太慢了 有什么想法吗?我认为“向前跳过语法”就是你想要的。如果你有CEDET工

我目前正在Emacs中实现集群查询替换。集群应该对环境敏感

  • 案例
  • 符号和词的上下文及其应用
  • hit是普通代码、注释内部还是字符串文本的一部分
  • 前两点很容易提高效率。最后一点需要一种有效的方法来提取Emacs缓冲区的所有模式语法特定(
    语法表
    )注释和字符串区域。我知道
    语法PPS
    ,但我想用一种更快的方法获取所有区域。是否有内置函数,或者我必须手动搜索每个字符串和注释开始-结束对。我不想依赖于
    字体锁定
    ,因为这对我的应用程序来说太慢了


    有什么想法吗?

    我认为“向前跳过语法”就是你想要的。

    如果你有CEDET工具套件,你可以使用语义工具附带的词法分析来完成这项工作。所有支持的模式都有一个lexer,但这些lexer通常忽略注释。创建只处理注释和字符串的新词法分析器并不困难,在
    semantic doc snarf comment for tag
    中有一个处理标记文档的示例


    词法分析器的优点在于它提供了一个词法标记列表,您可以用一种简单的方式进行筛选。

    是否
    语法ppss
    仅适用于emacs lisp模式?否,它应该适用于所有模式。事实上,暂时忽略我最初的答案,“syntax-ppss”和“parse-partial-sexp”可能是最好的选择。我过去也写过类似的东西,我很愿意帮忙,所以请随时告诉我你的进展情况。
    syntax-ppss-contest
    正是这样做的。这个问题很好,项目也很好!我没有知识来帮助你回答你的问题,但我有兴趣在你完成后看看这是怎么回事。你打算把这个提交给ELPA吗?