如何在Neovim中通过lspconfig执行typescript.goToSourceDefinition?执行无响应
解决Neovim中TypeScript跳转到实际实现而非类型定义的问题
你当前调用typescript.goToSourceDefinition无反应的核心原因是命令参数格式不符合tsserver的要求。tsserver对该命令的参数结构有明确规定,不能直接将uri和position作为独立参数传入,需要包裹在指定结构的对象中。
修正后的代码
直接复用make_position_params返回的完整参数对象即可,它完全符合tsserver的参数要求:
local params = vim.lsp.util.make_position_params() vim.lsp.buf.execute_command({ command = "typescript.goToSourceDefinition", arguments = { params } })
参数格式说明
原来的代码把params.textDocument.uri和params.position拆成两个独立参数传入,但tsserver期望的是包含textDocument和position字段的对象数组。上面的代码直接将完整的params对象放入arguments数组,完美匹配tsserver的参数规范,执行后就能正确跳转到.ts文件中的函数实际实现,而非.d.ts的类型定义。
内容的提问来源于stack exchange,提问作者cheezsteak
相关产品推荐
相关产品推荐

