summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.nvim.lua9
-rw-r--r--bin/serve.fnl20
2 files changed, 27 insertions, 2 deletions
diff --git a/.nvim.lua b/.nvim.lua
index 50bdee2..8da22e3 100644
--- a/.nvim.lua
+++ b/.nvim.lua
@@ -1,11 +1,16 @@
-
vim.keymap.set("n", ",tf", ":!./run.sh fetch<cr>")
vim.keymap.set("n", ",tt", ":!./run.sh serve<cr>")
+vim.keymap.set("n", ",rr", function ()
+ local module = vim.fn.expand("%"):gsub("/", "."):gsub(".fnl$", "")
+ vim.repl.send({args = "(reload :" .. module .. ")"})
+ vim.fn.system("qutebrowser :reload")
+end)
vim.api.nvim_create_autocmd({"BufEnter", "BufWinEnter"}, {
pattern = {"*.fnl"},
callback = function()
- vim.repl.configs.fennel.cmd = {"fennel"}
+ vim.repl.fennel.cmd = {"./run.sh", "serve", "--jit"}
+ vim.repl.fennel.filters = {}
vim.opt.lispwords:append("local")
vim.opt.lispwords:append("fn")
vim.opt.lispwords:append("set")
diff --git a/bin/serve.fnl b/bin/serve.fnl
index c7bc334..8cdd673 100644
--- a/bin/serve.fnl
+++ b/bin/serve.fnl
@@ -17,6 +17,24 @@
(when _G.unpack
(tset table :unpack _G.unpack))
+(set _G.reload
+ (fn [module]
+ (local old (require module))
+ (tset package :loaded module nil)
+ (local (ok? new) (pcall require module))
+ (if (not ok?)
+ (do
+ (tset package :loaded module old)
+ (error new))
+ (when (= (type new) :table)
+ (do
+ (each [k v (pairs new)]
+ (tset old k v))
+ (each [k (pairs old)]
+ (when (not (. new k))
+ (tset old k nil)))
+ (tset package :loaded module old))))))
+
(local db (must (luna.db.open "file:var/db.sqlite?_journal=WAL&_sync=NORMAL")))
(local query-synonyms {
@@ -582,3 +600,5 @@
(must (luna.router.route "GET /" root-handler))
(must (luna.router.route "GET /robots.txt" robots-handler))
(must (luna.router.static "GET /static/" "static/"))
+
+(must (luna.repl (fn [code] (fennel.eval code {:env _G}))))