From 3f108c935353c89377c680ef7d18cd49696f2057 Mon Sep 17 00:00:00 2001 From: Ismo Vuorinen Date: Wed, 18 Dec 2024 14:16:19 +0200 Subject: [PATCH] feat(nvim): use full mini.nvim instead of subrepos --- config/nvim/lua/plugins/mini.lua | 318 +++++++++++++++---------------- 1 file changed, 149 insertions(+), 169 deletions(-) diff --git a/config/nvim/lua/plugins/mini.lua b/config/nvim/lua/plugins/mini.lua index 416488b..52f5710 100644 --- a/config/nvim/lua/plugins/mini.lua +++ b/config/nvim/lua/plugins/mini.lua @@ -1,28 +1,37 @@ --- https://github.com/echasnovski/mini.nvim --- https://github.com/echasnovski/mini.nvim/tree/main?tab=readme-ov-file#modules return { - -- Presets for common options and mappings - { 'echasnovski/mini.basics', version = '*' }, - - -- Extend and create a/i textobjects - { 'echasnovski/mini.ai', version = '*' }, - - -- Animate common Neovim actions - -- Replaced anuvyklack/windows.nvim - { 'echasnovski/mini.animate', version = '*', opts = {} }, - - -- Buffer removing (unshow, delete, wipeout), which saves window layout - -- Replaced famiu/bufdelete.nvim - { 'echasnovski/mini.bufremove', version = '*', opts = {} }, - - -- Show next key clues - -- Replaced folke/which-key.nvim + -- Library of 40+ independent Lua modules improving overall Neovim + -- (version 0.8 and higher) experience with minimal effort + -- https://github.com/echasnovski/mini.nvim + -- https://github.com/echasnovski/mini.nvim/tree/main?tab=readme-ov-file#modules { - 'echasnovski/mini.clue', + 'echasnovski/mini.nvim', version = '*', + priority = 1001, config = function() - local miniclue = require 'mini.clue' + -- Presets for common options and mappings + -- h: MiniBasics.config + require('mini.basics').setup { + options = { + basics = true, + extra_ui = true, + }, + mappings = { + basic = true, + option_toggle_prefix = [[tm]], + }, + } + -- Animate common Neovim actions + -- Replaced anuvyklack/windows.nvim + require('mini.animate').setup() + + -- Buffer removing (unshow, delete, wipeout), which saves window layout + -- Replaced famiu/bufdelete.nvim + require('mini.bufremove').setup() + + -- Show next key clues + -- Replaced folke/which-key.nvim + local miniclue = require 'mini.clue' miniclue.setup { window = { config = { @@ -76,6 +85,7 @@ return { { mode = 'n', keys = 'q', desc = '+Quit' }, { mode = 'n', keys = 's', desc = '+Telescope' }, { mode = 'n', keys = 't', desc = '+Toggle' }, + { mode = 'n', keys = 'tm', desc = '+Mini' }, { mode = 'n', keys = 'x', desc = '+Trouble' }, { mode = 'n', keys = 'z', desc = '+TreeSitter' }, { mode = 'n', keys = 'zg', desc = '+Goto' }, @@ -84,132 +94,107 @@ return { { mode = 'n', keys = 'y', desc = '+Yank' }, }, } - end, - }, - -- Comment lines - -- Replaced numToStr/Comment.nvim - { 'echasnovski/mini.comment', version = '*', opts = {} }, + -- Comment lines + -- Replaced numToStr/Comment.nvim + require('mini.comment').setup() - -- Highlight cursor word and its matches - { 'echasnovski/mini.cursorword', version = '*' }, + -- Highlight cursor word and its matches + require('mini.cursorword').setup() - -- Work with diff hunks - -- Replaced lewis6991/gitsigns.nvim - { 'echasnovski/mini.diff', version = '*', opts = {} }, + -- Work with diff hunks + -- Replaced lewis6991/gitsigns.nvim + require('mini.diff').setup() - -- Git integration - { - 'echasnovski/mini-git', - version = '*', - opts = {}, - main = 'mini.git', - }, + -- Git integration + require('mini.git').setup() - -- Highlight patterns in text - -- Replaced folke/todo-comments.nvim - { - 'echasnovski/mini.hipatterns', - version = '*', - opts = { - highlighters = { - -- Highlight standalone 'FIXME', 'HACK', 'TODO', 'NOTE', 'BUG', 'PERF' words - fixme = { - pattern = '%f[%w]()FIXME:?%s*()%f[%W]', - group = 'MiniHipatternsFixme', - }, - hack = { - pattern = '%f[%w]()HACK:?%s*()%f[%W]', - group = 'MiniHipatternsHack', - }, - todo = { - pattern = '%f[%w]()NOTE:?%s*()%f[%W]', - group = 'MiniHipatternsTodo', - }, - note = { - pattern = '%f[%w]()NOTE()%f[%W]', - group = 'MiniHipatternsNote', - }, - bug = { - pattern = '%f[%w]()BUG:?%s*()%f[%W]', - group = 'MiniHipatternsBug', - }, - perf = { - pattern = '%f[%w]()PERF:?%s*()%f[%W]', - group = 'MiniHipatternsPerf', - }, - }, - }, - config = function(opts) + -- Highlight patterns in text + -- Replaced folke/todo-comments.nvim local hp = require 'mini.hipatterns' hp.setup { - highlighters = opts.highlighters, + highlighters = { + -- Highlight standalone 'FIXME', 'HACK', 'TODO', 'NOTE', 'BUG', 'PERF' words + fixme = { + pattern = '%f[%w]()FIXME:?%s*()%f[%W]', + group = 'MiniHipatternsFixme', + }, + hack = { + pattern = '%f[%w]()HACK:?%s*()%f[%W]', + group = 'MiniHipatternsHack', + }, + todo = { + pattern = '%f[%w]()TODO:?%s*()%f[%W]', + group = 'MiniHipatternsNote', + }, + note = { + pattern = '%f[%w]()NOTE()%f[%W]', + group = 'MiniHipatternsNote', + }, + bug = { + pattern = '%f[%w]()BUG:?%s*()%f[%W]', + group = 'MiniHipatternsHack', + }, + perf = { + pattern = '%f[%w]()PERF:?%s*()%f[%W]', + group = 'MiniHipatternsNote', + }, + }, -- Highlight hex color strings (`#rrggbb`) using that color hex_color = hp.gen_highlighter.hex_color(), } - end, - }, - -- Icons - { - 'echasnovski/mini.icons', - opts = { - file = { - ['.keep'] = { glyph = '󰊢', hl = 'MiniIconsGrey' }, - ['devcontainer.json'] = { glyph = '', hl = 'MiniIconsAzure' }, - }, - filetype = { - dotenv = { glyph = '', hl = 'MiniIconsYellow' }, - }, - }, - }, + -- Icons + require('mini.icons').setup { + file = { + ['.keep'] = { glyph = '󰊢', hl = 'MiniIconsGrey' }, + ['devcontainer.json'] = { glyph = '', hl = 'MiniIconsAzure' }, + }, + filetype = { + dotenv = { glyph = '', hl = 'MiniIconsYellow' }, + }, + } - -- Visualize and work with indent scope - -- Replaced lukas-reineke/indent-blankline.nvim - { 'echasnovski/mini.indentscope', version = '*', opts = {} }, + -- Visualize and work with indent scope + -- Replaced lukas-reineke/indent-blankline.nvim + require('mini.indentscope').setup() - -- Jump to next/previous single character - { - 'echasnovski/mini.jump', - version = '*', - opts = { - mappings = { - forward = 'f', - backward = 'F', - forward_till = 't', - backward_till = 'T', - repeat_jump = ';', - }, - }, - }, + -- Jump to next/previous single character + require('mini.jump').setup { + mappings = { + forward = 'f', + backward = 'F', + forward_till = 't', + backward_till = 'T', + repeat_jump = ';', + }, + } - -- Move lines and blocks of text - { 'echasnovski/mini.move', version = '*', opts = {} }, + -- Move lines and blocks of text + require('mini.move').setup() - -- Text edit operators - { 'echasnovski/mini.operators', version = '*', opts = {} }, + -- Text edit operators + -- g= - Evaluate text and replace with output + -- gx - Exchange text regions + -- gm - Multiply (duplicate) text + -- gr - Replace text with register + -- gs - Sort text + require('mini.operators').setup() - -- Session management (read, write, delete) - { - 'echasnovski/mini.sessions', - version = '*', - opts = { - autoread = true, - autowrite = true, - }, - }, + -- Session management (read, write, delete) + require('mini.sessions').setup { + autowrite = true, + directory = vim.g.sessions_dir or vim.fn.stdpath 'data' .. '/sessions', + file = '', + } - -- Split and join arguments, lists, and other sequences - -- Replaced Wansmer/treesj - { 'echasnovski/mini.splitjoin', version = '*', opts = {} }, + -- Split and join arguments, lists, and other sequences + -- Replaced Wansmer/treesj + require('mini.splitjoin').setup() - -- Fast and flexible start screen - -- Replaced glepnir/dashboard-nvim - { - 'echasnovski/mini.starter', - version = '*', - config = function() + -- Fast and flexible start screen + -- Replaced glepnir/dashboard-nvim local starter = require 'mini.starter' starter.setup { items = { @@ -223,48 +208,43 @@ return { starter.gen_hook.aligning('center', 'center'), }, } + + -- Minimal and fast statusline module with opinionated default look + -- Replaced nvim-lualine/lualine.nvim + local sl = require 'mini.statusline' + sl.setup { + use_icons = true, + set_vim_settings = true, + content = { + active = function() + local mode, mode_hl = sl.section_mode { trunc_width = 120 } + local git = sl.section_git { trunc_width = 75 } + local diagnostics = sl.section_diagnostics { trunc_width = 75 } + local filename = sl.section_filename { trunc_width = 999 } + -- local fileinfo = statusline.section_fileinfo({ trunc_width = 120 }) + local location = sl.section_location { trunc_width = 75 } + return sl.combine_groups { + { hl = mode_hl, strings = { mode } }, + { hl = 'statuslineDevinfo', strings = { git, diagnostics } }, + '%<', -- Mark general truncate point + { hl = 'statuslineFilename', strings = { filename } }, + '%=', -- End left alignment + -- { hl = 'statuslineFileinfo', strings = { fileinfo } }, + { hl = mode_hl, strings = { location } }, + } + end, + }, + } + + -- Fast and feature-rich surround actions + -- Replaced kylechui/nvim-surround + -- - saiw) - [S]urround [A]dd [I]nner [W]ord [)]Paren + -- - sd' - [S]urround [D]elete [']quotes + -- - sr)' - [S]urround [R]eplace [)] ['] + require('mini.surround').setup() + + -- Work with trailing whitespace + require('mini.trailspace').setup() end, }, - - -- Minimal and fast statusline module with opinionated default look - -- Replaced nvim-lualine/lualine.nvim - { - 'echasnovski/mini.statusline', - version = '*', - opts = { - use_icons = true, - set_vim_settings = true, - content = { - active = function() - local mode, mode_hl = - MiniStatusline.section_mode { trunc_width = 120 } - local git = MiniStatusline.section_git { trunc_width = 75 } - local diagnostics = - MiniStatusline.section_diagnostics { trunc_width = 75 } - local filename = MiniStatusline.section_filename { trunc_width = 50 } - -- local fileinfo = MiniStatusline.section_fileinfo({ trunc_width = 120 }) - local location = MiniStatusline.section_location { trunc_width = 75 } - return MiniStatusline.combine_groups { - { hl = mode_hl, strings = { mode } }, - { hl = 'MiniStatuslineDevinfo', strings = { git, diagnostics } }, - '%<', -- Mark general truncate point - { hl = 'MiniStatuslineFilename', strings = { filename } }, - '%=', -- End left alignment - -- { hl = 'MiniStatuslineFileinfo', strings = { fileinfo } }, - { hl = mode_hl, strings = { location } }, - } - end, - }, - }, - }, - - -- Fast and feature-rich surround actions - -- Replaced kylechui/nvim-surround - -- - saiw) - [S]urround [A]dd [I]nner [W]ord [)]Paren - -- - sd' - [S]urround [D]elete [']quotes - -- - sr)' - [S]urround [R]eplace [)] ['] - { 'echasnovski/mini.surround', version = '*', opts = {} }, - - -- Work with trailing whitespace - { 'echasnovski/mini.trailspace', version = '*', opts = {} }, }