{lib, ...}: let inherit (lib.generators) mkLuaInline; in { config.vim = { options = { termguicolors = true; number = true; wrap = false; tabstop = 2; smartindent = true; shiftwidth = 2; expandtab = true; cursorline = true; cursorcolumn = true; backupcopy = "yes"; writebackup = false; }; diagnostics = { enable = true; config = { virtual_text = false; virtual_lines = true; signs = true; update_in_insert = true; underline = true; severity_sort = false; float = true; }; }; formatter.conform-nvim.enable = true; git.gitsigns.enable = true; autocomplete.blink-cmp = { enable = true; friendly-snippets.enable = true; mappings = { complete = null; confirm = null; next = null; previous = null; close = null; scrollDocsUp = null; scrollDocsDown = null; }; setupOpts = { keymap.preset = "super-tab"; signature.enabled = true; completion = { documentation.auto_show = true; menu = { draw = { padding = [ 0 1 ]; components = { kind_icon = { text = mkLuaInline '' function(ctx) return ' ' .. ctx.kind_icon .. ctx.icon_gap .. ' ' end ''; }; }; }; }; }; cmdline = { keymap.preset = "super-tab"; completion.menu.auto_show = mkLuaInline '' function(ctx) return vim.fn.getcmdtype() == ":" end ''; }; }; }; mini = { pairs.enable = true; surround.enable = true; trailspace.enable = true; cursorword.enable = true; tabline.enable = true; hipatterns = { enable = true; setupOpts = { highlighters = { 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"; }; hex_color = mkLuaInline '' require('mini.hipatterns').gen_highlighter.hex_color() ''; }; }; }; }; keymaps = [ { mode = [ "n" "i" "v" "c" "t" ]; key = ""; action = ""; silent = true; } ]; autocmds = [ { event = [ "FileType" ]; pattern = [ "markdown" ]; callback = mkLuaInline '' function() vim.opt_local.wrap = true vim.opt_local.linebreak = true end ''; } ]; }; }