summaryrefslogtreecommitdiff
path: root/fnl/macros.fnlm
diff options
context:
space:
mode:
authoraktersnurra <gustaf@gustafrydholm.xyz>2026-04-16 15:10:52 +0200
committeraktersnurra <gustaf@gustafrydholm.xyz>2026-04-17 00:02:28 +0200
commit99a7ff44cdf70d028ef6aab26224f26f69ee528d (patch)
tree3bac13281fe000f0cc9a1823b6ccac856b0acf88 /fnl/macros.fnlm
parent83a7f3505a441f1c152229d50a3d6011951a82fc (diff)
Add fff and other nice things such as macrosHEADmaster
Diffstat (limited to 'fnl/macros.fnlm')
-rw-r--r--fnl/macros.fnlm36
1 files changed, 36 insertions, 0 deletions
diff --git a/fnl/macros.fnlm b/fnl/macros.fnlm
new file mode 100644
index 0000000..8267518
--- /dev/null
+++ b/fnl/macros.fnlm
@@ -0,0 +1,36 @@
+;; Fennel macros for compile-time expansion.
+
+(fn autocmd [event opts]
+ `(vim.api.nvim_create_autocmd ,event ,opts))
+
+(fn autocmds [...]
+ (let [out `(do)]
+ (each [_ cmd (ipairs [...])]
+ (table.insert out (autocmd (. cmd 1) (. cmd 2))))
+ out))
+
+(fn user-cmd [name cmd opts]
+ `(vim.api.nvim_create_user_command ,name ,cmd ,opts))
+
+(fn user-cmds [...]
+ (let [out `(do)]
+ (each [_ cmd (ipairs [...])]
+ (table.insert out (user-cmd (. cmd 1) (. cmd 2) (. cmd 3))))
+ out))
+
+(fn keymap [mode lhs rhs opts]
+ `(vim.keymap.set ,mode ,lhs ,rhs ,opts))
+
+(fn keymaps [...]
+ (let [out `(do)]
+ (each [_ mapping (ipairs [...])]
+ (table.insert out (keymap (. mapping 1) (. mapping 2) (. mapping 3) (. mapping 4))))
+ out))
+
+(fn set-opts [opts]
+ (let [out `(do)]
+ (each [k v (pairs opts)]
+ (table.insert out `(tset vim.opt ,k ,v)))
+ out))
+
+{: autocmd : autocmds : user-cmd : user-cmds : keymap : keymaps : set-opts}