From c6759c5c3782abccba77ed3e338636dc47369a35 Mon Sep 17 00:00:00 2001 From: aleidk Date: Tue, 1 Apr 2025 16:48:48 -0300 Subject: [PATCH] add mini.nvim plugins --- config/nvim_unstable/lua/aleidk/keymaps.lua | 10 +- .../lua/aleidk/plugins/colorscheme.lua | 4 + .../lua/aleidk/plugins/comments.lua | 12 -- .../lua/aleidk/plugins/file-explorer.lua | 14 +- .../nvim_unstable/lua/aleidk/plugins/git.lua | 52 ----- .../nvim_unstable/lua/aleidk/plugins/init.lua | 30 --- .../lua/aleidk/plugins/luasnip.lua | 27 --- .../nvim_unstable/lua/aleidk/plugins/mini.lua | 194 ++++++++++++++++++ config/nvim_unstable/snippets/global.json | 11 + 9 files changed, 220 insertions(+), 134 deletions(-) delete mode 100644 config/nvim_unstable/lua/aleidk/plugins/git.lua delete mode 100644 config/nvim_unstable/lua/aleidk/plugins/luasnip.lua create mode 100644 config/nvim_unstable/lua/aleidk/plugins/mini.lua create mode 100644 config/nvim_unstable/snippets/global.json diff --git a/config/nvim_unstable/lua/aleidk/keymaps.lua b/config/nvim_unstable/lua/aleidk/keymaps.lua index 8d23432..f7a3019 100644 --- a/config/nvim_unstable/lua/aleidk/keymaps.lua +++ b/config/nvim_unstable/lua/aleidk/keymaps.lua @@ -8,18 +8,16 @@ vim.keymap.set("n", "j", "v:count == 0 ? 'gj' : 'j'", { desc = "Move cursor regardless of word wrap", expr = true, silent = true }) vim.keymap.set("n", "J", "mzJ`z", { desc = "Keep cursor in column while joining lines", silent = true }) -vim.keymap.set("n", "", "zz", { desc = "Keep cursor centered while junping", silent = true }) -vim.keymap.set("n", "", "zz", { desc = "Keep cursor centered while junping", silent = true }) -vim.keymap.set("n", "n", "nzzzv", { desc = "Keep cursor centered while searching", silent = true }) -vim.keymap.set("n", "N", "Nzzzv", { desc = "Keep cursor centered while searching", silent = true }) +-- vim.keymap.set("n", "", "zz", { desc = "Keep cursor centered while junping", silent = true }) +-- vim.keymap.set("n", "", "zz", { desc = "Keep cursor centered while junping", silent = true }) +-- vim.keymap.set("n", "n", "nzzzv", { desc = "Keep cursor centered while searching", silent = true }) +-- vim.keymap.set("n", "N", "Nzzzv", { desc = "Keep cursor centered while searching", silent = true }) -- Utils vim.keymap.set("n", "|", ":vs", { desc = "Create vsplit", silent = true }) vim.keymap.set("n", "°", ":sp", { desc = "Create split", silent = true }) vim.keymap.set("v", "p", [["_dP]], { desc = "Paste without lossing yanked text", silent = true }) -vim.keymap.set("v", "J", ":m '>+1gv=gv", { desc = "Move selection down", silent = true }) -vim.keymap.set("v", "K", ":m '<-2gv=gv", { desc = "Move selection up", silent = true }) vim.keymap.set("n", "uh", ":nohl", { desc = "Remove search highlight", silent = true }) -- Buffer manipulation diff --git a/config/nvim_unstable/lua/aleidk/plugins/colorscheme.lua b/config/nvim_unstable/lua/aleidk/plugins/colorscheme.lua index af5c7fc..2eef16c 100644 --- a/config/nvim_unstable/lua/aleidk/plugins/colorscheme.lua +++ b/config/nvim_unstable/lua/aleidk/plugins/colorscheme.lua @@ -18,6 +18,10 @@ return { -- Change colors.none if not using a transparent background mason = true, noice = true, notify = true, + mini = { + enabled = true, + indentscope_color = "", + }, }, custom_highlights = function(colors) return { diff --git a/config/nvim_unstable/lua/aleidk/plugins/comments.lua b/config/nvim_unstable/lua/aleidk/plugins/comments.lua index 876a4ed..de06eda 100644 --- a/config/nvim_unstable/lua/aleidk/plugins/comments.lua +++ b/config/nvim_unstable/lua/aleidk/plugins/comments.lua @@ -9,16 +9,4 @@ return { { "gcl", function() require("comment-box").llline() end, { desc = "Create a comment line", mode = { "n", "v" }, } }, }, }, - { - "folke/todo-comments.nvim", - cmd = { "TodoTrouble", "TodoTelescope" }, - event = { "BufReadPost", "BufNewFile" }, - config = true, - keys = { - { "]t", function() require("todo-comments").jump_next() end, desc = "Next todo comment" }, - { "[t", function() require("todo-comments").jump_prev() end, desc = "Previous todo comment" }, - { "ft", "TodoTrouble", desc = "Find todos (Trouble)" }, - { "fT", "TodoTelescope", desc = "Find todos (Telescope)" }, - }, - } } diff --git a/config/nvim_unstable/lua/aleidk/plugins/file-explorer.lua b/config/nvim_unstable/lua/aleidk/plugins/file-explorer.lua index 2f76b72..6499ad7 100644 --- a/config/nvim_unstable/lua/aleidk/plugins/file-explorer.lua +++ b/config/nvim_unstable/lua/aleidk/plugins/file-explorer.lua @@ -2,16 +2,16 @@ return { "mikavilpas/yazi.nvim", keys = { { - "e", + "E", "Yazi", desc = "Open yazi at the current file", }, - { - -- Open in the current working directory - "E", - "Yazi cwd", - desc = "Open the file manager in nvim's working directory", - }, + -- { + -- -- Open in the current working directory + -- "E", + -- "Yazi cwd", + -- desc = "Open the file manager in nvim's working directory", + -- }, }, opts = { -- if you want to open yazi instead of netrw, see below for more info diff --git a/config/nvim_unstable/lua/aleidk/plugins/git.lua b/config/nvim_unstable/lua/aleidk/plugins/git.lua deleted file mode 100644 index f34672f..0000000 --- a/config/nvim_unstable/lua/aleidk/plugins/git.lua +++ /dev/null @@ -1,52 +0,0 @@ -local const = require("aleidk.constants") - -return { - { - "lewis6991/gitsigns.nvim", - event = { "BufReadPre", "BufNewFile" }, - opts = { - -- See `:help gitsigns.txt` - signcolumn = true, -- Toggle with `:Gitsigns toggle_signs` - numhl = true, -- Toggle with `:Gitsigns toggle_numhl` - linehl = false, -- Toggle with `:Gitsigns toggle_linehl` - word_diff = false, -- Toggle with `:Gitsigns toggle_word_diff` - signs = { - add = { text = const.icons.git.added }, - change = { text = const.icons.git.modified }, - delete = { text = const.icons.git.removed }, - topdelete = { text = const.icons.git.removed }, - changedelete = { text = const.icons.git.removed }, - untracked = { text = "▎" }, - }, - signs_staged = { - add = { text = const.icons.git.added }, - change = { text = const.icons.git.modified }, - delete = { text = const.icons.git.removed }, - topdelete = { text = const.icons.git.removed }, - changedelete = { text = const.icons.git.removed }, - untracked = { text = "▎" }, - }, - on_attach = function(buffer) - local gs = package.loaded.gitsigns - - local function map(mode, l, r, desc) - vim.keymap.set(mode, "g" .. l, r, { buffer = buffer, desc = desc }) - end - - -- stylua: ignore start - map("n", "j", gs.next_hunk, "Next Hunk") - map("n", "k", gs.prev_hunk, "Prev Hunk") - map({ "n", "v" }, "s", ":Gitsigns stage_hunk", "Stage Hunk") - map({ "n", "v" }, "r", ":Gitsigns reset_hunk", "Reset Hunk") - map("n", "u", gs.undo_stage_hunk, "Undo Stage Hunk") - map("n", "R", gs.reset_buffer, "Reset Buffer") - map("n", "", gs.preview_hunk, "Preview Hunk") - map("n", "l", function() gs.blame_line({ full = true }) end, "Blame Line") - map("n", "L", gs.toggle_current_line_blame, "Toggle current line blame") - map("n", "d", gs.toggle_word_diff, "Toggle word diff") - map("n", "h", "diffget", "Diff This with last commit") - map("n", "l", "diffput", "Diff This with last commit") - end, - }, - }, -} diff --git a/config/nvim_unstable/lua/aleidk/plugins/init.lua b/config/nvim_unstable/lua/aleidk/plugins/init.lua index f9b3cf8..1745f23 100644 --- a/config/nvim_unstable/lua/aleidk/plugins/init.lua +++ b/config/nvim_unstable/lua/aleidk/plugins/init.lua @@ -1,23 +1,6 @@ return { 'tpope/vim-sleuth', -- Detect tabstop and shiftwidth automatically { "nvim-tree/nvim-web-devicons", lazy = true }, - { - -- Highlight word under cursor - "RRethy/vim-illuminate", - event = { "BufReadPost", "BufNewFile" }, - opts = { - delay = 200, - filetypes_denylist = { - 'dirbuf', - 'dirvish', - 'fugitive', - 'aerial', - }, - }, - config = function(_, opts) - require("illuminate").configure(opts) - end, - }, { "ckolkey/ts-node-action", dependencies = { "nvim-treesitter" }, @@ -26,17 +9,4 @@ return { { "ls", function() require("ts-node-action").node_action() end, desc = "Node Action" } } }, - { - "Wansmer/treesj", - cmd = { "TSJToggle" }, - keys = { - { "lm", "TSJToggle", desc = "Toggle treesitter join" }, - }, - dependencies = { "nvim-treesitter/nvim-treesitter" }, - opts = { - use_default_keymaps = true, - }, - }, - - } diff --git a/config/nvim_unstable/lua/aleidk/plugins/luasnip.lua b/config/nvim_unstable/lua/aleidk/plugins/luasnip.lua deleted file mode 100644 index 5f4e132..0000000 --- a/config/nvim_unstable/lua/aleidk/plugins/luasnip.lua +++ /dev/null @@ -1,27 +0,0 @@ -return { - "L3MON4D3/LuaSnip", - dependencies = { - "rafamadriz/friendly-snippets", - config = function() - require("luasnip.loaders.from_vscode").lazy_load() - end, - }, - opts = { - history = true, - delete_check_events = "TextChanged", - }, - -- stylua: ignore - keys = { - { - "", - function() - return require("luasnip").jumpable(1) and "luasnip-jump-next" or "" - end, - expr = true, - silent = true, - mode = "i", - }, - { "", function() require("luasnip").jump(1) end, mode = "s" }, - { "", function() require("luasnip").jump(-1) end, mode = { "i", "s" } }, - }, -} diff --git a/config/nvim_unstable/lua/aleidk/plugins/mini.lua b/config/nvim_unstable/lua/aleidk/plugins/mini.lua new file mode 100644 index 0000000..17aad31 --- /dev/null +++ b/config/nvim_unstable/lua/aleidk/plugins/mini.lua @@ -0,0 +1,194 @@ +return { + 'echasnovski/mini.nvim', + version = '*', + dependencies = { + "rafamadriz/friendly-snippets", + }, + config = function() + require('mini.icons').setup() + require('mini.bracketed').setup() -- [] movement for various stuff + require("mini.ai").setup({}) + require('mini.cursorword').setup() -- Highlight word under cursor + require('mini.extra').setup() + require('mini.jump').setup() -- Extend f, F, t, T + require('mini.surround').setup() + require('mini.operators').setup() + require('mini.pairs').setup() + require('mini.splitjoin').setup() + require("mini.align").setup({}) + require('mini.animate').setup() + require('mini.notify').setup() + require('mini.starter').setup() + require('mini.statusline').setup({}) + require('mini.diff').setup({ view = { style = 'sign' } }) + + require('mini.git').setup({}) + + local rhs = 'lua MiniGit.show_at_cursor()' + vim.keymap.set({ 'n', 'x' }, 'gs', rhs, { desc = 'Show at cursor', silent = true }) + + local starter = require('mini.starter') + starter.setup({ + footer = '', + evaluate_single = true, + items = { + starter.sections.recent_files(10, true), + starter.sections.pick(), + starter.sections.builtin_actions(), + }, + content_hooks = { + starter.gen_hook.adding_bullet(), + starter.gen_hook.indexing('all', { 'Builtin actions' }), + starter.gen_hook.aligning("center", "center"), + }, + }) + + require('mini.indentscope').setup({ + draw = { + animation = require('mini.indentscope').gen_animation.none(), + }, + }) + + require('mini.files').setup({ + mappings = { + go_in = 'L', + go_in_plus = 'l', + }, + windows = { + preview = true, + width_preview = 75, + } + }) + vim.keymap.set('n', 'e', ":lua MiniFiles.open(vim.api.nvim_buf_get_name(0))", + { desc = 'Show at cursor', silent = true }) + + require('mini.move').setup({ + mappings = { + -- Move visual selection in Visual mode + left = 'H', + right = 'L', + down = 'J', + up = 'K', + + -- Move current line in Normal mode + line_left = '', + line_right = '', + line_down = '', + line_up = '', + }, + }) + require('mini.comment').setup({ + options = { + -- Whether to ignore blank lines when commenting + ignore_blank_line = true, + -- Whether to ignore blank lines in actions and textobject + start_of_line = true, + }, + }) + + local gen_loader = require('mini.snippets').gen_loader + require('mini.snippets').setup({ + snippets = { + -- Load custom file with global snippets first (adjust for Windows) + gen_loader.from_file('~/.config/nvim-unstable/snippets/global.json'), + + -- Load snippets based on current language by reading files from + -- "snippets/" subdirectories from 'runtimepath' directories. + gen_loader.from_lang(), + }, + }) + + local miniclue = require("mini.clue") + miniclue.setup({ + triggers = { + -- Leader triggers + { mode = "n", keys = "" }, + { mode = "v", keys = "" }, + { mode = "x", keys = "" }, + + -- Built-in completion + { mode = "i", keys = "" }, + + -- `g` key + { mode = "n", keys = "g" }, + { mode = "x", keys = "g" }, + + -- Marks + { mode = "n", keys = "'" }, + { mode = "n", keys = "`" }, + { mode = "x", keys = "'" }, + { mode = "x", keys = "`" }, + + -- Registers + { mode = "n", keys = '"' }, + { mode = "x", keys = '"' }, + { mode = "i", keys = "" }, + { mode = "c", keys = "" }, + + -- Window commands + { mode = "n", keys = "" }, + + -- `z` key + { mode = "n", keys = "z" }, + { mode = "x", keys = "z" }, + }, + + -- Add a "postkeys" value to activate those keys after others + clues = { + miniclue.gen_clues.builtin_completion(), + miniclue.gen_clues.g(), + miniclue.gen_clues.marks(), + miniclue.gen_clues.registers(), + miniclue.gen_clues.windows(), + miniclue.gen_clues.z(), + + { mode = "n", keys = "", desc = "+Bookmarks" }, + { mode = "n", keys = "n", postkeys = "" }, + { mode = "n", keys = "N", postkeys = "" }, + { mode = "n", keys = "b", desc = "+Buffers" }, + { mode = "n", keys = "bh", postkeys = "b" }, + { mode = "n", keys = "bl", postkeys = "b" }, + { mode = "n", keys = "f", desc = "+Find" }, + { mode = "n", keys = "g", desc = "+Git" }, + { mode = "n", keys = "l", desc = "+LSP" }, + { mode = "n", keys = "r", desc = "+Replace" }, + { mode = "n", keys = "u", desc = "+UI & Config" }, + { mode = "n", keys = "un", desc = "+Noice" }, + { mode = "n", keys = "w", desc = "+Workspace" }, + { mode = "n", keys = "p", desc = "+Run stuff" }, + { mode = "n", keys = "z", desc = "+ZK" }, + { mode = "v", keys = "z", desc = "+ZK" }, + { mode = "v", keys = "a", desc = "+AI" }, + { mode = "n", keys = "a", desc = "+AI" }, + { mode = "n", keys = "g?", desc = "+Print Debug" }, + }, + + -- Clue window settings + window = { + -- Floating window config + config = { + width = "auto", + }, + -- Delay before showing clue window + delay = 200, + -- Keys to scroll inside the clue window + scroll_down = "", + scroll_up = "", + }, + }) + + local hipatterns = require('mini.hipatterns') + hipatterns.setup({ + highlighters = { + -- Highlight standalone 'FIXME', 'HACK', 'TODO', 'NOTE' + fixme = { pattern = '%f[%w]()FIXME()%f[%W]', group = 'MiniHipatternsFixme' }, + hack = { pattern = '%f[%w]()HACK()%f[%W]', group = 'MiniHipatternsHack' }, + todo = { pattern = '%f[%w]()TODO()%f[%W]', group = 'MiniHipatternsTodo' }, + note = { pattern = '%f[%w]()NOTE()%f[%W]', group = 'MiniHipatternsNote' }, + + -- Highlight hex color strings (`#rrggbb`) using that color + hex_color = hipatterns.gen_highlighter.hex_color(), + }, + }) + end +} diff --git a/config/nvim_unstable/snippets/global.json b/config/nvim_unstable/snippets/global.json new file mode 100644 index 0000000..7f89b11 --- /dev/null +++ b/config/nvim_unstable/snippets/global.json @@ -0,0 +1,11 @@ +{ + "Basic": { "prefix": "ba", "body": "T1=$1 T2=$2 T0=$0" }, + "Placeholders": { "prefix": "pl", "body": "T1=${1:aa}\nT2=${2:<$1>}" }, + "Choices": { "prefix": "ch", "body": "T1=${1|a,b|} T2=${2|c,d|}" }, + "Linked": { "prefix": "li", "body": "T1=$1\n\tT1=$1" }, + "Variables": { "prefix": "va", "body": "Runtime: $VIMRUNTIME\n" }, + "Complex": { + "prefix": "co", + "body": ["T1=${1:$RANDOM}", "T3=${3:$1_${2:$1}}", "T2=$2"] + } +}