local augroup = vim.api.nvim_create_augroup local gib_group = augroup('Gib', {}) local autocmd = vim.api.nvim_create_autocmd local createcmd = vim.api.nvim_create_user_command local yank_group = augroup('HighlightYank', {}) function R(name) require("plenary.reload").reload_module(name) end autocmd('TextYankPost', { group = yank_group, pattern = '*', callback = function() vim.highlight.on_yank({ higroup = 'IncSearch', timeout = 40, }) end, }) autocmd({"BufWritePre"}, { group = gib_group, pattern = "*", command = [[%s/\s\+$//e]], }) autocmd({'BufWritePost'}, { pattern = 'init.lua', command = 'source ', }) autocmd('LspAttach', { group = gib_group, callback = function(e) local opts = { buffer = e.buf } vim.keymap.set('n', 'kf', vim.lsp.buf.format) vim.keymap.set("n", "gd", function() vim.lsp.buf.definition() end, opts) vim.keymap.set("n", "kw", function() vim.lsp.buf.workspace_symbol() end, opts) vim.keymap.set("n", "kd", function() vim.diagnostic.open_float() end, opts) vim.keymap.set("n", "vca", function() vim.lsp.buf.code_action() end, opts) vim.keymap.set("n", "re", function() vim.lsp.buf.references() end, opts) vim.keymap.set("n", "rn", function() vim.lsp.buf.rename() end, opts) vim.keymap.set("i", "", function() vim.lsp.buf.signature_help() end, opts) end }) createcmd("Format", function(args) local range if args.count ~= -1 then local start_line = vim.fn.line("'<") local end_line = vim.fn.line("'>") range = { start = { start_line, 0 }, ["end"] = { end_line, 0 } } end require("conform").format({ async = true, lsp_fallback = true, -- if no external formatter, use LSP range = range, }) end, { range = true, desc = "Format current buffer or range" }) vim.keymap.set({ "n", "v" }, "fk", ":Format", { silent = true, desc = "Format" })