Compare commits

...

3 commits

Author SHA1 Message Date
Bruno BELANYI 23c4256769 home: vim: telescope: add LSP handler
All checks were successful
continuous-integration/drone/push Build is passing
2022-03-08 20:57:28 +01:00
Bruno BELANYI 4e9764920a home: vim: move 'on_attach' to 'ambroisie.lsp' 2022-03-08 20:20:22 +01:00
Bruno BELANYI 3fc0201dfa home: vim: lspconfig: use actual 'lspconfig' name 2022-03-08 20:18:02 +01:00
6 changed files with 97 additions and 88 deletions

View file

@ -84,6 +84,7 @@ in
gitsigns-nvim # Fast git UI integration
which-key-nvim # Show available mappings
telescope-fzf-native-nvim # Use 'fzf' fuzzy matching algorithm
telescope-lsp-handlers-nvim # Use 'telescope' for various LSP actions
telescope-nvim # Fuzzy finder interface
];

View 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

View file

@ -34,82 +34,4 @@ M.list_lsp_clients = function(bufnr)
return names
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

View file

@ -1,5 +1,6 @@
lua << EOF
local lsp = require("lspconfig")
local lspconfig = require("lspconfig")
local lsp = require("ambroisie.lsp")
local utils = require("ambroisie.utils")
-- Inform servers we are able to do completion, snippets, etc...
@ -8,33 +9,33 @@ capabilities = require("cmp_nvim_lsp").update_capabilities(capabilities)
-- C/C++
if utils.is_executable("clangd") then
lsp.clangd.setup({
lspconfig.clangd.setup({
capabilities = capabilities,
on_attach = utils.on_attach,
on_attach = lsp.on_attach,
})
end
-- Nix
if utils.is_executable("rnix-lsp") then
lsp.rnix.setup({
lspconfig.rnix.setup({
capabilities = capabilities,
on_attach = utils.on_attach,
on_attach = lsp.on_attach,
})
end
-- Python
if utils.is_executable("pyright") then
lsp.pyright.setup({
lspconfig.pyright.setup({
capabilities = capabilities,
on_attach = utils.on_attach,
on_attach = lsp.on_attach,
})
end
-- Rust
if utils.is_executable("rust-analyzer") then
lsp.rust_analyzer.setup({
lspconfig.rust_analyzer.setup({
capabilities = capabilities,
on_attach = utils.on_attach,
on_attach = lsp.on_attach,
})
end
EOF

View file

@ -1,9 +1,10 @@
lua << EOF
local null_ls = require("null-ls")
local lsp = require("ambroisie.lsp")
local utils = require("ambroisie.utils")
null_ls.setup({
on_attach = utils.on_attach,
on_attach = lsp.on_attach,
})
-- C, C++

View file

@ -13,4 +13,5 @@ telescope.setup({
})
telescope.load_extension("fzf")
telescope.load_extension("lsp_handlers")
EOF