A modern, high-performance folding plugin for Neovim that enhances fold visuals and integrates with LSP and treesitter.
nvim-ufo is a folding plugin for Neovim that modernizes the visual appearance of folds and improves performance. It integrates with LSP and treesitter to provide accurate, non-blocking fold detection and management, solving the limitations of Neovim's native folding system.
Neovim users, particularly developers who work with large codebases and want enhanced folding features, better integration with language servers, and a more modern editor experience.
Developers choose nvim-ufo for its high performance, modern aesthetics, and seamless integration with LSP and treesitter, offering a superior alternative to Neovim's built-in folding without blocking the editor.
Not UFO in the sky, but an ultra fold in Neovim.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Implements color penetration for folded lines and supports custom fold text, making folds visually similar to modern IDEs, as shown in the README demo and configuration examples.
Operates non-blockingly using the promise-async dependency, ensuring Neovim remains responsive during fold operations, a key feature emphasized in the README.
Integrates with LSP for folding ranges and treesitter queries, providing high-accuracy folds with indent-based fallback, as detailed in the provider selector setup.
Includes fold peek and a preview window with configurable keymaps, allowing users to inspect folded content without full expansion, demonstrated in the preview function table.
Requires manual configuration for LSP capabilities or treesitter, remapping of standard fold keys, and setting a large foldlevel value, which can be error-prone for beginners.
For optimal functionality, it relies on LSP servers or treesitter parsers, which may not be available in all environments, adding setup overhead and potential compatibility issues.
Necessitates setting a large foldlevel value to avoid automatically closing folds, a limitation admitted in the README that can disrupt traditional fold workflows if not managed.