From 37969ca98ea1215c98a0d598d4421ff196a3edef Mon Sep 17 00:00:00 2001 From: Charles Danesi Date: Sun, 3 Nov 2024 17:53:39 -0500 Subject: [PATCH] refactor config to define all keybinds in a single file --- .config/nvim/lua/core/keymaps.lua | 129 ++++++++++++++++++++- .config/nvim/lua/plugins/auto-session.lua | 10 -- .config/nvim/lua/plugins/gitsigns.lua | 34 ------ .config/nvim/lua/plugins/lazygit.lua | 3 - .config/nvim/lua/plugins/linting.lua | 11 +- .config/nvim/lua/plugins/nvim-tree.lua | 91 +++++++-------- .config/nvim/lua/plugins/prettier.lua | 9 +- .config/nvim/lua/plugins/substitute.lua | 13 +-- .config/nvim/lua/plugins/telescope.lua | 9 -- .config/nvim/lua/plugins/todo-comments.lua | 15 +-- .config/nvim/lua/plugins/trouble.lua | 12 +- 11 files changed, 180 insertions(+), 156 deletions(-) diff --git a/.config/nvim/lua/core/keymaps.lua b/.config/nvim/lua/core/keymaps.lua index 7ebb107..e82221a 100644 --- a/.config/nvim/lua/core/keymaps.lua +++ b/.config/nvim/lua/core/keymaps.lua @@ -4,22 +4,147 @@ vim.g.maplocalleader = "\\" local keymap = vim.keymap +-- general use keymap.set("i", "jk", "", { desc = "Exit insert mode with jk" }) - keymap.set("n", "nh", ":nohl", { desc = "Clear search highlights" }) +-- formatting +keymap.set({ "n", "v" }, "mp", function() + require("conform").format { + lsp_fallback = true, + async = false, + timeout_ms = 1000, + } +end, { desc = "Format file or range (in visual mode)" }) + +-- linting +vim.keymap.set("n", "l", function() + require("lint").try_lint() +end, { desc = "Trigger linting for current file" }) + -- inc/dec numbers keymap.set("n", "+", "", { desc = "Increment number" }) keymap.set("n", "-", "", { desc = "Decrement number" }) --- window management +-- split management keymap.set("n", "sv", "v", { desc = "Split window vertically" }) keymap.set("n", "sh", "s", { desc = "Split window horizontally" }) keymap.set("n", "se", "=", { desc = "Make splits equal size" }) keymap.set("n", "sx", "close", { desc = "Close current split" }) +keymap.set("n", "sm", "MaximizerToggle", { desc = "Maximize/Minimize a split" }) +-- tab management keymap.set("n", "to", "tabnew", { desc = "Open new tab" }) keymap.set("n", "tx", "tabclose", { desc = "Close current tab" }) keymap.set("n", "tn", "tabn", { desc = "Go to next tab" }) keymap.set("n", "tp", "tabp", { desc = "Go to previous tab" }) keymap.set("n", "tf", "tabnew %", { desc = "Open current buffer in new tab" }) + +-- session management +keymap.set("n", "wa", "SessionToggleAutoSave", { desc = "Toggle session autosave" }) +keymap.set("n", "wD", "Autosession delete", { desc = "Delete a session" }) +keymap.set("n", "wd", "SessionDelete", { desc = "Delete session for cwd" }) +keymap.set("n", "wl", "SessionSearch", { desc = "Open session picker" }) +keymap.set("n", "wr", "SessionRestore", { desc = "Restore session for cwd" }) +keymap.set("n", "ws", "SessionSave", { desc = "Save session for cwd" }) + +-- diff +keymap.set("n", "hd", function() + require("gitsigns").diffthis() +end, { desc = "Diff this" }) +keymap.set("n", "hD", function() + require("gitsigns").diffthis "~" +end, { desc = "Diff this ~" }) + +-- todo comments +keymap.set("n", "]t", function() + require("todo-comments").jump_next() +end, { desc = "Next todo comment" }) + +keymap.set("n", "[t", function() + require("todo-comments").jump_prev() +end, { desc = "Previous todo comment" }) + +-- trouble +keymap.set("n", "xw", "Trouble diagnostics toggle", { desc = "Open trouble workspace diagnostics" }) +keymap.set( + "n", + "xd", + "Trouble diagnostics toggle filter.buf=0", + { desc = "Open trouble document diagnostics" } +) +keymap.set("n", "xq", "Trouble quickfix toggle", { desc = "Open trouble quickfix list" }) +keymap.set("n", "xl", "Trouble loclist toggle", { desc = "Open trouble location list" }) +keymap.set("n", "xt", "Trouble todo toggle", { desc = "Open todos in trouble" }) + +-- telescope +keymap.set("n", "ff", "Telescope find_files", { desc = "Fuzzy find files in cwd" }) +keymap.set("n", "fr", "Telescope oldfiles", { desc = "Fuzzy find recent files" }) +keymap.set("n", "fs", "Telescope live_grep", { desc = "Find string in cwd" }) +keymap.set("n", "fc", "Telescope grep_string", { desc = "Find string under cursor in cwd" }) +keymap.set("n", "ft", "TodoTelescope", { desc = "Find todos" }) + +-- substitute +keymap.set("n", "s", function() + require("substitute").operator() +end, { desc = "Substitute with motion" }) +keymap.set("n", "ss", function() + require("substitute").line() +end, { desc = "Substitute line" }) +keymap.set("n", "S", function() + require("substitute").line() +end, { desc = "Substitute to end of line" }) +keymap.set("x", "s", function() + require("substitute").visual() +end, { desc = "Substitute in visual mode" }) + +-- nvim-tree +keymap.set("n", "ee", "NvimTreeToggle", { desc = "Toggle file explorer" }) +keymap.set("n", "ef", "NvimTreeFindFileToggle", { desc = "Toggle file explorer on current file" }) +keymap.set("n", "ec", "NvimTreeCollapse", { desc = "Collapse file explorer" }) +keymap.set("n", "er", "NvimTreeRefresh", { desc = "Refresh file explorer" }) + +-- git +keymap.set("n", "lg", "LazyGit", { desc = "Open LazyGit" }) +keymap.set("n", "]h", function() + require("gitsigns").next_hunk() +end, { desc = "Next hunk" }) +keymap.set("n", "[h", function() + require("gitsigns").prev_hunk() +end, { desc = "Prev hunk" }) +keymap.set("n", "hs", function() + require("gitsigns").stage_hunk() +end, { desc = "Stage Hunk" }) +keymap.set("n", "hr", function() + require("gitsigns").reset_hunk() +end, { desc = "Reset Hunk" }) +keymap.set("v", "hs", function() + require("gitsigns").stage_hunk { vim.fn.line ".", vim.fn.line "v" } +end, { desc = "Stage Hunk" }) +keymap.set("v", "hr", function() + require("gitsigns").reset_hunk { vim.fn.line ".", vim.fn.line "v" } +end, { desc = "Reset Hunk" }) +keymap.set("n", "hS", function() + require("gitsigns").stage_buffer() +end, { desc = "Stage buffer" }) +keymap.set("n", "hR", function() + require("gitsigns").reset_buffer() +end, { desc = "Reset buffer" }) +keymap.set("n", "hu", function() + require("gitsigns").undo_stage_hunk() +end, { desc = "Undo stage hunk" }) +keymap.set("n", "hp", function() + require("gitsigns").preview_hunk() +end, { desc = "Preview hunk" }) +keymap.set("n", "hb", function() + require("gitsigns").blame_line { full = true } +end, { desc = "Blame line" }) +keymap.set("n", "hB", function() + require("gitsigns").toggle_current_line_blame() +end, { desc = "Toggle line blame" }) +keymap.set({ "o", "x" }, "ih", ":Gitsigns select_hunk", { desc = "Gitsigns select hunk" }) + +-- icon picker +keymap.set("n", "i", "IconPickerNormal", { desc = "Open icon picker" }) +keymap.set("n", "iy", "IconPickerYank", { desc = "Yank icon picker" }) --> Yank the selected icon into register +-- keymap.set("i", "", "IconPickerInsert", { desc = "Pick Icon to Insert" }) diff --git a/.config/nvim/lua/plugins/auto-session.lua b/.config/nvim/lua/plugins/auto-session.lua index 6c022c6..dca8b91 100644 --- a/.config/nvim/lua/plugins/auto-session.lua +++ b/.config/nvim/lua/plugins/auto-session.lua @@ -2,16 +2,6 @@ return { "rmagatti/auto-session", lazy = false, - -- Configure keybinds - keys = { - { "wa", "SessionToggleAutoSave", desc = "Toggle session autosave" }, - { "wD", "Autosession delete", desc = "Delete a session" }, - { "wd", "SessionDelete", desc = "Delete session for cwd" }, - { "wl", "SessionSearch", desc = "Open session picker" }, - { "wr", "SessionRestore", desc = "Restore session for cwd" }, - { "ws", "SessionSave", desc = "Save session for cwd" }, - }, - ---@module "auto-session" ---@type AutoSession.Config opts = { diff --git a/.config/nvim/lua/plugins/gitsigns.lua b/.config/nvim/lua/plugins/gitsigns.lua index 68b2ee9..4e592c4 100644 --- a/.config/nvim/lua/plugins/gitsigns.lua +++ b/.config/nvim/lua/plugins/gitsigns.lua @@ -70,39 +70,5 @@ return { row = 0, col = 1, }, - on_attach = function(bufnr) - local gs = package.loaded.gitsigns - - local function map(mode, l, r, desc) - vim.keymap.set(mode, l, r, { buffer = bufnr, desc = desc }) - end - - map("n", "]h", gs.next_hunk, "Next hunk") - map("n", "[h", gs.prev_hunk, "Prev hunk") - - map("n", "hs", gs.stage_hunk, "Stage Hunk") - map("n", "hr", gs.reset_hunk, "Reset Hunk") - map("v", "hs", function() - gs.stage_hunk { vim.fn.line ".", vim.fn.line "v" } - end, "Reset Hunk") - - map("n", "hS", gs.stage_buffer, "Stage buffer") - map("n", "hR", gs.reset_buffer, "Reset buffer") - map("n", "hu", gs.undo_stage_hunk, "Undo stage hunk") - map("n", "hp", gs.preview_hunk, "Preview hunk") - - map("n", "hb", function() - gs.blame_line { full = true } - end, "Blame line") - - map("n", "hB", gs.toggle_current_line_blame, "Toggle line blame") - - map("n", "hd", gs.diffthis, "Diff this") - map("n", "hD", function() - gs.diffthis "~" - end, "Diff this ~") - - map({ "o", "x" }, "ih", ":Gitsigns select_hunk", "Gitsigns select hunk") - end, }, } diff --git a/.config/nvim/lua/plugins/lazygit.lua b/.config/nvim/lua/plugins/lazygit.lua index 4c4aebc..39eddff 100644 --- a/.config/nvim/lua/plugins/lazygit.lua +++ b/.config/nvim/lua/plugins/lazygit.lua @@ -10,7 +10,4 @@ return { dependencies = { "nvim-lua/plenary.nvim", }, - keys = { - { "lg", "LazyGit", desc = "Open LazyGit" }, - }, } diff --git a/.config/nvim/lua/plugins/linting.lua b/.config/nvim/lua/plugins/linting.lua index bfba8a0..f0e0cbb 100644 --- a/.config/nvim/lua/plugins/linting.lua +++ b/.config/nvim/lua/plugins/linting.lua @@ -3,14 +3,17 @@ return { event = { "BufReadPre", "BufNewFile" }, config = function() - local lint = require("lint") + local lint = require "lint" lint.linters_by_ft = { + markdown = { "markdownlint" }, + html = { "htmlhint" }, + json = { "jsonlint" }, + bash = { "shellcheck", "shellharden" }, javascript = { "eslint_d" }, typescript = { "eslint_d" }, javascriptreact = { "eslint_d" }, typescriptreact = { "eslint_d" }, - svelte = { "eslint_d" }, python = { "pylint" }, } @@ -22,9 +25,5 @@ return { lint.try_lint() end, }) - - vim.keymap.set("n", "l", function() - lint.try_lint() - end, { desc = "Trigger linting for current file"}) end, } diff --git a/.config/nvim/lua/plugins/nvim-tree.lua b/.config/nvim/lua/plugins/nvim-tree.lua index a9f1f6b..3b0a276 100644 --- a/.config/nvim/lua/plugins/nvim-tree.lua +++ b/.config/nvim/lua/plugins/nvim-tree.lua @@ -1,60 +1,47 @@ return { "nvim-tree/nvim-tree.lua", dependencies = "nvim-tree/nvim-web-devicons", - config = function() - local nvimtree = require "nvim-tree" + opts = { + view = { + width = 35, + relativenumber = true, + }, + renderer = { + indent_markers = { + enable = true, + }, + icons = { + glyphs = { + default = "", + folder = { + default = "", + open = "", + empty = "", + empty_open = "", + arrow_closed = "", -- arrow when folder is closed + arrow_open = "", -- arrow when folder is open + }, + }, + }, + }, + actions = { + open_file = { + window_picker = { + enable = false, + }, + }, + }, + filters = { + custom = { ".DS_Store" }, + }, + git = { + ignore = false, + }, + }, - vim.g.loaded_netrw = 1 + config = function(_, opts) vim.g.loaded_netrwPlugin = 1 - nvimtree.setup { - view = { - width = 35, - relativenumber = true, - }, - renderer = { - indent_markers = { - enable = true, - }, - icons = { - glyphs = { - default = "", - folder = { - default = "", - open = "", - empty = "", - empty_open = "", - arrow_closed = "", -- arrow when folder is closed - arrow_open = "", -- arrow when folder is open - }, - }, - }, - }, - actions = { - open_file = { - window_picker = { - enable = false, - }, - }, - }, - filters = { - custom = { ".DS_Store" }, - }, - git = { - ignore = false, - }, - } - - local keymap = vim.keymap - - keymap.set("n", "ee", "NvimTreeToggle", { desc = "Toggle file explorer" }) - keymap.set( - "n", - "ef", - "NvimTreeFindFileToggle", - { desc = "Toggle file explorer on current file" } - ) - keymap.set("n", "ec", "NvimTreeCollapse", { desc = "Collapse file explorer" }) - keymap.set("n", "er", "NvimTreeRefresh", { desc = "Refresh file explorer" }) + require("nvim-tree").setup(opts) end, } diff --git a/.config/nvim/lua/plugins/prettier.lua b/.config/nvim/lua/plugins/prettier.lua index 14e3c6e..dfaa806 100644 --- a/.config/nvim/lua/plugins/prettier.lua +++ b/.config/nvim/lua/plugins/prettier.lua @@ -1,6 +1,7 @@ return { "stevearc/conform.nvim", event = { "BufReadPre", "BufNewFile" }, + config = function() local conform = require "conform" @@ -27,13 +28,5 @@ return { timeout_ms = 1000, }, } - - vim.keymap.set({ "n", "v" }, "mp", function() - conform.format { - lsp_fallback = true, - async = false, - timeout_ms = 1000, - } - end, { desc = "Format file or range (in visual mode)" }) end, } diff --git a/.config/nvim/lua/plugins/substitute.lua b/.config/nvim/lua/plugins/substitute.lua index b4e47a1..e91568c 100644 --- a/.config/nvim/lua/plugins/substitute.lua +++ b/.config/nvim/lua/plugins/substitute.lua @@ -1,17 +1,8 @@ return { "gbprod/substitute.nvim", event = { "BufReadPre", "BufNewFile" }, - + config = function() - local substitute = require("substitute") - - substitute.setup() - - local keymap = vim.keymap - - keymap.set("n", "s", substitute.operator, { desc = "Substitute with motion" }) - keymap.set("n", "ss", substitute.line, { desc = "Substitute line" }) - keymap.set("n", "S", substitute.line, { desc = "Substitute to end of line" }) - keymap.set("x", "s", substitute.visual, { desc = "Substitute in visual mode" }) + require("substitute").setup() end, } diff --git a/.config/nvim/lua/plugins/telescope.lua b/.config/nvim/lua/plugins/telescope.lua index a08848e..8768bc8 100644 --- a/.config/nvim/lua/plugins/telescope.lua +++ b/.config/nvim/lua/plugins/telescope.lua @@ -35,14 +35,5 @@ return { } telescope.load_extension "fzf" - - -- keymaps - local keymap = vim.keymap - - keymap.set("n", "ff", "Telescope find_files", { desc = "Fuzzy find files in cwd" }) - keymap.set("n", "fr", "Telescope oldfiles", { desc = "Fuzzy find recent files" }) - keymap.set("n", "fs", "Telescope live_grep", { desc = "Find string in cwd" }) - keymap.set("n", "fc", "Telescope grep_string", { desc = "Find string under cursor in cwd" }) - keymap.set("n", "ft", "TodoTelescope", { desc = "Find todos" }) end, } diff --git a/.config/nvim/lua/plugins/todo-comments.lua b/.config/nvim/lua/plugins/todo-comments.lua index 2583bcf..0d08786 100644 --- a/.config/nvim/lua/plugins/todo-comments.lua +++ b/.config/nvim/lua/plugins/todo-comments.lua @@ -2,19 +2,8 @@ return { "folke/todo-comments.nvim", event = { "BufReadPre", "BufNewFile" }, dependencies = { "nvim-lua/plenary.nvim" }, - + config = function() - local todo_comments = require("todo-comments") - local keymap = vim.keymap - - keymap.set("n", "]t", function() - todo_comments.jump_next() - end, { desc = "Next todo comment" }) - - keymap.set("n", "[t", function() - todo_comments.jump_prev() - end, { desc = "Previous todo comment" }) - - todo_comments.setup() + require("todo-comments").setup() end, } diff --git a/.config/nvim/lua/plugins/trouble.lua b/.config/nvim/lua/plugins/trouble.lua index 3614bf4..f5d7eb3 100644 --- a/.config/nvim/lua/plugins/trouble.lua +++ b/.config/nvim/lua/plugins/trouble.lua @@ -1,15 +1,11 @@ return { "folke/trouble.nvim", - dependencies = { "nvim-tree/nvim-web-devicons", "folke/todo-comments.nvim", }, + dependencies = { + "nvim-tree/nvim-web-devicons", + "folke/todo-comments.nvim", + }, opts = { focus = true, }, cmd = "Trouble", - keys = { - { "xw", "Trouble diagnostics toggle", desc = "Open trouble workspace diagnostics" }, - { "xd", "Trouble diagnostics toggle filter.buf=0", desc = "Open trouble document diagnostics" }, - { "xq", "Trouble quickfix toggle", desc = "Open trouble quickfix list" }, - { "xl", "Trouble loclist toggle", desc = "Open trouble location list" }, - { "xt", "Trouble todo toggle", desc = "Open todos in trouble" }, - }, }