A Neovim plugin that adds smooth scrolling animations to any movement, command, or Lua function.
Cinnamon.nvim is a Neovim plugin that adds smooth scrolling animations to cursor and window movements. It solves the problem of abrupt, jarring navigation in Neovim by animating any movement command—from basic arrow keys to complex LSP jumps—making code navigation visually fluid and more enjoyable.
Neovim users who want to enhance their editor's visual experience, particularly developers who frequently navigate large codebases and value smooth, animated transitions.
Developers choose Cinnamon.nvim because it works with any movement command out of the box, is highly customizable, and uses non-blocking delays to maintain Neovim's responsiveness, unlike simpler scrolling plugins.
Smooth scrolling for ANY command 🤯. A Neovim plugin written in Lua!
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Animates any normal mode movement, command-line command, or Lua function, as shown in the API examples, making it versatile for all navigation needs without manual mapping.
Offers 'cursor' mode for full animation and 'window' mode for out-of-view scrolling, allowing users to tailor the visual experience based on preference, as detailed in the configuration options.
Adjusts scroll speed based on movement distance for natural-feeling animations, preventing overly fast or slow transitions, which is a key feature highlighted in the README.
Uses luv for asynchronous delays to keep Neovim responsive during animations, avoiding interface freezes, as emphasized in the feature list and demo.
Provides extensive configuration options for step sizes, delays, max distances, and callbacks, enabling fine-tuning of scrolling behavior to match user workflows.
Requires Neovim >= 0.8.0, which excludes users on older versions or stable distributions, potentially limiting adoption in certain environments.
Even with non-blocking delays, animations introduce a perceptible wait time to movements, which can slow down fast-paced editing and feel intrusive for power users.
Setup involves Lua configuration and keymap management, which might be daunting for users unfamiliar with Neovim's Lua API or expecting plug-and-play simplicity.
Integrating with other navigation plugins like flash.nvim requires custom setup and could lead to unexpected behavior if not carefully coordinated, as noted in the API examples.