From db41615adf310431c2abb5e45baaab5fe87e1f2f Mon Sep 17 00:00:00 2001 From: Max Hohlfeld Date: Tue, 17 Dec 2024 16:50:36 +0100 Subject: [PATCH] refactor: use vim.keymap.set --- roles/nvim/files/init_pc.lua | 196 +++++++++++++++++++---------------- 1 file changed, 105 insertions(+), 91 deletions(-) diff --git a/roles/nvim/files/init_pc.lua b/roles/nvim/files/init_pc.lua index 627153d..418d0c2 100644 --- a/roles/nvim/files/init_pc.lua +++ b/roles/nvim/files/init_pc.lua @@ -1,9 +1,7 @@ local fn = vim.fn local opt = vim.opt -local map = vim.api.nvim_set_keymap -local buf_map = vim.api.nvim_buf_set_keymap -local unmap = vim.api.nvim_del_keymap local autocmd = vim.api.nvim_create_autocmd +local keymap = vim.keymap local install_path = fn.stdpath('data') .. '/site/pack/packer/start/packer.nvim' @@ -51,8 +49,11 @@ require('packer').startup(function() use '~/projekte/zenburn.nvim' -- zenburn coloursheme use 'rmagatti/auto-session' -- session management use 'gbprod/substitute.nvim' -- substitue objects with yanked register without copying into register + use 'j-hui/fidget.nvim' -- notifications end) +local builtin = require('telescope.builtin') + -- General Editor Settings require("zenburn").setup() @@ -66,30 +67,38 @@ opt.statusline = ' %f %r %m%=%y %{&fileencoding?&fileencoding:&encoding}[%{&file opt.completeopt = 'menuone,noinsert,noselect' -map('n', 'w', 'w', { noremap = true }) -map('n', 'q', 'wq', { noremap = true }) -map('n', 'Q', 'wqa', { noremap = true }) -map('n', '/', 'let @/ = ""', { noremap = true }) +keymap.set('n', 'w', 'w', { noremap = true }) +keymap.set('n', 'q', 'wq', { noremap = true }) +keymap.set('n', 'Q', 'wqa', { noremap = true }) +keymap.set('n', '/', 'let @/ = ""', { noremap = true }) -- fix interpreting C-I as Tab -map('n', '', '', { noremap = true }) +keymap.set('n', '', '', { noremap = true }) -- Splits -map('n', '', 'h', { noremap = true }) -map('n', '', 'j', { noremap = true }) -map('n', '', 'k', { noremap = true }) -map('n', '', 'l', { noremap = true }) +keymap.set('n', '', 'h', { noremap = true }) +keymap.set('n', '', 'j', { noremap = true }) +keymap.set('n', '', 'k', { noremap = true }) +keymap.set('n', '', 'l', { noremap = true }) opt.splitbelow = true opt.splitright = true +-- Using + number (1, 2, ... 9) to switch tab +for i=1,9,1 +do + keymap.set('n', ''..i, i.."gt", { noremap = true }) +end +keymap.set('n', '0', ":tablast", { noremap = true}) + -- Autocommands autocmd({ 'BufNewFile', 'BufRead' }, { desc = 'When editing compileable documents, register commands for live preview', pattern = { '*.md', '*.tex', '*.puml' }, callback = function() - buf_map(0, 'n', 'p', 'lua require("compileDoc").open_document_preview()', { noremap = true }) - buf_map(0, 'n', 'P', 'lua require("compileDoc").close_document_preview()', { noremap = true }) + local compileDoc = require('compileDoc') + keymap.set('n', 'p', compileDoc.open_document_preview, { noremap = true, buffer = 0 }) + keymap.set('n', 'P', compileDoc.close_document_preview, { noremap = true, buffer = 0 }) end }) @@ -107,12 +116,7 @@ autocmd("FileType", { }, callback = function(event) vim.bo[event.buf].buflisted = false - buf_map(event.buf, - 'n', - 'q', - 'close', - { silent = true, noremap = true } - ) + keymap.set('n', 'q', 'close', { silent = true, noremap = true, buffer = event.buf }) end, }) @@ -125,53 +129,24 @@ autocmd({ "VimResized" }, { end, }) --- Spellcheck -_G.enable_spell = function(lang) - vim.bo.spelllang = lang - - if lang ~= "" then - vim.wo.spell = true - - map('n', 'ff', ']s', { noremap = true }) - map('n', 'fF', '[s', { noremap = true }) - map('n', 'fa', 'zg', { noremap = true }) - map('n', 'fn', 'z=', { noremap = true }) - map('n', 'fd', 'zuw=', { noremap = true }) - print(lang .. " spellcheck enabled") - else - vim.wo.spell = false - - unmap('n', 'ff') - unmap('n', 'fF') - unmap('n', 'fa') - unmap('n', 'fn') - unmap('n', 'fd') - print("spellcheck disabled") - end - - -- return vim.api.nvim_replace_termcodes('', true, true, true) -end - -map('n', 'ZD', 'v:lua.enable_spell("de")', { expr = true, silent = true }) -map('n', 'ZE', 'v:lua.enable_spell("en")', { expr = true, silent = true }) -map('n', 'ZS', 'v:lua.enable_spell("")', { expr = true, silent = true }) - -- LSP local lsp = require('lspconfig') -local on_attach = function(client, bufnr) +local on_attach = function(_, bufnr) -- Mappings. local opts = { noremap = true, silent = true, buffer = bufnr } - -- See `:help vim.lsp.*` for documentation on any of the below functions - vim.keymap.set('n', 'gd', 'lua vim.lsp.buf.definition()', opts) - vim.keymap.set('n', 'gi', 'lua vim.lsp.buf.implementation()', opts) - vim.keymap.set('n', 'gr', 'lua vim.lsp.buf.references()', opts) - vim.keymap.set('n', 'K', 'lua vim.lsp.buf.hover()', opts) - vim.keymap.set('n', 'rn', 'lua vim.lsp.buf.rename()', opts) - vim.keymap.set('n', 'e', 'lua vim.diagnostic.open_float()', opts) - vim.keymap.set({'n', 'v'}, 'ca', 'lua vim.lsp.buf.code_action()', opts) - vim.keymap.set('n', 'cf', function() vim.lsp.buf.format { async = true } end, opts) + keymap.set('n', 'gd', vim.lsp.buf.definition, opts) + keymap.set('n', 'gi', vim.lsp.buf.implementation, opts) + keymap.set('n', 'gr', vim.lsp.buf.references, opts) + keymap.set('n', 'K', vim.lsp.buf.hover, opts) + keymap.set('n', 'gk', vim.lsp.buf.signature_help, opts) + keymap.set('n', 'a', vim.lsp.buf.code_action, opts) + keymap.set('v', 'a', vim.lsp.buf.code_action, opts) + keymap.set('n', 'rn', vim.lsp.buf.rename, opts) + keymap.set('n', 'e', vim.diagnostic.open_float, opts) + keymap.set('n', 'E', builtin.diagnostics, opts) + keymap.set('n', 'f', function() vim.lsp.buf.format { async = true } end, opts) -- Signature require('lsp_signature').on_attach({ @@ -229,13 +204,13 @@ lsp.lua_ls.setup { -- Workaround for rust analyzer popping cancelation up https://github.com/neovim/neovim/issues/30985 for _, method in ipairs({ 'textDocument/diagnostic', 'workspace/diagnostic' }) do - local default_diagnostic_handler = vim.lsp.handlers[method] - vim.lsp.handlers[method] = function(err, result, context, config) - if err ~= nil and err.code == -32802 then - return - end - return default_diagnostic_handler(err, result, context, config) + local default_diagnostic_handler = vim.lsp.handlers[method] + vim.lsp.handlers[method] = function(err, result, context, config) + if err ~= nil and err.code == -32802 then + return end + return default_diagnostic_handler(err, result, context, config) + end end -- Snippets @@ -345,10 +320,41 @@ require('nvim-ts-autotag').setup({ require 'nvim-autopairs'.setup {} -- Telescope -map('n', 'ff', 'lua require("telescope.builtin").find_files()', { noremap = true }) -map('n', 'fg', 'lua require("telescope.builtin").live_grep()', { noremap = true }) -map('n', 'fb', 'lua require("telescope.builtin").buffers()', { noremap = true }) -map('n', 'fh', 'lua require("telescope.builtin").help_tags()', { noremap = true }) +keymap.set('n', 'ff', builtin.find_files, { noremap = true }) +keymap.set('n', 'fg', builtin.live_grep, { noremap = true }) +keymap.set('n', 'fb', builtin.buffers, { noremap = true }) +keymap.set('n', 'fh', builtin.help_tags, { noremap = true }) + +-- Spellcheck +local enable_spell = function(lang) + vim.bo.spelllang = lang + + if lang ~= "" then + vim.wo.spell = true + + keymap.set('n', 'fn', ']s', { noremap = true }) + keymap.set('n', 'fb', '[s', { noremap = true }) + keymap.set('n', 'fa', 'zg', { noremap = true }) + keymap.set('n', 'ff', builtin.spell_suggest, { noremap = true }) + keymap.set('n', 'fd', 'zuw=', { noremap = true }) + print(lang .. " spellcheck enabled") + else + vim.wo.spell = false + + keymap.del('n', 'fn') + keymap.del('n', 'fb') + keymap.del('n', 'fa') + keymap.del('n', 'ff') + keymap.del('n', 'fd') + print("spellcheck disabled") + end + + -- return vim.api.nvim_replace_termcodes('', true, true, true) +end + +keymap.set('n', 'ZD', function() enable_spell("de") end, { expr = true, silent = true }) +keymap.set('n', 'ZE', function() enable_spell("en") end, { expr = true, silent = true }) +keymap.set('n', 'ZS', function() enable_spell("") end, { expr = true, silent = true }) -- Vimwiki require('mkdnflow').setup({ @@ -375,7 +381,7 @@ require('mkdnflow').setup({ } }) -vim.keymap.set('n', 'wd', function() +local create_todo_for_today = function() local date_string = os.date("%Y-%m-%d") local path = '/home/max/dokumente/wiki/todos/' .. date_string .. '.md' @@ -384,7 +390,9 @@ vim.keymap.set('n', 'wd', function() vim.api.nvim_put({ "# Todo - " .. date_string, "- [ ] " }, 'c', false, true) end vim.cmd.write() -end, { noremap = true }) +end + +keymap.set('n', 'wd', create_todo_for_today, { noremap = true }) autocmd({ 'BufRead', 'BufNewFile' }, { @@ -393,8 +401,9 @@ autocmd({ 'BufRead', 'BufNewFile' }, { callback = function() vim.cmd('set awa') vim.wo.conceallevel = 2 - map('n', 'wf', 'lua require("telescope_customs").find_wiki()', { noremap = true }) - map('n', 'wg', 'lua require("telescope_customs").grep_wiki()', { noremap = true }) + local customs = require('telescope_customs'); + keymap.set('n', 'wf', customs.find_wiki, { noremap = true }) + keymap.set('n', 'wg', customs.grep_wiki, { noremap = true }) end }) @@ -436,7 +445,7 @@ require('lir').setup { hide_cursor = true } -map('n', '', 'lua require("lir.float").toggle()', { noremap = true }) +keymap.set('n', '', require("lir.float").toggle, { noremap = true }) vim.g.loaded_netrw = 1 vim.g.loaded_netrwPlugin = 1 @@ -456,9 +465,9 @@ require('colorizer').setup({ }) -- Leap -vim.keymap.set({ 'n', 'x', 'o' }, 'ö', '(leap-forward)') -vim.keymap.set({ 'n', 'x', 'o' }, 'Ö', '(leap-backward)') -vim.keymap.set({ 'n', 'x', 'o' }, 'gö', '(leap-from-window)') +keymap.set({ 'n', 'x', 'o' }, 'ö', '(leap-forward)') +keymap.set({ 'n', 'x', 'o' }, 'Ö', '(leap-backward)') +keymap.set({ 'n', 'x', 'o' }, 'gö', '(leap-from-window)') -- Debugger Adapter Protocol local dap = require('dap') @@ -485,19 +494,20 @@ dap.configurations.rust = { }, } -map('n', 'dc', 'lua require"dap".continue()', { noremap = true }) -map('n', 'db', 'lua require"dap".toggle_breakpoint()', { noremap = true }) -map('n', 'do', 'lua require"dap".step_over()', { noremap = true }) -map('n', 'di', 'lua require"dap".step_into()', { noremap = true }) +keymap.set('n', 'dc', dap.continue, { noremap = true }) +keymap.set('n', 'db', dap.toggle_breakpoint, { noremap = true }) +keymap.set('n', 'do', dap.step_over, { noremap = true }) +keymap.set('n', 'di', dap.step_into, { noremap = true }) -require("dapui").setup() -map('n', 'dd', 'lua require"dapui".toggle()', { noremap = true }) +local dapui = require("dapui") +dapui.setup() +keymap.set('n', 'dd', dapui.toggle, { noremap = true }) -- registers preview require("registers").setup() -- Lazygit -map('n', 'g', 'LazyGit', { noremap = true }) +keymap.set('n', 'g', 'LazyGit', { noremap = true }) -- Session require("auto-session").setup { @@ -507,8 +517,12 @@ require("auto-session").setup { opt.sessionoptions = "blank,buffers,curdir,folds,help,tabpages,winsize,terminal,localoptions" -- Substitute -require("substitute").setup() -vim.keymap.set('n', 's', require('substitute').operator, { noremap = true }) -vim.keymap.set('n', 'ss', require('substitute').line, { noremap = true }) -vim.keymap.set('n', 'S', require('substitute').eol, { noremap = true }) -vim.keymap.set('x', 's', require('substitute').visual, { noremap = true }) +local substitute = require("substitute") +substitute.setup() +keymap.set('n', 's', substitute.operator, { noremap = true }) +keymap.set('n', 'ss', substitute.line, { noremap = true }) +keymap.set('n', 'S', substitute.eol, { noremap = true }) +keymap.set('x', 's', substitute.visual, { noremap = true }) + +-- Fidget notifications +require('fidget').setup()