1
0
Fork 0
mirror of https://github.com/pnx/dotfiles synced 2026-06-16 11:24:55 +02:00

nvim: lsp: add support for lsp functionalites.

This commit is contained in:
Henrik Hautakoski 2024-09-08 13:32:28 +02:00
parent 313dcd0720
commit 8c0feb8acc
2 changed files with 32 additions and 4 deletions

View file

@ -42,22 +42,41 @@ return {
enabled = true,
},
codelens = {
enabled = false,
enabled = true,
},
inlay_hints = {
enabled = false,
enabled = true,
exclude = {},
},
servers = {},
},
config = function(_, opts)
local lspconfig = require("lspconfig")
local utils = require("user.utils.lsp")
local augroup = vim.api.nvim_create_augroup("Lsp", {})
local has_cmp, cmp_lsp = pcall(require, "cmp_nvim_lsp")
local capabilities = vim.tbl_deep_extend('force',
vim.lsp.protocol.make_client_capabilities() or {},
has_cmp and cmp_lsp.default_capabilities() or {})
for name, server_opts in pairs(opts.servers) do
local on_attach = function(_, bufnr)
---@param client vim.lsp.Client
---@param bufnr number
local on_attach = function(client, bufnr)
vim.api.nvim_clear_autocmds({ group = augroup, buffer = bufnr })
if (opts.inlay_hints.enabled or false) and client.server_capabilities.inlayHintProvider then
vim.lsp.inlay_hint.enable(true, { bufnr = bufnr })
end
if opts.codelens.enabled and client.server_capabilities.codeLensProvider then
utils.codelens(augroup, bufnr)
end
if opts.document_highlight.enabled and client.server_capabilities.documentHighlightProvider then
utils.document_highlight(bufnr)
end
-- Setup on save handler
if server_opts.on_save then
vim.api.nvim_create_autocmd("BufWritePre", {
@ -69,7 +88,8 @@ return {
end
server_opts = vim.tbl_deep_extend("force", {
on_attach = on_attach
on_attach = on_attach,
capabilities = capabilities
}, server_opts or {})
lspconfig[name].setup(server_opts)

View file

@ -29,4 +29,12 @@ function M.signature_help_on_hover(bufnr)
})
end
function M.codelens(augroup, bufnr)
vim.api.nvim_create_autocmd({ "BufEnter", "CursorHold", "InsertLeave" }, {
group = augroup,
buffer = bufnr,
callback = vim.lsp.codelens.refresh,
})
end
return M