A simple wrapper for nvim-lspconfig and mason-lspconfig to easily setup LSP servers.
use {
'junnplus/lsp-setup.nvim',
requires = {
'neovim/nvim-lspconfig',
'williamboman/mason.nvim',
'williamboman/mason-lspconfig.nvim',
}
}
Plug 'junnplus/lsp-setup.nvim'
Plug 'neovim/nvim-lspconfig'
Plug 'williamboman/mason.nvim'
Plug 'williamboman/mason-lspconfig.nvim'
require('lsp-setup').setup({
servers = {
pylsp = {}
}
})
You can replace pylsp
with the LSP server name you need, see available LSPs.
Also support installing custom versions of LSP servers, for example:
require('lsp-setup').setup({
servers = {
['rust_analyzer@nightly'] = {}
}
})
require('lsp-setup').setup({
-- Default mappings
-- gD = 'lua vim.lsp.buf.declaration()',
-- gd = 'lua vim.lsp.buf.definition()',
-- gt = 'lua vim.lsp.buf.type_definition()',
-- gi = 'lua vim.lsp.buf.implementation()',
-- gr = 'lua vim.lsp.buf.references()',
-- K = 'lua vim.lsp.buf.hover()',
-- ['<C-k>'] = 'lua vim.lsp.buf.signature_help()',
-- ['<space>rn'] = 'lua vim.lsp.buf.rename()',
-- ['<space>ca'] = 'lua vim.lsp.buf.code_action()',
-- ['<space>f'] = 'lua vim.lsp.buf.formatting()',
-- ['<space>e'] = 'lua vim.diagnostic.open_float()',
-- ['[d'] = 'lua vim.diagnostic.goto_prev()',
-- [']d'] = 'lua vim.diagnostic.goto_next()',
default_mappings = true,
-- Custom mappings, will overwrite the default mappings for the same key
-- Example mappings for telescope pickers:
-- gd = 'lua require"telescope.builtin".lsp_definitions()',
-- gi = 'lua require"telescope.builtin".lsp_implementations()',
-- gr = 'lua require"telescope.builtin".lsp_references()',
mappings = {},
-- Global on_attach
on_attach = function(client, bufnr)
-- Support custom the on_attach function for global
-- Formatting on save as default
require('lsp-setup.utils').format_on_save(client)
end,
-- Global capabilities
capabilities = vim.lsp.protocol.make_client_capabilities(),
-- Configuration of LSP servers
servers = {
-- Install LSP servers automatically
-- LSP server configuration please see: https://github.com/neovim/nvim-lspconfig/blob/master/doc/server_configurations.md
-- pylsp = {},
-- rust_analyzer = {
-- settings = {
-- ['rust-analyzer'] = {
-- cargo = {
-- loadOutDirsFromCheck = true,
-- },
-- procMacro = {
-- enable = true,
-- },
-- },
-- },
-- },
},
})
If installed, will auto advertise capabilities to LSP servers.
-- Setup sumneko_lua with lua-dev
require('lsp-setup').setup({
servers = {
sumneko_lua = require('lua-dev').setup({
lspconfig = {
settings = {
Lua = {
format = {
enable = true,
}
}
}
},
}),
}
})
Using require('lsp-setup.rust-tools').setup({})
instead of require('rust-tools').setup({})
.
require('lsp-setup').setup({
servers = {
rust_analyzer = require('lsp-setup.rust-tools').setup({
server = {
settings = {
['rust-analyzer'] = {
cargo = {
loadOutDirsFromCheck = true,
},
procMacro = {
enable = true,
},
},
},
},
})
}
})
Using require('lsp-setup.clangd_extensions').setup({})
instead of require('clangd_extensions').setup({})
.
require('lsp-setup').setup({
servers = {
clangd = require('lsp-setup.clangd_extensions').setup({})
}
})
Bug reports and feature requests are welcome! PRs are doubly welcome!