return { "echasnovski/mini.nvim", version = "*", dependencies = { "rafamadriz/friendly-snippets", }, config = function() require("mini.icons").setup() vim.fn.sign_define("DapBreakpoint", { text = " ", texthl = "DapBreakpoint" }) vim.fn.sign_define("DapBreakpointCondition", { text = " ", texthl = "DapBreakpointCondition" }) vim.fn.sign_define("DapBreakpointRejected", { text = " ", texthl = "DapBreakpointRejected" }) vim.fn.sign_define("DapLogPoint", { text = ".>", texthl = "DapLogPoint" }) vim.fn.sign_define("DapStopped", { text = "󰁕 ", texthl = "DapStopped", numhl = "debugPC" }) require("mini.bracketed").setup({ diagnostic = { options = { severity = vim.diagnostic.severity.ERROR } }, }) require("mini.ai").setup({}) require("mini.cursorword").setup() -- Highlight word under cursor require("mini.extra").setup() require("mini.jump").setup({ mappings = { repeat_jump = "", }, }) -- Extend f, F, t, T require("mini.jump2d").setup({ spotter = require("mini.jump2d").gen_pattern_spotter("[^%s%p]+", "start"), view = { dim = true, n_steps_ahead = 2, }, allowed_lines = { blank = false, cursor_at = false, }, }) require("mini.surround").setup() require("mini.operators").setup() require("mini.pairs").setup({ modes = { command = true }, }) require("mini.splitjoin").setup() require("mini.align").setup({}) -- require('mini.animate').setup() require("mini.notify").setup() vim.notify = require("mini.notify").make_notify() vim.keymap.set( "n", "un", require("mini.notify").show_history, { desc = "Show notifications", silent = true } ) require("mini.statusline").setup() require("mini.diff").setup({ view = { style = "sign" } }) require("mini.git").setup({}) vim.keymap.set( { "n", "x" }, "gs", "lua MiniGit.show_at_cursor()", { 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.sessions(5, 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.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 = "d", desc = "+Debugger" }, { mode = "n", keys = "dh", postkeys = "d" }, { mode = "n", keys = "dJ", postkeys = "d" }, { mode = "n", keys = "dj", postkeys = "d" }, { mode = "n", keys = "dk", postkeys = "d" }, { mode = "n", keys = "dl", postkeys = "d" }, { mode = "n", keys = "f", desc = "+Find" }, { mode = "n", keys = "g", desc = "+Git" }, { mode = "n", keys = "l", desc = "+LSP" }, { mode = "n", keys = "u", desc = "+UI & Config" }, { mode = "n", keys = "p", desc = "+Run stuff" }, { mode = "n", keys = "z", desc = "+ZK" }, { mode = "v", keys = "z", desc = "+ZK" }, { 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(), }, }) require("mini.sessions").setup({ autowrite = false, }) vim.keymap.set("n", "us", function() local default_name = require("mini.sessions").get_latest() or "Session.vim" vim.ui.input({ prompt = "Session name: ", default = default_name }, function(input) if input == nil then return end require("mini.sessions").write(input) end) end, { desc = "Save session", silent = true }) vim.keymap.set("n", "uS", function() require("mini.sessions").read() end, { desc = "Load session (latest)", silent = true }) vim.api.nvim_create_user_command("SessionSelect", function() require("mini.sessions").select("read") end, {}) vim.api.nvim_create_user_command("SessionDelete", function() require("mini.sessions").select("delete") end, {}) vim.keymap.set("n", "uz", function() require("mini.misc").zoom() end, { desc = "Toggle zoom", silent = true }) end, }