Neovim: LSP Extremely Slow With tsserver
Neovim’s built-in language server implementation is slow as molasses with
tsserver using a default setup. Even a simple “go to definition” took up to a
minute. I found it quicker and more efficient to just use *
. After this
frustrating experience while working on a JavaScript code base, I just found a
solution. You have to configure a root folder like this:
require('lspconfig').tsserver.setup({
root_dir = require('lspconfig.util').root_pattern('.git')
})
The above example will find your Git repository root and start the server
there. Otherwise, for some inexplicable reason, it appears to start this server
in the current user’s home folder. You can verify this with :LspInfo
. As one
server instance per recursively found package.json
is started, you quickly
run out of resources and the LSP functionality slows down to a crawl. With the
root folder set, it operates almost as quick as inside VScode or when using
Coc.