c3d4292dd2
together B)
95 lines
3.2 KiB
Lua
95 lines
3.2 KiB
Lua
local M = {}
|
|
|
|
-- From plugins.lua
|
|
-- LSP EZ Installer
|
|
-- use {
|
|
-- 'williamboman/nvim-lsp-installer',
|
|
-- after = { 'cmp-nvim-lsp', 'nvim-lspconfig' },
|
|
-- event = 'BufRead',
|
|
-- config = function() require'configs.lsp-installer'.config() end
|
|
-- }
|
|
|
|
function M.config()
|
|
local status_lsp_installer_ok, lsp_installer = pcall(require, "nvim-lsp-installer")
|
|
if not status_lsp_installer_ok then
|
|
return
|
|
end
|
|
|
|
-- Highlight under current selection
|
|
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 }
|
|
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)
|
|
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)
|
|
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()' ]]
|
|
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
|
|
|