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 = "r", desc = "+Replace" }, { mode = "n", keys = "u", desc = "+UI & Config" }, { 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(), }, }) 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 }