x/tools/gopls: consider moving methods inside its type in outline view

bqujaahr  于 7个月前  发布在  Go
关注(0)|答案(5)|浏览(80)

如果我们能在大纲视图中查看某种类型,并在一个地方看到该类型上声明的所有方法,那就太好了。目前类型及其方法是分开的。

eufgjt7s

eufgjt7s1#

你在使用语言服务器吗?("go.useLanguageServer": true)。
我问这个问题是因为扩展有两种不同的方式来计算大纲信息,所以我需要知道它以便将这个FR引导到正确的位置。

vlurs2pr

vlurs2pr2#

这在概念上是困难的:在Go语言中,一个方法可以在与声明不同的文件中定义。在这种情况下,没有结构体节点可以将其放在下面。在gopls中,我们决定将方法保留在顶层。

kcwpcxri

kcwpcxri3#

是的,将useLanguageServer设置为true :)

ubbxdtey

ubbxdtey4#

感谢!是的,我观察到当不使用语言服务器时,大纲视图将方法分组在其结构类型下。正如@heschik所说,Go的代码结构与其他语言不同,因此基于文档的符号层次结构(DocumentSymbolProvider及其相应的LSP方法)并不完全适用。
我将把这个问题转到gopls问题跟踪器上,以便我们在那里讨论如何改进这个问题。

pbossiut

pbossiut5#

感谢emil14提出的功能请求。目前,我们对大纲视图的处理方式是按照文件中出现的顺序显示符号。这将需要我们改变这种行为。在继续进行之前,我想听听其他用户是否认为这是一个改进。值得注意的是,我们无法显示嵌套在类型声明中的方法,因为这会破坏VS Code的面包屑功能。

相关问题