nvim/lua/plugs/nvim-lspconfig.lua

43 lines
1.4 KiB
Lua

return {
{
-- lsp的config
"neovim/nvim-lspconfig",
dependencies = {
"folke/neodev.nvim",
"hrsh7th/cmp-nvim-lsp",
},
config = function()
require 'neodev'.setup {}
local servers = {
lua_ls = require('lsp.lua'),
clangd = require('lsp.c'),
bashls = require('lsp.bash'),
basedpyright = require('lsp.basedpyright'),
yamlls = require('lsp.yaml'),
gopls = require('lsp.go'),
jsonls = require('lsp.json'),
}
-- capabilities 在此处统一注入,各 lsp/*.lua 不单独 require cmp_nvim_lsp
-- 避免模块层面 require 带来的隐式依赖
local capabilities = require('cmp_nvim_lsp').default_capabilities()
for server, config in pairs(servers) do
config.capabilities = capabilities
vim.lsp.config(server, config)
vim.lsp.enable(server)
end
G.map({
{ 'n', '<cs-r>', '<cmd>lua vim.lsp.buf.rename()<CR>' },
{ 'n', 'gd', '<cmd>lua vim.lsp.buf.definition()<CR>' },
{ 'n', 'gh', '<cmd>lua vim.lsp.buf.hover()<CR>' },
{ 'n', 'gD', '<cmd>lua vim.lsp.buf.declaration()<CR>' },
{ 'n', 'gi', '<cmd>lua vim.lsp.buf.implementation()<CR>' },
{ 'n', 'gr', '<cmd>lua vim.lsp.buf.references()<CR>' },
{ 'n', '<cs-i>', '<cmd>lua vim.lsp.buf.format()<CR>' },
})
end
},
}