init.lua/lua/lsp/config.lua(view raw)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
local M = {}
function M.setup()
local on_attach = function(client, bufnr)
vim.api.nvim_buf_set_option(bufnr, "omnifunc", "v:lua.vim.lsp.omnifunc")
client.resolved_capabilities.document_formatting = false
client.resolved_capabilities.document_range_formatting = false
local function buf_set_keymap(...)
vim.api.nvim_buf_set_keymap(bufnr, "n", ...)
end
local opts = { noremap = true, silent = true }
buf_set_keymap("K", "<cmd>lua vim.lsp.buf.hover()<CR>", opts)
buf_set_keymap("gd", "<cmd>lua vim.lsp.buf.definition()<CR>", opts)
buf_set_keymap("gD", "<cmd>lua vim.lsp.buf.declaration()<CR>", opts)
buf_set_keymap("gr", "<cmd>lua vim.lsp.buf.references()<CR>", opts)
buf_set_keymap("gI", "<cmd>lua vim.lsp.buf.implementation()<CR>", opts)
buf_set_keymap("gs", "<cmd>lua vim.lsp.buf.signature_help()<CR>", opts)
buf_set_keymap("gl", "<cmd>lua vim.lsp.diagnostic.show_line_diagnostics()<CR>", opts)
buf_set_keymap("<leader>la", "<cmd>Telescope lsp_code_actions<CR>", opts)
buf_set_keymap("<leader>ld", "<cmd>TroubleToggle<cr>", opts)
buf_set_keymap("<leader>lr", "<cmd>lua vim.lsp.buf.rename()<CR>", opts)
buf_set_keymap("<leader>lf", "<cmd>lua vim.lsp.buf.formatting()<CR>", opts)
buf_set_keymap("<leader>ls", "<cmd>Telescope lsp_document_symbols<CR>", opts)
buf_set_keymap("<leader>li", "<cmd>LspInfo<CR>", opts)
buf_set_keymap("<leader>lR", "<cmd>LspRestart<CR>", opts)
end
require("nvim-lsp-installer").on_server_ready(function(server)
local opts = { on_attach = on_attach }
if server.name == "jsonls" then
opts = vim.tbl_deep_extend("force", opts, require "lsp.providers.jsonls" or {})
elseif server.name == "yamlls" then
opts = vim.tbl_deep_extend("force", opts, require "lsp.providers.yamlls" or {})
elseif server.name == "tsserver" then
opts = vim.tbl_deep_extend("force", opts, require "lsp.providers.tsserver" or {})
elseif server.name == "sumneko_lua" then
opts = vim.tbl_deep_extend("force", opts, require "lsp.providers.sumneko_lua" or {})
end
server:setup(opts)
require("lspconfig")["null-ls"].setup {}
vim.cmd [[ do User LspAttachBuffers ]]
end)
end
return M
|