nvim-config/lua/configs/lsp-installer.lua

86 lines
3.0 KiB
Lua
Raw Normal View History

2022-03-01 02:58:43 +00:00
local M = {}
function M.config()
local status_lsp_installer_ok, lsp_installer = pcall(require, "nvim-lsp-installer")
if not status_lsp_installer_ok then
return
end
2022-03-01 07:42:54 +00:00
-- Highlight under current selection
2022-03-01 02:58:43 +00:00
local function lsp_highlight_document(client)
if client.resolved_capabilities.document_highlight then
vim.api.nvim_exec(
[[
augroup lsp_document_highlight
autocmd! * <buffer>
autocmd CursorHold <buffer> lua vim.lsp.buf.document_highlight()
autocmd CursorMoved <buffer> lua vim.lsp.buf.clear_references()
augroup END
]],
false
)
end
end
local function lsp_keymaps(bufnr)
local opts = { noremap = true, silent = true }
2022-05-01 17:43:11 +00:00
vim.api.nvim_buf_set_keymap(bufnr, "n", "K", "<cmd>lua vim.lsp.buf.hover()<CR>", opts)
vim.api.nvim_buf_set_keymap(bufnr, "n", "gl", "<cmd>lua vim.diagnostic.open_float({ source = false, prefix = function(d, i, ttl) return string.rep(' ', #tostring(ttl) - #tostring(i)) .. tostring(i) .. ': ', nil end })<CR>", opts)
2022-03-01 02:58:43 +00:00
vim.api.nvim_buf_set_keymap(bufnr, "n", "gD", "<cmd>lua vim.lsp.buf.declaration()<CR>", opts)
vim.api.nvim_buf_set_keymap(bufnr, "n", "gd", "<cmd>lua vim.lsp.buf.definition()<CR>", opts)
vim.api.nvim_buf_set_keymap(bufnr, "n", "gi", "<cmd>lua vim.lsp.buf.implementation()<CR>", opts)
vim.api.nvim_buf_set_keymap(bufnr, "n", "go", "<cmd>lua vim.diagnostic.open_float()<CR>", opts)
vim.api.nvim_buf_set_keymap(bufnr, "n", "[d", '<cmd>lua vim.diagnostic.goto_prev({ border = "rounded" })<CR>', opts)
vim.api.nvim_buf_set_keymap(bufnr, "n", "]d", '<cmd>lua vim.diagnostic.goto_next({ border = "rounded" })<CR>', opts)
2022-03-01 06:25:44 +00:00
vim.api.nvim_buf_set_keymap(bufnr, "n", "<leader>ll", "<cmd>lua vim.diagnostic.setloclist()<CR>", opts)
vim.api.nvim_buf_set_keymap(bufnr, "n", "<leader>lf", "<cmd>lua vim.lsp.buf.formatting_sync()<CR>", opts)
--vim.cmd [[ command! Format execute 'lua vim.lsp.buf.formatting()' ]]
2022-03-01 02:58:43 +00:00
end
local on_attach = function(client, bufnr)
if client.name == "tsserver" then
client.resolved_capabilities.document_formatting = false
end
if client.name == "jsonls" then
client.resolved_capabilities.document_formatting = false
end
if client.name == "html" then
client.resolved_capabilities.document_formatting = false
end
if client.name == "sumneko_lua" then
client.resolved_capabilities.document_formatting = false
end
lsp_keymaps(bufnr)
lsp_highlight_document(client)
end
local client_capabilities = vim.lsp.protocol.make_client_capabilities()
-- Add cmp_nvim_lsp capabilities
local status_cmp_nvim_lsp_ok, cmp_nvim_lsp = pcall(require, "cmp_nvim_lsp")
if not status_cmp_nvim_lsp_ok then
return
end
local capabilities = cmp_nvim_lsp.update_capabilities(client_capabilities)
lsp_installer.on_server_ready(function(server)
local opts = server:get_default_options()
opts.on_attach = on_attach
opts.capabilities = capabilities
opts.settings = {
Lua = {
diagnostics = {
globals = { 'vim' }
}
}
}
server:setup(opts)
end)
end
return M