我目前的设置如下:
local cwd = vim.fn.getcwd()
local project_library_path = cwd .. "/node_modules"
local cmd = {
DATA_PATH .. "/lsp_servers/angularls/node_modules/@angular/language-server/bin/ngserver",
"--ngProbeLocations",
project_library_path,
"--tsProbeLocations",
project_library_path ,
"--stdio",
}
require'lspconfig'.angularls.setup{
cmd = cmd,
on_new_config = function(new_config, new_root_dir)
new_config.cmd = cmd
end
}
在
:LspInfo
上,我可以看到 cmd
是可执行的,但不知何故它没有附加。
我很难区分
@angular/language-server
和 @angular/language-service
...
我不确定
tsProbeLocations
和 ngProbeLocations
的作用以及我的路径是否正确。
最后,我从 Angular Language Service 网站 红了,没有一个好的 Neovim 指南。 (除了
coc-angular
,但我不使用coc。)
我有类似的设置和同样的问题。确保已安装的语言服务器的版本与项目中使用的角度版本的主要版本相匹配。这为我解决了这个问题:
npm -g uninstall @angular/language-server
npm -g install @angular/language-server@[the latest matching angular-version]
有了这个,标准
lua require'lspconfig'.angularls.setup({})
应该可以毫无问题地工作。
我为我的 lspconfig 使用了默认的
require'lspconfig'.angularls.setup{}
,并且还安装了 @angular/language-server 作为 Angular 项目中的开发依赖项,并且它有效。
使用 npm 和默认 lspconfig 全局安装 Angular 语言服务器后,我还看到 cmd 是可执行的,没有客户端附加到缓冲区。
更换
local project_library_path = "/usr/lib/node_modules/@angular/language-server/"
我实际上编写了如何在 Neovim 中使用 Angular 语言服务的文档。 我认为内置的 neovim LSP 非常糟糕。我更喜欢COC。特别是对于打字稿等。
这里是文档的 URL,了解如何将 Angular 语言服务与 Neovim 一起使用。 它也应该适用于 vim,尽管我还没有在 vim 上测试过它