A blazingly fast HTML renderer for creating Neovim plugin UIs using HTML, CSS, and Lua.
Banana.nvim is an HTML renderer for Neovim that allows plugin developers to create user interfaces using HTML, CSS, and Lua. It solves the problem of building complex UIs in Neovim by replacing low-level buffer manipulation with a familiar web-like development model. This makes it easier to design, style, and add interactivity to plugin interfaces.
Neovim plugin developers who want to build rich, interactive user interfaces without dealing with the complexities of `nvim_buf_set_lines` and `nvim_buf_add_extmark`. It's ideal for those comfortable with web technologies.
Developers choose Banana.nvim because it offers a faster and more intuitive way to create Neovim UIs by leveraging HTML and CSS, reducing boilerplate and enabling rapid prototyping. Its integration of Lua scripting directly within the UI allows for seamless interactivity without context switching.
An html renderer for neovim plugin UIs
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Allows UI definition using HTML tags like <div> and <style>, making it intuitive for developers with web experience, as shown in the .nml file examples.
Supports CSS properties that map to Neovim highlight groups, such as hl-bg and hl-fg, simplifying styling compared to manual extmark management.
Enables adding interactive behavior by embedding Lua scripts within HTML, allowing event handling like attaching key remaps, as demonstrated in the script example.
Provides Lua APIs to create, open, and close UI windows programmatically, facilitating reusable plugin interfaces, as mentioned in the instance creation code.
The project is in early development with a caution about breaking changes and bugs, making it risky for production use without frequent updates.
Requires Zig 0.15.1+ and Neovim 0.11.0+, adding extra installation steps and potential compatibility issues, as noted in the installation notes.
Admits that not all CSS/HTML features are supported and relies on user reports for implementation, limiting out-of-the-box functionality.
The README highlights that documentation for development and APIs is needed, which can hinder learning and troubleshooting.