Files
dotfiles/config/mini.nvim/init.lua
T
gitadmin 653bb44327 refactor(mini.nvim): replace manual bootstrap with vim.pack.add
Use Neovim's built-in package manager instead of manual git clone for
mini.nvim installation. Remove stale commented-out add() calls and
reorder requires. Also add fish alias for launching mini.nvim.
2026-07-18 12:43:54 -04:00

228 lines
7.1 KiB
Lua

vim.g.mapleader = ' '
vim.g.maplocalleader = ' '
vim.g.have_nerd_fonts = true
-- set <space> as my leader key
vim.g.autoformat = true
-- vim.g.root_spec = { "lsp", { ".git", "lua" }, "cwd" }
vim.g.editorconfig = true
vim.wo.number = true
vim.opt.background = "dark"
vim.opt.backup = false
vim.schedule(function()
vim.opt.clipboard = "unnamedplus"
end)
vim.opt.cmdheight = 1
vim.opt.completeopt = "menu,menuone,noselect"
vim.opt.conceallevel = 2
vim.opt.hlsearch = true
vim.opt.breakindent = true
vim.opt.ignorecase = true
vim.opt.formatoptions = "jcroqlnt"
vim.opt.grepformat = "%f:%l:%c:%m"
vim.opt.grepprg = "rg --vimgrep"
vim.opt.ignorecase = true
vim.opt.inccommand = "split"
vim.opt.list = true
vim.opt.listchars = { tab = "» ", trail = "·", nbsp = "␣" }
vim.opt.mouse = "a"
vim.opt.pumblend = 10
vim.opt.pumheight = 10
vim.opt.showmode = false
vim.opt.showtabline = 0
vim.opt.smartcase = true
vim.opt.smartindent = true
vim.opt.splitbelow = true
vim.opt.splitright = true
-- vim.opt.splitkeep = "screen"
vim.opt.swapfile = false
vim.opt.termguicolors = true
vim.opt.undofile = true
vim.opt.undolevels = 10000
-- vim.opt.updatetime = 250 -- default 250
-- vim.opt.timeoutlen = 250 -- default 1000
vim.opt.timeout = false
vim.opt.writebackup = false
vim.opt.expandtab = true
vim.opt.shiftround = true
vim.opt.shiftwidth = 4
vim.opt.shortmess:append({ W = true, I = true, c = true, C = true })
vim.opt.spelllang = { "en" }
vim.opt.tabstop = 4
vim.opt.cursorline = true
vim.opt.number = true
vim.opt.relativenumber = true
vim.opt.laststatus = 3
vim.opt.showcmd = false
vim.opt.ruler = false
vim.opt.numberwidth = 4
vim.opt.signcolumn = "yes"
vim.opt.wrap = false
vim.opt.scrolloff = 8
vim.opt.sidescrolloff = 8
vim.opt.shell = "/bin/bash"
vim.opt.sessionoptions = { "blank", "buffers", "curdir", "tabpages", "winsize", "winpos", "terminal", "localoptions", "help", "skiprtp", "folds" }
vim.opt.virtualedit = "block"
vim.opt.wildmode = "longest:full,full"
vim.opt.winminwidth = 5
-- vim.opt.hidden = false
vim.opt.cindent = true
vim.opt.autoindent = true
if vim.fn.has("nvim-0.10") == 1 then
vim.opt.smoothscroll = true
end
vim.opt.foldmethod = "expr"
vim.opt.foldexpr = "v:lua.vim.treesitter.foldexpr()"
vim.opt.foldlevel = 99
vim.opt.nu = true
vim.opt.errorbells = false
vim.opt.belloff = "all"
vim.opt.undodir = vim.fn.stdpath('data') .. "/undodir"
vim.opt.softtabstop = 4
vim.opt.incsearch = true
-- vim.opt.fillchars.eob = " "
-- vim.opt.shortmess:append("c")
-- vim.opt.whichwrap:append("<,>,[,],h,l")
-- vim.opt.iskeyword:append(".")
-- vim.o.isfname:append("@-@")
-- vim.o.colorcolumn = "80"
--
vim.pack.add({ 'https://github.com/nvim-mini/mini.nvim' })
require('mini.extra').setup()
require('mini.ai').setup({
custom_textobjects = {
B = MiniExtra.gen_ai_spec.buffer(),
I = MiniExtra.gen_ai_spec.indent(),
L = MiniExtra.gen_ai_spec.line(),
},
})
require('mini.align').setup()
require('mini.bracketed').setup()
local hi_words = MiniExtra.gen_highlighter.words
require('mini.hipatterns').setup({
highlighters = {
-- Highlight standalone 'FIXME', 'HACK', 'TODO', 'NOTE'
fixme = hi_words({ 'FIXME', 'Fixme', 'fixme' }, "MiniHipatternsFixme"),
hack = hi_words({ 'HACK', 'Hack', 'hack' }, "MiniHipatternsHack"),
todo = hi_words({ 'TODO', 'Todo', 'todo' }, "MiniHipatternsTodo"),
note = hi_words({ 'NOTE', 'Note', 'note' }, "MiniHipatternsNote"),
-- Highlight hex color strings (`#rrggbb`) using that color
-- hex_color = hipatterns.gen_highlighter.hex_color(),
},
})
require("mini.surround").setup({
-- Add custom surroundings to be used on top of builtin ones. For more
-- information with examples, see `:h MiniSurround.config`.
-- custom_surroundings = {
-- s = { input = { '%[%[().-()%]%]' }, output = { left = '[[', right = ']]' } },
-- },
mappings = {
add = 'sa', -- Add surrounding in Normal and Visual modes
delete = 'sd', -- Delete surrounding
find = 'sf', -- Find surrounding (to the right)
find_left = 'sF', -- Find surrounding (to the left)
highlight = 'sh', -- Highlight surrounding
replace = 'sr', -- Replace surrounding
update_n_lines = 'sn', -- Update `n_lines`
suffix_last = 'l', -- Suffix to search with "prev" method
suffix_next = 'n', -- Suffix to search with "next" method
},
})
require("mini.operators").setup({
evaluate = { prefix = 'g=', func = nil, },
exchange = { prefix = 'g.', reindent_linewise = true, },
multiply = { prefix = 'gm', func = nil, },
replace = { prefix = 'gk', reindent_linewise = true, },
sort = { prefix = 'gs', func = nil, }
})
local miniclue = require('mini.clue')
miniclue.setup({
triggers = {
-- Leader triggers
{ mode = 'n', keys = '<Leader>' },
{ mode = 'x', keys = '<Leader>' },
-- Built-in completion
{ mode = 'i', keys = '<C-x>' },
-- `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 = '<C-r>' },
{ mode = 'c', keys = '<C-r>' },
-- Window commands
{ mode = 'n', keys = '<C-w>' },
-- `z` key
{ mode = 'n', keys = 'z' },
{ mode = 'x', keys = 'z' },
},
clues = {
-- Enhance this by adding descriptions for <Leader> mapping groups
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(),
},
})
require('mini.bufremove').setup()
require('mini.comment').setup()
require('mini.completion').setup()
require('mini.cursorword').setup()
require('mini.diff').setup()
require('mini.files').setup()
require('mini.fuzzy').setup()
require('mini.git').setup()
require('mini.icons').setup()
require('mini.jump2d').setup()
require('mini.jump').setup()
require('mini.move').setup()
require('mini.pick').setup()
require('mini.sessions').setup()
require('mini.splitjoin').setup()
require('mini.statusline').setup()
require('mini.tabline').setup()
require('mini.visits').setup()
vim.keymap.set('n', '<leader>f', '<cmd>Pick files<cr>', { desc = "Pick files" })
vim.keymap.set('n', '<leader>j', '<cmd>Pick oldfiles<cr>', { desc = "Pick files" })
vim.keymap.set('n', '<leader>/', '<cmd>Pick grep_live<cr>', { desc = "live grep" })
vim.keymap.set('n', '<leader>s/', '<cmd>Pick buf_lines<cr>', { desc = 'search in buffer' })
vim.keymap.set('n', '<leader>sk', '<cmd>Pick keymaps<cr>', { desc = 'search in buffer' })
vim.keymap.set('n', '<leader>sm', '<cmd>Pick marks<cr>', { desc = 'search in buffer' })
vim.keymap.set('n', '<leader><space>', '<cmd>Pick buffers<cr>', { desc = 'find buffer' })
vim.keymap.set('n', '<leader>q', '<cmd>Pick diagnostic<cr>', { desc = 'find diagnostic' })
vim.keymap.set('n', '<leader>-', '<cmd>Pick explorer<cr>', { desc = 'explorer' })
vim.keymap.set('n', '<M-x>', '<cmd>Pick commands<cr>', { desc = 'commands' })
vim.cmd("colorscheme minicyan")