{"id":13895612,"url":"https://github.com/echasnovski/mini.animate","last_synced_at":"2025-04-04T13:08:06.900Z","repository":{"id":108889449,"uuid":"581081736","full_name":"echasnovski/mini.animate","owner":"echasnovski","description":"Neovim Lua plugin to animate common Neovim actions. Part of 'mini.nvim' library. ","archived":false,"fork":false,"pushed_at":"2025-03-27T11:47:26.000Z","size":102,"stargazers_count":223,"open_issues_count":0,"forks_count":0,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-03-28T12:07:46.067Z","etag":null,"topics":["lua","mini-nvim","neovim","neovim-plugin"],"latest_commit_sha":null,"homepage":"","language":"Lua","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/echasnovski.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-12-22T08:18:05.000Z","updated_at":"2025-03-27T11:47:40.000Z","dependencies_parsed_at":null,"dependency_job_id":"f707995b-602c-49e6-a012-bccf34780186","html_url":"https://github.com/echasnovski/mini.animate","commit_stats":{"total_commits":42,"total_committers":2,"mean_commits":21.0,"dds":"0.023809523809523836","last_synced_commit":"d33ddf0eefee6338bbd95805c4595c1b34e6bfe2"},"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/echasnovski%2Fmini.animate","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/echasnovski%2Fmini.animate/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/echasnovski%2Fmini.animate/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/echasnovski%2Fmini.animate/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/echasnovski","download_url":"https://codeload.github.com/echasnovski/mini.animate/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247182365,"owners_count":20897380,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["lua","mini-nvim","neovim","neovim-plugin"],"created_at":"2024-08-06T18:02:20.658Z","updated_at":"2025-04-04T13:08:06.875Z","avatar_url":"https://github.com/echasnovski.png","language":"Lua","readme":"\u003cimg src=\"https://github.com/echasnovski/media/blob/main/mini.nvim/logo/logo_animate.png\" style=\"width: 100%\"\u003e\n\n\u003c!-- badges: start --\u003e\n[![GitHub license](https://badgen.net/github/license/echasnovski/mini.nvim)](https://github.com/echasnovski/mini.nvim/blob/main/LICENSE)\n\u003c!-- badges: end --\u003e\n\n### Animate common Neovim actions\n\nSee more details in [Features](#features) and [help file](doc/mini-animate.txt).\n\n---\n\n⦿ This is a part of [mini.nvim](https://github.com/echasnovski/mini.nvim) library. Please use [this link](https://github.com/echasnovski/mini.nvim/blob/main/readmes/mini-animate.md) if you want to mention this module.\n\n⦿ All contributions (issues, pull requests, discussions, etc.) are done inside of 'mini.nvim'.\n\n⦿ See the repository page to learn about common design principles and configuration recipes.\n\n---\n\nIf you want to help this project grow but don't know where to start, check out [contributing guides of 'mini.nvim'](https://github.com/echasnovski/mini.nvim/blob/main/CONTRIBUTING.md) or leave a Github star for 'mini.nvim' project and/or any its standalone Git repositories.\n\n## Demo\n\nhttps://user-images.githubusercontent.com/24854248/215829092-5aba4e8d-94a5-43da-8ef0-243bf0708f76.mp4\n\n## Features\n\n- Works out of the box with a single `require('mini.animate').setup()`. No extra mappings or commands needed.\n- Animate **cursor movement** inside same buffer by showing customizable path.\n- Animate **scrolling** with a series of subscrolls (\"smooth scrolling\").\n- Animate **window resize** by gradually changing sizes of all windows.\n- Animate **window open/close** with visually updating floating window.\n- Timings for all actions can be customized independently.\n- Action animations can be enabled/disabled independently.\n- All animations are asynchronous/non-blocking and trigger a targeted event which can be used to perform actions after animation is done.\n- `MiniAnimate.animate()` function which can be used to perform own animations.\n\nNotes:\n- Although all animations work in all supported versions of Neovim, scroll and resize animations have best experience with Neovim\u003e=0.9.\n- Scroll and resize animations actually change Neovim state to achieve their effects and are asynchronous. This can cause following issues:\n    - If you have remapped any movement operation to center after it is done (like with `nzvzz` or `\u003cC-d\u003ezz`), you need to change those mappings. Either remove them or update to use `MiniAnimate.execute_after()` (see `:h MiniAnimate.config.scroll`)\n    - Using mouse wheel to scroll can appear slower or can have visual jitter. This usually happens due to high number of wheel turns per second: each turn is taking over previous one to start new animation. To mitigate this, you can either modify 'mousescroll' option (set vertical scroll to 1 and use high turn speed or set to high value and use one turn at a time) or `config.scroll` to fine tune when/how scroll animation is done.\n\n## Installation\n\nThis plugin can be installed as part of 'mini.nvim' library (**recommended**) or as a standalone Git repository.\n\nThere are two branches to install from:\n\n- `main` (default, **recommended**) will have latest development version of plugin. All changes since last stable release should be perceived as being in beta testing phase (meaning they already passed alpha-testing and are moderately settled).\n- `stable` will be updated only upon releases with code tested during public beta-testing phase in `main` branch.\n\nHere are code snippets for some common installation methods (use only one):\n\n\u003cdetails\u003e\n\u003csummary\u003eWith \u003ca href=\"https://github.com/echasnovski/mini.nvim/blob/main/readmes/mini-deps.md\"\u003emini.deps\u003c/a\u003e\u003c/summary\u003e\n\u003ctable\u003e\n    \u003cthead\u003e\n        \u003ctr\u003e\n            \u003cth\u003eGithub repo\u003c/th\u003e\n            \u003cth\u003eBranch\u003c/th\u003e \u003cth\u003eCode snippet\u003c/th\u003e\n        \u003c/tr\u003e\n    \u003c/thead\u003e\n    \u003ctbody\u003e\n        \u003ctr\u003e\n            \u003ctd rowspan=2\u003e'mini.nvim' library\u003c/td\u003e \u003ctd\u003eMain\u003c/td\u003e \u003ctd rowspan=2\u003e\u003ci\u003eFollow recommended 'mini.deps' installation\u003c/i\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003eStable\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd rowspan=2\u003eStandalone plugin\u003c/td\u003e \u003ctd\u003eMain\u003c/td\u003e \u003ctd\u003e\u003ccode\u003eadd('echasnovski/mini.animate')\u003c/code\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003eStable\u003c/td\u003e \u003ctd\u003e\u003ccode\u003eadd({ source = 'echasnovski/mini.animate', checkout = 'stable' })\u003c/code\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n    \u003c/tbody\u003e\n\u003c/table\u003e\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eWith \u003ca href=\"https://github.com/folke/lazy.nvim\"\u003efolke/lazy.nvim\u003c/a\u003e\u003c/summary\u003e\n\u003ctable\u003e\n    \u003cthead\u003e\n        \u003ctr\u003e\n            \u003cth\u003eGithub repo\u003c/th\u003e\n            \u003cth\u003eBranch\u003c/th\u003e \u003cth\u003eCode snippet\u003c/th\u003e\n        \u003c/tr\u003e\n    \u003c/thead\u003e\n    \u003ctbody\u003e\n        \u003ctr\u003e\n            \u003ctd rowspan=2\u003e'mini.nvim' library\u003c/td\u003e\n            \u003ctd\u003eMain\u003c/td\u003e \u003ctd\u003e\u003ccode\u003e{ 'echasnovski/mini.nvim', version = false },\u003c/code\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003eStable\u003c/td\u003e \u003ctd\u003e\u003ccode\u003e{ 'echasnovski/mini.nvim', version = '*' },\u003c/code\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd rowspan=2\u003eStandalone plugin\u003c/td\u003e\n            \u003ctd\u003eMain\u003c/td\u003e \u003ctd\u003e\u003ccode\u003e{ 'echasnovski/mini.animate', version = false },\u003c/code\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003eStable\u003c/td\u003e \u003ctd\u003e\u003ccode\u003e{ 'echasnovski/mini.animate', version = '*' },\u003c/code\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n    \u003c/tbody\u003e\n\u003c/table\u003e\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eWith \u003ca href=\"https://github.com/junegunn/vim-plug\"\u003ejunegunn/vim-plug\u003c/a\u003e\u003c/summary\u003e\n\u003ctable\u003e\n    \u003cthead\u003e\n        \u003ctr\u003e\n            \u003cth\u003eGithub repo\u003c/th\u003e\n            \u003cth\u003eBranch\u003c/th\u003e \u003cth\u003eCode snippet\u003c/th\u003e\n        \u003c/tr\u003e\n    \u003c/thead\u003e\n    \u003ctbody\u003e\n        \u003ctr\u003e\n            \u003ctd rowspan=2\u003e'mini.nvim' library\u003c/td\u003e\n            \u003ctd\u003eMain\u003c/td\u003e \u003ctd\u003e\u003ccode\u003ePlug 'echasnovski/mini.nvim'\u003c/code\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003eStable\u003c/td\u003e \u003ctd\u003e\u003ccode\u003ePlug 'echasnovski/mini.nvim', { 'branch': 'stable' }\u003c/code\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd rowspan=2\u003eStandalone plugin\u003c/td\u003e \u003ctd\u003eMain\u003c/td\u003e \u003ctd\u003e\u003ccode\u003ePlug 'echasnovski/mini.animate'\u003c/code\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003eStable\u003c/td\u003e \u003ctd\u003e\u003ccode\u003ePlug 'echasnovski/mini.animate', { 'branch': 'stable' }\u003c/code\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n    \u003c/tbody\u003e\n\u003c/table\u003e\n\u003c/details\u003e\n\n\u003cbr\u003e\n\n**Important**: don't forget to call `require('mini.animate').setup()` to enable its functionality.\n\n**Note**: if you are on Windows, there might be problems with too long file paths (like `error: unable to create file \u003csome file name\u003e: Filename too long`). Try doing one of the following:\n- Enable corresponding git global config value: `git config --system core.longpaths true`. Then try to reinstall.\n- Install plugin in other place with shorter path.\n\n## Default config\n\n```lua\n-- No need to copy this inside `setup()`. Will be used automatically.\n{\n  -- Cursor path\n  cursor = {\n    -- Whether to enable this animation\n    enable = true,\n\n    -- Timing of animation (how steps will progress in time)\n    timing = --\u003cfunction: implements linear total 250ms animation duration\u003e,\n\n    -- Path generator for visualized cursor movement\n    path = --\u003cfunction: implements shortest line path no longer than 1000\u003e,\n  },\n\n  -- Vertical scroll\n  scroll = {\n    -- Whether to enable this animation\n    enable = true,\n\n    -- Timing of animation (how steps will progress in time)\n    timing = --\u003cfunction: implements linear total 250ms animation duration\u003e,\n\n    -- Subscroll generator based on total scroll\n    subscroll = --\u003cfunction: implements equal scroll with at most 60 steps\u003e,\n  },\n\n  -- Window resize\n  resize = {\n    -- Whether to enable this animation\n    enable = true,\n\n    -- Timing of animation (how steps will progress in time)\n    timing = --\u003cfunction: implements linear total 250ms animation duration\u003e,\n\n    -- Subresize generator for all steps of resize animations\n    subresize = --\u003cfunction: implements equal linear steps\u003e,\n  },\n\n  -- Window open\n  open = {\n    -- Whether to enable this animation\n    enable = true,\n\n    -- Timing of animation (how steps will progress in time)\n    timing = --\u003cfunction: implements linear total 250ms animation duration\u003e,\n\n    -- Floating window config generator visualizing specific window\n    winconfig = --\u003cfunction: implements static window for 25 steps\u003e,\n\n    -- 'winblend' (window transparency) generator for floating window\n    winblend = --\u003cfunction: implements equal linear steps from 80 to 100\u003e,\n  },\n\n  -- Window close\n  close = {\n    -- Whether to enable this animation\n    enable = true,\n\n    -- Timing of animation (how steps will progress in time)\n    timing = --\u003cfunction: implements linear total 250ms animation duration\u003e,\n\n    -- Floating window config generator visualizing specific window\n    winconfig = --\u003cfunction: implements static window for 25 steps\u003e,\n\n    -- 'winblend' (window transparency) generator for floating window\n    winblend = --\u003cfunction: implements equal linear steps from 80 to 100\u003e,\n  },\n}\n```\n\n## Similar plugins\n\n- [Neovide](https://neovide.dev/) (Neovim GUI, not a plugin)\n- [edluffy/specs.nvim](https://github.com/edluffy/specs.nvim)\n- [karb94/neoscroll.nvim](https://github.com/karb94/neoscroll.nvim)\n- [anuvyklack/windows.nvim](https://github.com/anuvyklack/windows.nvim)\n","funding_links":[],"categories":["Lua"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fechasnovski%2Fmini.animate","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fechasnovski%2Fmini.animate","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fechasnovski%2Fmini.animate/lists"}