What is nvim-lspconfig? Does it provide a LSP client?
nvim-lspconfig includes none of the LSP client implementation. All of the code for the LSP client is located in the core of neovim.
nvim-lspconfig is just "data". It provides starter configs for various LSP servers:
- Sets common
filetypes to auto-attach to buffers.
- Sends common server-specific initialization options and settings.
Do I need nvim-lspconfig ?
You can use the built-in language server client without nvim-lspconfig. You can just copy any of the configs in https://github.com/neovim/nvim-lspconfig/tree/master/lsp directly into your personal config.
Why do I have to install nvim-jdtls/nvim-metals if I have nvim-lspconfig installed already? (or vice versa)
Many servers go "off-spec" and add their own functionality, which requires custom handlers. Language server specific plugins like nvim-jdtls and nvim-metals can be safely installed alongside nvim-lspconfig, and you should prefer language specific extensions for their respective servers.