-- Clone 'mini.nvim' manually in a way that it gets managed by 'mini.deps' local path_package = vim.fn.stdpath('data') .. '/site/' local mini_path = path_package .. 'pack/deps/start/mini.nvim' if not (vim.uv or vim.loop).fs_stat(mini_path) then vim.cmd('echo "Installing [`mini.nvim`](../doc/mini-nvim.qmd#mini.nvim)" | redraw') local clone_cmd = { 'git', 'clone', '--filter=blob:none', 'https://github.com/nvim-mini/mini.nvim', mini_path } vim.fn.system(clone_cmd) vim.cmd('packadd mini.nvim | helptags ALL') vim.cmd('echo "Installed [`mini.nvim`](../doc/mini-nvim.qmd#mini.nvim)" | redraw') end -- Set up Mini stuff require('mini.ai').setup() -- enhances the use of a/i textobjects require('mini.align').setup() -- utility to align text in various ways require('mini.comment').setup() -- for toggling comments inline require('mini.completion').setup() -- for providing autocompletion results TODO: not up-to-par for my normal things require('mini.move').setup() -- moving lines require('mini.operators').setup() -- duplicating lines and evaluating equations inline require('mini.pairs').setup() -- automatic closing pairs require('mini.surround').setup() -- surround stuff require('mini.clue').setup() -- shows available keybinds when performing keybind actions require('mini.diff').setup() -- shows git diffs in the file require('mini.files').setup({ -- file browser -- TODO: customise with some sensible keybindings }) require('mini.jump').setup() -- extends f,F,t,T to work across multiple lines require('mini.pick').setup() -- picker/browser for various occasions TODO: research to potentially replace telescope. require('mini.sessions').setup() -- for loading / creating sessions TODO: replace the AWFUL session management I keep bickering with with this, (I hope). require('mini.cursorword').setup() -- highlight words beneath the cursor WARN: conflicts with the folke word thingie require('mini.hipatterns').setup({ -- TODO: look into replacing folke todo comments with this }) require('mini.icons').setup() require('mini.indentscope').setup({ -- shows our current indent level draw = { delay = 50, animation = require('mini.indentscope').gen_animation.none(), } }) require('mini.notify').setup() -- has more noticeable / utilitarian / aesthetically pleasing notifications require('mini.statusline').setup({ content = { -- TODO: I still want the all-caps modal things, and likely farther customisations. active = function() local mode, mode_hl = MiniStatusline.section_mode({ trunc_width = 120 }) local git = MiniStatusline.section_git({ trunc_width = 40 }) local diff = MiniStatusline.section_diff({ trunc_width = 75 }) local diagnostics = MiniStatusline.section_diagnostics({ trunc_width = 75 }) local lsp = MiniStatusline.section_lsp({ trunc_width = 75 }) local filename = MiniStatusline.section_filename({ trunc_width = 140 }) local fileinfo = MiniStatusline.section_fileinfo({ trunc_width = 120 }) return MiniStatusline.combine_groups({ { hl = mode_hl, strings = { mode } }, { hl = 'MiniStatuslineDevinfo', strings = { git, diff, diagnostics, lsp } }, '%<', -- general truncation point { hl = 'MiniStatuslineFilename', strings = { filename } }, '%=', -- align right { hl = 'MiniStatuslineFileInfo', strings = { fileinfo } }, { hl = mode_hl, strings = { '%3l:%-3c' } } }) end, inactive = function() return MiniStatusline.combine_groups({ -- TODO: what the heck is happening here? {}, }) end }, use_icons = true, set_vim_settings = true, }) require('mini.deps').setup({ path = { package = path_package } }) -- import the plugins that we'll be using local add = MiniDeps.add add({ source = 'https://github.com/rmagatti/auto-session' }) add({ source = 'https://github.com/windwp/nvim-autopairs' }) add({ source = 'https://github.com/saghen/blink.cmp' }) add({ source = 'https://github.com/akinsho/bufferline.nvim', depends = { 'https://github.com/nvim-tree/nvim-web-devicons' } }) add({ source = 'https://github.com/stevearc/conform.nvim' }) add({ source = 'https://github.com/lewis6991/gitsigns.nvim' }) add({ source = 'https://github.com/ellisonleao/gruvbox.nvim' }) add({ source = 'https://github.com/folke/lazydev.nvim' }) add({ source = 'https://github.com/lmburns/lf.nvim', depends = { 'https://github.com/akinsho/toggleterm.nvim' } }) add({ source = 'https://github.com/ray-x/lsp_signature.nvim' }) add({ source = 'https://github.com/neovim/nvim-lspconfig' }) add({ source = 'https://github.com/L3MON4D3/LuaSnip' }) add({ source = 'https://github.com/mfussenegger/nvim-lint' }) add({ source = 'https://github.com/nvim-treesitter/nvim-treesitter' }) add({ source = 'https://github.com/MeanderingProgrammer/render-markdown.nvim', depends = { 'https://github.com/nvim-tree/nvim-web-devicons' } }) add({ source = 'https://github.com/folke/snacks.nvim', depends = { 'https://github.com/nvim-tree/nvim-web-devicons' } }) add({ source = 'https://github.com/nvim-telescope/telescope.nvim', depends = { 'https://github.com/nvim-lua/plenary.nvim' } }) add({ source = 'https://github.com/folke/todo-comments.nvim', depends = { 'https://github.com/nvim-lua/plenary.nvim' } }) add({ source = 'https://github.com/akinsho/toggleterm.nvim' }) add({ source = 'https://github.com/folke/which-key.nvim' })