My neovim rice. Written in Fennel via Hotpot.
- Neovim nightly (0.13+)
- Cargo (builds
fff.nvimandtree-sitter-cli)
.
├── init.lua # Bootstrap Hotpot
└── fnl
├── config.fnl # Plugin loader (lazy.nvim)
├── macros.fnlm # Compile-time Fennel macros
├── plugins/ # Plugin specs
│ ├── lsp/ # LSP servers, diagnostics, keymaps
│ └── snippets/ # LuaSnip snippet files
└── settings/ # Options, keymaps, autocmds, terminal
Hotpot compiles Fennel to Lua on the fly and caches the result.
Macro files must use the .fnlm extension and return a table of exported
macros. Consumers use (import-macros {: name} :macros).
Hotpot watches BufWritePost inside Neovim. Edits made outside Neovim
(terminal, CI, Claude Code) won't trigger recompilation. Run:
:Hotpot syncIf things get weird, nuke the cache:
:Hotpot clear-cacheOr from Fennel:
(let [cache-api (require :hotpot.api.cache)]
(cache-api.clear-cache))Uses nvim-treesitter on the main branch (parser-only). Highlighting and
indentation use Neovim's built-in vim.treesitter APIs.
Install the treesitter CLI if parser compilation fails:
cargo install tree-sitter-cliFuzzy finder built from source. If the build fails, make sure cargo is
available and up to date (rustup update).