dots/configs/nvim/lua/aleidk/autocmds.lua
2025-09-01 12:17:39 -04:00

34 lines
1.3 KiB
Lua

vim.api.nvim_create_autocmd('LspAttach', {
callback = function(args)
local client = vim.lsp.get_client_by_id(args.data.client_id)
if not client then
return
end
vim.bo[args.buf].omnifunc = 'v:lua.MiniCompletion.completefunc_lsp'
-- Prefer LSP folding if client supports it
if client:supports_method('textDocument/foldingRange') then
local win = vim.api.nvim_get_current_win()
vim.wo[win][0].foldexpr = 'v:lua.vim.lsp.foldexpr()'
end
vim.keymap.set({ "n", "x", "v" }, "<leader>la", vim.lsp.buf.code_action, { buffer = args.buf, desc = "Code Action" })
vim.keymap.set({ "n", "x", "v" }, "<leader>ld", vim.diagnostic.open_float, { desc = "Show diagnostic under cursor" })
vim.keymap.set({ "n", "x", "v" }, "<leader>lc", function()
local curpos = vim.fn.getcurpos()
local diagnostics = vim.diagnostic.get(0, { lnum = curpos[2] - 1 })
if #diagnostics == 0 then
vim.notify("No diagnostic under cursor")
return
end
local diagnostic = diagnostics[1]
local msg = string.format("%s [%s]: %s", diagnostic.source, diagnostic.code, diagnostic.message)
vim.fn.setreg("+", msg)
vim.notify("Diagnostic saved to clipboard:\n\n" .. msg)
end, { buffer = args.buf, desc = "Copy diagnostic to clipboard" })
end,
})