From 117ccbf4b55f3516438b753e042f78d11e4cec6b Mon Sep 17 00:00:00 2001 From: Dennis Date: Tue, 6 May 2025 19:24:01 +0200 Subject: [PATCH] Updates neovim config --- home/modules/nvim/config/lua/dnsc/keymaps.lua | 9 +- home/modules/nvim/config/lua/dnsc/lazy.lua | 3 - home/modules/nvim/config/lua/dnsc/lsp.lua | 16 +- .../nvim/config/lua/plugins/snacks.lua | 179 +++++++--- .../nvim/config/lua/plugins/which-key.lua | 319 +++++++++--------- 5 files changed, 323 insertions(+), 203 deletions(-) diff --git a/home/modules/nvim/config/lua/dnsc/keymaps.lua b/home/modules/nvim/config/lua/dnsc/keymaps.lua index 2bfe0a6..ec5861d 100644 --- a/home/modules/nvim/config/lua/dnsc/keymaps.lua +++ b/home/modules/nvim/config/lua/dnsc/keymaps.lua @@ -1,8 +1,9 @@ local opts = { noremap = true, silent = true, expr = true } +-- Non-leader general keybindings vim.keymap.set("n", "k", "v:count == 0 ? 'gk' : 'k'", opts) vim.keymap.set("n", "j", "v:count == 0 ? 'gj' : 'j'", opts) -vim.keymap.set("n", "", "zz") -vim.keymap.set("n", "", "zz") -vim.keymap.set("n", "n", "nzzzv") -vim.keymap.set("n", "N", "Nzzzv") +vim.keymap.set("n", "", "zz", { desc = "Move down" }) +vim.keymap.set("n", "", "zz", { desc = "Move up" }) +vim.keymap.set("n", "n", "nzzzv", { desc = "Move to next occurence" }) +vim.keymap.set("n", "N", "Nzzzv", { desc = "Move to next occurence" }) diff --git a/home/modules/nvim/config/lua/dnsc/lazy.lua b/home/modules/nvim/config/lua/dnsc/lazy.lua index 286d264..4af317f 100644 --- a/home/modules/nvim/config/lua/dnsc/lazy.lua +++ b/home/modules/nvim/config/lua/dnsc/lazy.lua @@ -15,11 +15,8 @@ if not (vim.uv or vim.loop).fs_stat(lazypath) then end vim.opt.rtp:prepend(lazypath) -local opts = { noremap = true, silent = true, expr = true } - vim.g.mapleader = " " vim.g.maplocalleader = " " -vim.keymap.set("", "", "", opts) local options = { backup = false, -- creates a backup file diff --git a/home/modules/nvim/config/lua/dnsc/lsp.lua b/home/modules/nvim/config/lua/dnsc/lsp.lua index 36737fa..8239383 100644 --- a/home/modules/nvim/config/lua/dnsc/lsp.lua +++ b/home/modules/nvim/config/lua/dnsc/lsp.lua @@ -13,9 +13,17 @@ vim.diagnostic.config({ vim.api.nvim_create_autocmd("LspAttach", { callback = function(args) - local opts = { buffer = args.buf } - - vim.keymap.set("n", "e", "lua vim.diagnostic.open_float()", opts) - vim.keymap.set("n", "ca", "lua vim.lsp.buf.code_action()", opts) + vim.keymap.set( + "n", + "e", + "lua vim.diagnostic.open_float()", + { buffer = args.buf, desc = "Show diagnostics on current line" } + ) + vim.keymap.set( + "n", + "ca", + "lua vim.lsp.buf.code_action()", + { buffer = args.buf, desc = "Code actions for current line" } + ) end, }) diff --git a/home/modules/nvim/config/lua/plugins/snacks.lua b/home/modules/nvim/config/lua/plugins/snacks.lua index c662917..7517ff9 100644 --- a/home/modules/nvim/config/lua/plugins/snacks.lua +++ b/home/modules/nvim/config/lua/plugins/snacks.lua @@ -14,64 +14,167 @@ return { lazy = false, opts = { bigfile = { enabled = true }, - dashboard = { - enabled = false, - sections = { - { section = "keys", gap = 1, padding = 1 }, - { section = "startup" }, - { - section = "terminal", - cmd = "pokemon-colorscripts -r --no-title; sleep .1", - random = 10, - pane = 2, - indent = 8, - height = 30, - }, - }, - }, git = { enabled = true }, - gitbrowse = { enabled = true }, + gitbrowse = { + enabled = true, + what = "commit", + }, indent = { enabled = true }, + input = { enabled = true }, lazygit = { enabled = true, configure = true, }, + notifier = { enabled = true }, picker = { enabled = true, prompt = "λ ", - preset = "ivy", - layout = { position = "bottom" }, }, statuscolumn = { enabled = true }, zen = { enabled = true }, }, - -- stylua: ignore keys = { -- Git - { "gg", function() Snacks.lazygit() end, desc = "Lazygit" }, - { "gb", function() Snacks.git.blame_line() end, desc = "Show git blame for current line" }, - { "gl", function() Snacks.gitbrowse() end, desc = "Open link to line at git remote" }, + { + "gg", + function() + Snacks.lazygit() + end, + desc = "Lazygit", + }, + { + "gb", + function() + Snacks.git.blame_line() + end, + desc = "Show git blame for current line", + }, + { + "gl", + function() + Snacks.gitbrowse() + end, + desc = "Open link to line at git remote", + }, -- Zen Mode - { "z", function() Snacks.zen() end, desc = "Toggle Zen Mode" }, + { + "z", + function() + Snacks.zen() + end, + desc = "Toggle Zen Mode", + }, -- Picker - { "", function() end, desc = "" }, - { ".", function() Snacks.picker.files() end, desc = "" }, - { "", function() Snacks.picker.git_files() end, desc = "Git files" }, + { + ".", + function() + Snacks.picker.files() + end, + desc = "", + }, + { + "", + function() + Snacks.picker.git_files() + end, + desc = "Git files", + }, -- Find - { "fr", function() Snacks.picker.recent() end, desc = "Recent" }, - { "fp", function() Snacks.picker.projects() end, desc = "Projects" }, + { + "fr", + function() + Snacks.picker.recent() + end, + desc = "Recent", + }, + { + "fp", + function() + Snacks.picker.projects() + end, + desc = "Projects", + }, -- Search - { "ss", function() Snacks.picker.grep() end, desc = "Grep" }, - { "sw", function() Snacks.picker.grep_word() end, desc = "Visual selection or word", mode = { "n", "x" } }, - { "su", function() Snacks.picker.undo() end, desc = "Undo History" }, + { + "ss", + function() + Snacks.picker.grep() + end, + desc = "Grep", + }, + { + "sw", + function() + Snacks.picker.grep_word() + end, + desc = "Visual selection or word", + mode = { "n", "x" }, + }, + { + "su", + function() + Snacks.picker.undo() + end, + desc = "Undo History", + }, -- Diagnostics - { "td", function() Snacks.picker.diagnostics_buffer() end, desc = "Buffer Diagnostics" }, - { "ta", function() Snacks.picker.diagnostics() end, desc = "Diagnostics" }, + { + "td", + function() + Snacks.picker.diagnostics_buffer() + end, + desc = "Buffer Diagnostics", + }, + { + "ta", + function() + Snacks.picker.diagnostics() + end, + desc = "Diagnostics", + }, -- LSP - { "gd", function() Snacks.picker.lsp_definitions({ filter = { filter = filter_lsp_definitions } }) end, desc = "Goto Definition" }, - { "gD", function() Snacks.picker.lsp_declarations() end, desc = "Goto Declaration" }, - { "grr", function() Snacks.picker.lsp_references() end, nowait = true, desc = "References" }, - { "gI", function() Snacks.picker.lsp_implementations() end, desc = "Goto Implementation" }, - { "gy", function() Snacks.picker.lsp_type_definitions() end, desc = "Goto T[y]pe Definition" }, + { + "gd", + function() + Snacks.picker.lsp_definitions({ filter = { filter = filter_lsp_definitions } }) + end, + desc = "Goto Definition", + }, + { + "gD", + function() + Snacks.picker.lsp_declarations() + end, + desc = "Goto Declaration", + }, + { + "grr", + function() + Snacks.picker.lsp_references() + end, + nowait = true, + desc = "References", + }, + { + "gI", + function() + Snacks.picker.lsp_implementations() + end, + desc = "Goto Implementation", + }, + { + "gy", + function() + Snacks.picker.lsp_type_definitions() + end, + desc = "Goto T[y]pe Definition", + }, + { + "on", + function() + Snacks.notifier.show_history() + end, + desc = "Open notification history", + }, }, } diff --git a/home/modules/nvim/config/lua/plugins/which-key.lua b/home/modules/nvim/config/lua/plugins/which-key.lua index c0f233b..653fcfb 100644 --- a/home/modules/nvim/config/lua/plugins/which-key.lua +++ b/home/modules/nvim/config/lua/plugins/which-key.lua @@ -3,158 +3,169 @@ local utils = require("dnsc.utils") return { "folke/which-key.nvim", event = "VeryLazy", - opts = { - icons = { mappings = false }, - }, - keys = { - { "o", group = "open", mode = "n" }, - { "ot", ":e ~/notes/todo.txt", desc = "Open todos", mode = "n" }, - { "od", ":80 vsplit | :VimwikiMakeDiaryNote", desc = "Open diary note in split", mode = "n" }, - { "b", group = "buffer", mode = "n" }, - { "b,", "BufferMovePrevious", desc = "Move buffer back", mode = "n" }, - { - "b.", - "BufferMoveNext", - desc = "Move buffer forward", - mode = "n", - }, - { - "bD", - "BufferCloseAllButCurrent", - desc = "Delete all buffers but current", - mode = "n", - }, - { - "bd", - "BufferClose", - desc = "Delete current buffer", - mode = "n", - }, - { - "bh", - "BufferPrevious", - desc = "Go to previous buffer", - mode = "n", - }, - { - "bl", - "BufferNext", - desc = "Go to next buffer", - mode = "n", - }, - { "bp", "BufferPick", desc = "Pick a buffer", mode = "n" }, - { - "bx", - "BufferCloseAllButPinned", - desc = "Delete all buffers", - mode = "n", - }, - { "c", group = "code/compile", mode = "n" }, - { - "cr", - function() - utils.compile_project() - end, - desc = "Run current project", - mode = "n", - }, - { - "q", - "wq", - desc = "Close window and buffer", - mode = "n", - }, - { "f", group = "file", mode = "n" }, - { - "fn", - "enew", - desc = "Create a new file", - mode = "n", - }, - { - "fs", - "w", - desc = "Save currently opened file", - mode = "n", - }, - { "q", "qa!", desc = "Leave neovim", mode = "n" }, - { "s", group = "search", mode = "n" }, - { "t", group = "diagnostics (lsp)", mode = "n" }, - { "ta", "TodoQuickFix", desc = "Show all todo comments", mode = "n" }, - { "w", group = "window", mode = "n" }, - { - "w+", - ":vertical resize +4", - desc = "Increase window size", - mode = "n", - }, - { - "w-", - ":vertical resize -4", - desc = "Decrease window size", - mode = "n", - }, - { - "wx", - "q", - desc = "Close active window", - mode = "n", - }, - { - "wx", - ":bd", - desc = "Kill active window and buffer", - mode = "n", - }, - { - "wh", - "h", - desc = "Move to window on left", - mode = "n", - }, - { - "wj", - "j", - desc = "Move to window on bottom", - mode = "n", - }, - { - "wk", - "k", - desc = "Move to window on top", - mode = "n", - }, - { - "wl", - "l", - desc = "Move to window on right", - mode = "n", - }, - { - "ws", - "sp", - desc = "Split windows horizontally", - mode = "n", - }, - { - "wv", - "vsp", - desc = "Split windows vertically", - mode = "n", - }, - { - "wd", - "bd", - desc = "Delete buffer and window", - mode = "n", - }, - { "x", group = "config", mode = "n" }, - { - "xn", - "set number relativenumber", - desc = "Show relative numbers", - mode = "n", - }, - { "xr", "source $MYVIMRC", desc = "Reload config", mode = "n" }, - }, + config = function() + local wk = require("which-key") + + ---@class wk.Opts + local opts = { + icons = { mappings = false }, + win = { border = "rounded" }, + } + + wk.setup(opts) + wk.add({ + { "o", group = "+open", mode = "n" }, + { "ot", ":e ~/notes/todo.txt", desc = "Open tasks", mode = "n" }, + { "od", ":80 vsplit | :VimwikiMakeDiaryNote", desc = "Open daily note", mode = "n" }, + + { "b", group = "+buffer", mode = "n" }, + { "b,", "BufferMovePrevious", desc = "Move buffer backwards", mode = "n" }, + { + "b.", + "BufferMoveNext", + desc = "Move buffer forward", + mode = "n", + }, + { + "bD", + "BufferCloseAllButCurrent", + desc = "Delete all buffers but current", + mode = "n", + }, + { + "bd", + "BufferClose", + desc = "Delete current buffer", + mode = "n", + }, + { + "bh", + "BufferPrevious", + desc = "Go to previous buffer", + mode = "n", + }, + { + "bl", + "BufferNext", + desc = "Go to next buffer", + mode = "n", + }, + { "bp", "BufferPick", desc = "Pick a buffer", mode = "n" }, + { + "bx", + "BufferCloseAllButPinned", + desc = "Delete all buffers", + mode = "n", + }, + + { "c", group = "+code", mode = "n" }, + { + "cr", + function() + utils.compile_project() + end, + desc = "Compile project", + mode = "n", + }, + + { "f", group = "+file", mode = "n" }, + { + "fn", + "enew", + desc = "Create a new file", + mode = "n", + }, + { + "fs", + "w", + desc = "Save currently opened file", + mode = "n", + }, + + { "qq", "qa!", desc = "Leave neovim", mode = "n" }, + + { "s", group = "+search", mode = "n" }, + { "g", group = "+git", mode = "n" }, + + { "t", group = "+diagnostics", mode = "n" }, + { "ta", "TodoQuickFix", desc = "Show all todo comments", mode = "n" }, + + { "w", group = "+window", mode = "n" }, + { + "w+", + ":vertical resize +4", + desc = "Increase window size", + mode = "n", + }, + { + "w-", + ":vertical resize -4", + desc = "Decrease window size", + mode = "n", + }, + { + "wx", + "q", + desc = "Close active window", + mode = "n", + }, + { + "wx", + ":bd", + desc = "Kill active window and buffer", + mode = "n", + }, + { + "wh", + "h", + desc = "Move to window on left", + mode = "n", + }, + { + "wj", + "j", + desc = "Move to window on bottom", + mode = "n", + }, + { + "wk", + "k", + desc = "Move to window on top", + mode = "n", + }, + { + "wl", + "l", + desc = "Move to window on right", + mode = "n", + }, + { + "ws", + "sp", + desc = "Split windows horizontally", + mode = "n", + }, + { + "wv", + "vsp", + desc = "Split windows vertically", + mode = "n", + }, + { + "wd", + "bd", + desc = "Delete buffer and window", + mode = "n", + }, + + { "x", group = "+config", mode = "n" }, + { + "xn", + "set number relativenumber", + desc = "Show relative numbers", + mode = "n", + }, + { "xr", "source $MYVIMRC", desc = "Reload config", mode = "n" }, + }) + end, }