75 lines
3.1 KiB
Lua
75 lines
3.1 KiB
Lua
vim.cmd([[
|
|
highlight LspDiagnosticsLineNrError guibg=#51202A guifg=#FF0000 gui=bold
|
|
highlight LspDiagnosticsLineNrWarning guibg=#51412A guifg=#FFA500 gui=bold
|
|
highlight LspDiagnosticsLineNrInformation guibg=#1E535D guifg=#00FFFF gui=bold
|
|
highlight LspDiagnosticsLineNrHint guibg=#1E205D guifg=#008bbd gui=bold
|
|
|
|
sign define LspDiagnosticsSignError text= texthl=LspDiagnosticsSignError linehl= numhl=LspDiagnosticsLineNrError
|
|
sign define LspDiagnosticsSignWarning text= texthl=LspDiagnosticsSignWarning linehl= numhl=LspDiagnosticsLineNrWarning
|
|
sign define LspDiagnosticsSignInformation text= texthl=LspDiagnosticsSignInformation linehl= numhl=LspDiagnosticsLineNrInformation
|
|
sign define LspDiagnosticsSignHint text= texthl=LspDiagnosticsSignHint linehl= numhl=LspDiagnosticsLineNrHint
|
|
]])
|
|
|
|
local U = {}
|
|
|
|
function U.fmt_on_save(client)
|
|
if client.resolved_capabilities.document_formatting then
|
|
vim.api.nvim_command("autocmd BufWritePre <buffer> lua vim.lsp.buf.formatting_sync()")
|
|
end
|
|
end
|
|
|
|
function U.capabilities()
|
|
local capabilities = vim.lsp.protocol.make_client_capabilities()
|
|
return require("cmp_nvim_lsp").update_capabilities(capabilities)
|
|
end
|
|
|
|
---Disable formatting for servers. Handles by null-ls
|
|
---@source https://github.com/jose-elias-alvarez/null-ls.nvim/wiki/Avoiding-LSP-formatting-conflicts
|
|
function U.disable_formatting(client)
|
|
client.resolved_capabilities.document_formatting = false
|
|
client.resolved_capabilities.document_range_formatting = false
|
|
end
|
|
|
|
function U.mappings(bufnr)
|
|
local opts = { noremap = true, silent = true }
|
|
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", "gh", "<cmd>lua vim.lsp.buf.hover()<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", "gr", "<cmd>lua vim.lsp.buf.references()<CR>", opts)
|
|
vim.api.nvim_buf_set_keymap(bufnr, "i", "<C-h>", "<cmd>lua vim.lsp.buf.signature_help()<CR>", opts)
|
|
vim.api.nvim_buf_set_keymap(bufnr, "n", "<leader>rn", "<cmd>lua vim.lsp.buf.rename()<CR>", opts)
|
|
vim.api.nvim_buf_set_keymap(bufnr, "n", "<leader>ca", "<cmd>lua vim.lsp.buf.code_action()<CR>", opts)
|
|
vim.api.nvim_buf_set_keymap(bufnr, "n", "{g", "<cmd>lua vim.lsp.diagnostic.goto_prev()<CR>", opts)
|
|
vim.api.nvim_buf_set_keymap(bufnr, "n", "}g", "<cmd>lua vim.lsp.diagnostic.goto_next()<CR>", opts)
|
|
end
|
|
|
|
function U.goto_split(split_cmd)
|
|
local handler = function(_, result, ctx)
|
|
if result == nil or vim.tbl_isempty(result) then
|
|
local _ = require("vim.lsp.log").info() and require("vim.lsp.log").info(ctx.method, "No location found")
|
|
return nil
|
|
end
|
|
|
|
if split_cmd then
|
|
vim.cmd(split_cmd)
|
|
end
|
|
|
|
if vim.tbl_islist(result) then
|
|
vim.lsp.util.jump_to_location(result[1])
|
|
|
|
if #result > 1 then
|
|
vim.lsp.util.set_qflist(vim.lsp.util.locations_to_items(result))
|
|
vim.api.nvim_command("copen")
|
|
vim.api.nvim_command("wincmd p")
|
|
end
|
|
else
|
|
vim.lsp.util.jump_to_location(result)
|
|
end
|
|
end
|
|
|
|
return handler
|
|
end
|
|
|
|
return U
|