require("thegeneralist.remap") require("thegeneralist.set") require("thegeneralist.lazy_init") local augroup = vim.api.nvim_create_augroup local thegeneralist_group = augroup('thegeneralist', {}) local autocmd = vim.api.nvim_create_autocmd local yank_group = augroup('HighlightYank', {}) autocmd('TextYankPost', { group = yank_group, pattern = '*', callback = function() vim.highlight.on_yank({ higroup = 'IncSearch', timeout = 40, }) end, }) autocmd({ "BufWritePre" }, { group = thegeneralist_group, pattern = "*", command = [[%s/\s\+$//e]], }) autocmd('LspAttach', { group = thegeneralist_group, callback = function(e) -- @param desc string local function opts(desc) return { buffer = e.buf, --noremap = true, -- Not sure about this desc = "[LSP] " .. desc } end vim.keymap.set("n", "gd", function() vim.lsp.buf.definition() end, opts("Go to Definition")) vim.keymap.set("n", "gD", vim.lsp.buf.declaration, opts("Go to Declaration")) vim.keymap.set("n", "K", function() vim.lsp.buf.hover() end, opts("Hover info")) vim.keymap.set("n", "vws", function() vim.lsp.buf.workspace_symbol() end, opts("Workspace Symbol")) vim.keymap.set("n", "vd", function() vim.diagnostic.open_float() end, opts("Open float?")) vim.keymap.set("n", "vca", function() vim.lsp.buf.code_action() end, opts("View code actions")) vim.keymap.set("i", "", function() vim.lsp.buf.code_action() end, opts("View code actions")) vim.keymap.set("n", "va", function() -- TODO: this local params = vim.lsp.util.make_range_params() params.context = { diagnostics = vim.lsp.diagnostic.get_line_diagnostics() } local result, err = vim.lsp.buf_request_sync(0, "textDocument/codeAction", params, 1000) if result and result[1] and result[1].result and result[1].result[1] then local first_action = result[1].result[1] vim.lsp.buf.execute_command(first_action.command) else print("No code actions available") end end, opts("Apply 1st code action")) vim.keymap.set("n", "vrr", function() vim.lsp.buf.references() end, opts("Show references")) vim.keymap.set("n", "vrn", function() vim.lsp.buf.rename() end, opts("Rename")) vim.keymap.set("n", "[d", function() vim.diagnostic.jump({ count = 1, float = true, }) end, opts("Previous diagnostic")) vim.keymap.set("n", "]d", function() vim.diagnostic.jump({ count = -1, float = true, }) end, opts("Next diagnostic")) vim.keymap.set("i", "", function() vim.lsp.buf.signature_help() end, opts("Signature help")) vim.keymap.set("n", "h", function() vim.lsp.buf.signature_help() end, opts("Signature help")) end })