A collection of Fennel macros for Neovim that provides syntactic sugar and missing features for writing configuration elegantly.
Hibiscus.nvim is a Fennel macro library for Neovim that provides syntactic sugar and additional utilities to make writing configuration files more elegant and expressive. It wraps the Neovim Lua API with a Lisp-friendly syntax, reducing boilerplate and adding missing features for a smoother development experience.
Neovim users who write their configuration in Fennel and want a more concise, readable, and powerful way to define keymaps, autocommands, commands, and plugin setups.
Developers choose Hibiscus.nvim because it dramatically reduces the verbosity of Neovim's Lua API, offers a consistent macro-based DSL, and integrates seamlessly with Fennel's functional style, making configs easier to write, read, and maintain.
:hibiscus: Flavored Fennel Macros for 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.
Macros like map! and augroup! provide a Lisp-friendly DSL that drastically reduces boilerplate compared to verbose Lua API calls, as shown in the README's keymap and autocommand examples.
Special macros for Packer, Paq, and Lazy streamline plugin declarations with intuitive syntax, such as use! for dependency management, simplifying Neovim config setup.
Adds missing features to Fennel with macros like fstring! for string formatting and class! for OOP, making configs more expressive and functional beyond standard Fennel capabilities.
The exec! macro translates Fennel expressions into vim.cmd calls, allowing easy integration of Vimscript commands without leaving Fennel, as demonstrated with highlight settings.
Forces adoption of Fennel for Neovim configs, adding a learning curve and toolchain complexity for users accustomed to Lua or other languages, limiting its appeal to a niche audience.
The highly opinionated macros may not align with all coding styles, offering less flexibility for custom or unconventional configuration patterns compared to low-level Lua APIs.
Explicitly targets Neovim 0.8 per the README badge, potentially causing incompatibility with older versions or requiring updates for future Neovim releases, risking maintenance overhead.
Installation requires manual bootstrapping or specific plugin manager setups, which can be error-prone and less straightforward than drop-in libraries, especially for newcomers.