首页 > 文章列表 > vscode:代码中的符号搜索功能

vscode:代码中的符号搜索功能

225 2024-05-02
问题内容

如果我使用 ctrl-t (符号搜索),我会得到所有符号。这意味着我的符号和我使用的库的符号。

有没有办法将符号搜索限制为仅在我的代码中的符号(不包括库中的符号)。

我使用 vscode for Go。

在上面的屏幕截图中,我突出显示了来自我的代码的单行。

如果“仅我的代码”的过滤器不可能,那么如果我的代码能够被 vscode 突出显示,那就太好了。

相关问题:https://github.com/golang/go/issues/37236


正确答案


相关问题:https://github.com/golang/go/issues/37236< /a>

该问题刚刚通过 cl 490935 解决并提交< a href="https://github.com/golang/tools/commit/8e9b1853d0adc8c8c3be333e518b6a44b4582945" rel="nofollow noreferrer">golang/tools 提交 8e9b185:

gopls/internal/lsp/source:添加“symbolscope”选项

添加一个新的“symbolscope”选项,用于控制匹配是否仅限于工作区包。
这是新的默认行为,尽管可以通过设置 "symbolscope": "all" 来启用旧行为。

实际上,cl 494217 保留了此默认值 设置为“all”,并征求我们用户的默认反馈 更喜欢。

您现在拥有:

symbolscope 枚举

symbolscope 控制在哪些包中搜索工作区/符号 请求。

默认值“workspace”仅搜索工作空间 包。
遗留行为“all”会导致所有加载的包 搜索,包括依赖项;这个比较贵,而且可能 返回不需要的结果。

必须是以下之一:

  • "all" 匹配任何加载的包中的符号,包括依赖项。
  • "workspace" 仅匹配工作空间包中的符号。

这仍然可能包括供应,这可能是一个问题。

注意:这不包括 #37237 ("x/tools/gopls : 支持symbol的高级查询语法"):

直到 vs code 允许控制工作区符号结果对话框为止。

就像现在一样,任何类型的高级查询语法都会导致 vs code 过滤掉所有结果,因为它在我们返回结果后会进行自己的一轮排序和过滤。

您现在可以通过构建 gopls@master 来测试这一点:

例如:

git clone https://go.googlesource.com/tools
cd tools/gopls && go install

thomas güttler,op,确认

ctrl+t 现在仅显示我的代码:

存在回归(#60027workspacesymbol 以奇怪的顺序返回奇怪的结果),这将通过 gopls/v0.12.0 修复,感谢 findleyr

还有paul jolly 添加

此问题与工作区之外的符号有关。此更改对您有帮助吗?

不是真的。因为我要搜索符号的范围发生了变化。

  • 有时我想搜索相当于所有包空间的内容,
  • 有时只是在工作区,
  • 有时只是在当前文件所属模块的范围内,
  • 有时是当前文件所属包的范围,
  • 有时仅在当前文件的范围内。

因此,只有一个静态配置选项并没有多大帮助。
并不是说这对其他人没有帮助,我只是将其与之前讨论过的问题联系起来。