blob: f158bed4fe8f68c8e5cd63e62a55b58670c8e861 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
|
# nvim
My neovim rice. Written in [Fennel](https://fennel-lang.org/) via
[Hotpot](https://github.com/rktjmp/hotpot.nvim).
## Dependencies
- Neovim nightly (0.13+)
- [Cargo](https://rustup.rs/) (builds `fff.nvim` and `tree-sitter-cli`)
## Structure
```
.
├── 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
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)`.
### Sync after external edits
Hotpot watches `BufWritePost` inside Neovim. Edits made outside Neovim
(terminal, CI, Claude Code) won't trigger recompilation. Run:
```vim
:Hotpot sync
```
### Clear compiled cache
If things get weird, nuke the cache:
```vim
:Hotpot clear-cache
```
Or from Fennel:
```fennel
(let [cache-api (require :hotpot.api.cache)]
(cache-api.clear-cache))
```
## Treesitter
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:
```sh
cargo install tree-sitter-cli
```
## fff.nvim
Fuzzy finder built from source. If the build fails, make sure `cargo` is
available and up to date (`rustup update`).
|