local map = vim.keymap.set vim.schedule(function() require('mini.align').setup() require('mini.surround').setup() require('mini.splitjoin').setup { detect = { separator = '[,;\n]' } } local ai = require('mini.ai') ai.setup { n_lines = 300, custom_textobjects = { i = require('mini.extra').gen_ai_spec.indent(), b = require('mini.extra').gen_ai_spec.buffer(), a = ai.gen_spec.treesitter { a = '@parameter.outer', i = '@parameter.inner' }, f = ai.gen_spec.treesitter { a = '@function.outer', i = '@function.inner' }, }, } require('mini.git').setup() map('n', 'gb', 'Git blame -- %') map('n', 'go', function() return MiniGit.show_at_cursor() end) local jump = require('mini.jump2d') jump.setup { mappings = { start_jumping = 's', }, view = { n_steps_ahead = 1, dim = true }, spotter = jump.gen_spotter.vimpattern(), } local diff = require('mini.diff') diff.setup { source = { require('iofq.minidiff_jj').gen_source(), diff.gen_source.git(), }, } map('n', 'gp', MiniDiff.toggle_overlay) require('mini.files').setup { mappings = { go_in_plus = '' }, windows = { preview = true, width_preview = 50, }, } map('n', 'nc', function() MiniFiles.open(vim.api.nvim_buf_get_name(0), false) -- open current buffer's dir end) vim.api.nvim_create_autocmd('User', { pattern = 'MiniFilesBufferCreate', callback = function(args) map('n', 'nc', function() MiniFiles.synchronize() MiniFiles.close() end, { buffer = args.data.buf_id }) map('n', '`', function() local _, cur_entry_path = pcall(MiniFiles.get_fs_entry().path) local cur_directory = vim.fs.dirname(cur_entry_path) if cur_directory ~= '' then vim.fn.chdir(cur_directory) end end, { buffer = args.data.buf_id }) end, }) -- pass file rename events to LSP vim.api.nvim_create_autocmd('User', { group = vim.api.nvim_create_augroup('snacks_rename', { clear = true }), pattern = 'MiniFilesActionRename', callback = function(event) Snacks.rename.on_rename_file(event.data.from, event.data.to) end, }) end)