2

我在整个 LLVM + Clang 的大型代码库上使用 Sublime Text 3。我严重缺少的一件事是能够转到属于特定类的函数。

为了解释,假设我在一个包含 10 多个类的文件中,所有类都有一个名为getSourceRange(). 当前goto symbol功能仅索引方法名称,因此当我搜索此方法时,我会得到一堆相同的结果,我必须手动完成这些结果,直到找到正确的结果。在项目范围Goto Symbol内使用更糟糕,因为冲突更多。

我想要的是索引符号名称始终包含类名,例如,VarDecl::getSourceRange而不是getSourceRange. 我可以通过删除C++/Symbol Index.tmPreferences本质上是CLASS::从索引名称中剥离的实现来为类外的实现启用此功能。但是我还不知道如何将类名注入到类范围内的定义中。

这些信息都在 TextMate 范围内,因此我可以从技术上为以下范围添加规则:

source.c++  meta.class-struct-block.c++  entity.name.function.c

但我不知道如何将类的名称作为字符串访问(存储在meta.class-struct-block.c++ » entity.name.type.c++保存在 中C++.tmLanguage),更不用说格式化函数的索引符号名称以包含它了。

如果可能的话,任何人都知道如何做到这一点?TextMate 的解释这些机制的页面并没有提到这是可能的,因为它的价值。

我的尝试,停留在如何将语法名称插入symbol(Index)?Transformation

<?xml version="1.0" encoding="UTF-8"?>
<plist version="1.0">
<dict>
    <key>scope</key>
    <string>source.c++ meta.class-struct-block.c++ entity.name.function.c</string>
    <key>settings</key>
    <dict>
        <key>symbolIndexTransformation</key>
        <string>/^/${entity.name.type.c++}::/;</string>
        <key>symbolTransformation</key>
        <string>/^/${entity.name.type.c++}::/;</string> <!-- just adds it literally :( -->
    </dict>
</dict>
</plist>
4

0 回答 0