return { 'mini.animate', enabled = vim.g.neovide == nil, event = { 'DeferredUIEnter' }, after = function() local mouse_scrolled = false for _, scroll in ipairs({ 'UP', 'DOWN' }) do local key = '' vim.keymap.set({ '', 'i' }, key, function() mouse_scrolled = true return key end, { expr = true }) end vim.api.nvim_create_autocmd('FileType', { pattern = 'grug-far', callback = function() vim.b.minianimate_disable = true end, }) Snacks.toggle({ name = 'mini animate', get = function() return not vim.g.minianimate_disable end, set = function(state) vim.g.minianimate_disable = not state end, }):map('ua') local animate = require('mini.animate') local opts = { resize = { timing = animate.gen_timing.linear({ duration = 50, unit = 'total' }), }, scroll = { timing = animate.gen_timing.linear({ duration = 50, unit = 'total' }), subscroll = animate.gen_subscroll.equal({ predicate = function(total_scroll) if mouse_scrolled then mouse_scrolled = false return false end return total_scroll > 1 end, }), }, } animate.setup(opts) end, }