home: vim: move 'on_attach' to 'ambroisie.lsp'
This commit is contained in:
parent
fc35502141
commit
4c5c9deaae
83
home/vim/lua/ambroisie/lsp.lua
Normal file
83
home/vim/lua/ambroisie/lsp.lua
Normal file
|
@ -0,0 +1,83 @@
|
||||||
|
local M = {}
|
||||||
|
|
||||||
|
-- shared LSP configuration callback
|
||||||
|
-- @param client native client configuration
|
||||||
|
-- @param bufnr int? buffer number of the attched client
|
||||||
|
M.on_attach = function(client, bufnr)
|
||||||
|
-- Diagnostics
|
||||||
|
vim.diagnostic.config({
|
||||||
|
-- Disable virtual test next to affected regions
|
||||||
|
virtual_text = false,
|
||||||
|
-- Show diagnostics signs
|
||||||
|
signs = true,
|
||||||
|
-- Underline offending regions
|
||||||
|
underline = true,
|
||||||
|
-- Do not bother me in the middle of insertion
|
||||||
|
update_in_insert = false,
|
||||||
|
-- Show highest severity first
|
||||||
|
severity_sort = true,
|
||||||
|
})
|
||||||
|
|
||||||
|
vim.cmd([[
|
||||||
|
augroup DiagnosticsHover
|
||||||
|
autocmd! * <buffer>
|
||||||
|
" Show diagnostics on "hover"
|
||||||
|
autocmd CursorHold,CursorHoldI <buffer> lua vim.diagnostic.open_float(nil, {focus=false, scope="cursor"})
|
||||||
|
augroup END
|
||||||
|
]])
|
||||||
|
|
||||||
|
-- Format on save
|
||||||
|
if client.resolved_capabilities.document_formatting then
|
||||||
|
vim.cmd([[
|
||||||
|
augroup LspFormatting
|
||||||
|
autocmd! * <buffer>
|
||||||
|
autocmd BufWritePre <buffer> lua vim.lsp.buf.formatting_sync()
|
||||||
|
augroup END
|
||||||
|
]])
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Mappings
|
||||||
|
local wk = require("which-key")
|
||||||
|
|
||||||
|
local function list_workspace_folders()
|
||||||
|
local utils = require("ambroisie.utils")
|
||||||
|
utils.dump(vim.lsp.buf.list_workspace_folders())
|
||||||
|
end
|
||||||
|
|
||||||
|
local function show_line_diagnostics()
|
||||||
|
vim.diagnostic.open_float(nil, { scope="line" })
|
||||||
|
end
|
||||||
|
|
||||||
|
local function show_buffer_diagnostics()
|
||||||
|
vim.diagnostic.open_float(nil, { scope="buffer" })
|
||||||
|
end
|
||||||
|
|
||||||
|
local keys = {
|
||||||
|
K = { vim.lsp.buf.hover, "Show symbol information" },
|
||||||
|
["gd"] = { vim.lsp.buf.definition, "Go to definition" },
|
||||||
|
["gD"] = { vim.lsp.buf.declaration, "Go to declaration" },
|
||||||
|
["gi"] = { vim.lsp.buf.implementation, "Go to implementation" },
|
||||||
|
["gr"] = { vim.lsp.buf.references, "List all references" },
|
||||||
|
|
||||||
|
["<leader>c"] = {
|
||||||
|
name = "Code",
|
||||||
|
a = { vim.lsp.buf.code_action, "Code actions" },
|
||||||
|
d = { show_line_diagnostics, "Show line diagnostics" },
|
||||||
|
D = { show_buffer_diagnostics, "Show buffer diagnostics" },
|
||||||
|
r = { vim.lsp.buf.rename, "Rename symbol" },
|
||||||
|
s = { vim.lsp.buf.signature_help, "Show signature" },
|
||||||
|
t = { vim.lsp.buf.type_definition, "Go to type definition" },
|
||||||
|
w = {
|
||||||
|
name = "Workspace",
|
||||||
|
a = { vim.lsp.buf.add_workspace_folder, "Add folder to workspace" },
|
||||||
|
l = { list_workspace_folders, "List folders in workspace" },
|
||||||
|
r = { vim.lsp.buf.remove_workspace_folder, "Remove folder from workspace" },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
wk.register(keys, { buffer = bufnr })
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
return M
|
|
@ -34,82 +34,4 @@ M.list_lsp_clients = function(bufnr)
|
||||||
return names
|
return names
|
||||||
end
|
end
|
||||||
|
|
||||||
-- shared LSP configuration callback
|
|
||||||
-- @param client native client configuration
|
|
||||||
-- @param bufnr int? buffer number of the attched client
|
|
||||||
M.on_attach = function(client, bufnr)
|
|
||||||
-- Diagnostics
|
|
||||||
vim.diagnostic.config({
|
|
||||||
-- Disable virtual test next to affected regions
|
|
||||||
virtual_text = false,
|
|
||||||
-- Show diagnostics signs
|
|
||||||
signs = true,
|
|
||||||
-- Underline offending regions
|
|
||||||
underline = true,
|
|
||||||
-- Do not bother me in the middle of insertion
|
|
||||||
update_in_insert = false,
|
|
||||||
-- Show highest severity first
|
|
||||||
severity_sort = true,
|
|
||||||
})
|
|
||||||
|
|
||||||
vim.cmd([[
|
|
||||||
augroup DiagnosticsHover
|
|
||||||
autocmd! * <buffer>
|
|
||||||
" Show diagnostics on "hover"
|
|
||||||
autocmd CursorHold,CursorHoldI <buffer> lua vim.diagnostic.open_float(nil, {focus=false, scope="cursor"})
|
|
||||||
augroup END
|
|
||||||
]])
|
|
||||||
|
|
||||||
-- Format on save
|
|
||||||
if client.resolved_capabilities.document_formatting then
|
|
||||||
vim.cmd([[
|
|
||||||
augroup LspFormatting
|
|
||||||
autocmd! * <buffer>
|
|
||||||
autocmd BufWritePre <buffer> lua vim.lsp.buf.formatting_sync()
|
|
||||||
augroup END
|
|
||||||
]])
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Mappings
|
|
||||||
local wk = require("which-key")
|
|
||||||
|
|
||||||
local function list_workspace_folders()
|
|
||||||
M.dump(vim.lsp.buf.list_workspace_folders())
|
|
||||||
end
|
|
||||||
|
|
||||||
local function show_line_diagnostics()
|
|
||||||
vim.diagnostic.open_float(nil, { scope="line" })
|
|
||||||
end
|
|
||||||
|
|
||||||
local function show_buffer_diagnostics()
|
|
||||||
vim.diagnostic.open_float(nil, { scope="buffer" })
|
|
||||||
end
|
|
||||||
|
|
||||||
local keys = {
|
|
||||||
K = { vim.lsp.buf.hover, "Show symbol information" },
|
|
||||||
["gd"] = { vim.lsp.buf.definition, "Go to definition" },
|
|
||||||
["gD"] = { vim.lsp.buf.declaration, "Go to declaration" },
|
|
||||||
["gi"] = { vim.lsp.buf.implementation, "Go to implementation" },
|
|
||||||
["gr"] = { vim.lsp.buf.references, "List all references" },
|
|
||||||
|
|
||||||
["<leader>c"] = {
|
|
||||||
name = "Code",
|
|
||||||
a = { vim.lsp.buf.code_action, "Code actions" },
|
|
||||||
d = { show_line_diagnostics, "Show line diagnostics" },
|
|
||||||
D = { show_buffer_diagnostics, "Show buffer diagnostics" },
|
|
||||||
r = { vim.lsp.buf.rename, "Rename symbol" },
|
|
||||||
s = { vim.lsp.buf.signature_help, "Show signature" },
|
|
||||||
t = { vim.lsp.buf.type_definition, "Go to type definition" },
|
|
||||||
w = {
|
|
||||||
name = "Workspace",
|
|
||||||
a = { vim.lsp.buf.add_workspace_folder, "Add folder to workspace" },
|
|
||||||
l = { list_workspace_folders, "List folders in workspace" },
|
|
||||||
r = { vim.lsp.buf.remove_workspace_folder, "Remove folder from workspace" },
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
wk.register(keys, { buffer = bufnr })
|
|
||||||
end
|
|
||||||
|
|
||||||
return M
|
return M
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
lua << EOF
|
lua << EOF
|
||||||
local lspconfig = require("lspconfig")
|
local lspconfig = require("lspconfig")
|
||||||
|
local lsp = require("ambroisie.lsp")
|
||||||
local utils = require("ambroisie.utils")
|
local utils = require("ambroisie.utils")
|
||||||
|
|
||||||
-- Inform servers we are able to do completion, snippets, etc...
|
-- Inform servers we are able to do completion, snippets, etc...
|
||||||
|
@ -10,7 +11,7 @@ capabilities = require("cmp_nvim_lsp").update_capabilities(capabilities)
|
||||||
if utils.is_executable("clangd") then
|
if utils.is_executable("clangd") then
|
||||||
lspconfig.clangd.setup({
|
lspconfig.clangd.setup({
|
||||||
capabilities = capabilities,
|
capabilities = capabilities,
|
||||||
on_attach = utils.on_attach,
|
on_attach = lsp.on_attach,
|
||||||
})
|
})
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -18,7 +19,7 @@ end
|
||||||
if utils.is_executable("rnix-lsp") then
|
if utils.is_executable("rnix-lsp") then
|
||||||
lspconfig.rnix.setup({
|
lspconfig.rnix.setup({
|
||||||
capabilities = capabilities,
|
capabilities = capabilities,
|
||||||
on_attach = utils.on_attach,
|
on_attach = lsp.on_attach,
|
||||||
})
|
})
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -26,7 +27,7 @@ end
|
||||||
if utils.is_executable("pyright") then
|
if utils.is_executable("pyright") then
|
||||||
lspconfig.pyright.setup({
|
lspconfig.pyright.setup({
|
||||||
capabilities = capabilities,
|
capabilities = capabilities,
|
||||||
on_attach = utils.on_attach,
|
on_attach = lsp.on_attach,
|
||||||
})
|
})
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -34,7 +35,7 @@ end
|
||||||
if utils.is_executable("rust-analyzer") then
|
if utils.is_executable("rust-analyzer") then
|
||||||
lspconfig.rust_analyzer.setup({
|
lspconfig.rust_analyzer.setup({
|
||||||
capabilities = capabilities,
|
capabilities = capabilities,
|
||||||
on_attach = utils.on_attach,
|
on_attach = lsp.on_attach,
|
||||||
})
|
})
|
||||||
end
|
end
|
||||||
EOF
|
EOF
|
||||||
|
|
|
@ -1,9 +1,10 @@
|
||||||
lua << EOF
|
lua << EOF
|
||||||
local null_ls = require("null-ls")
|
local null_ls = require("null-ls")
|
||||||
|
local lsp = require("ambroisie.lsp")
|
||||||
local utils = require("ambroisie.utils")
|
local utils = require("ambroisie.utils")
|
||||||
|
|
||||||
null_ls.setup({
|
null_ls.setup({
|
||||||
on_attach = utils.on_attach,
|
on_attach = lsp.on_attach,
|
||||||
})
|
})
|
||||||
|
|
||||||
-- C, C++
|
-- C, C++
|
||||||
|
|
Loading…
Reference in a new issue