bomberpac/wrap.fnl

42 lines
1.3 KiB
Fennel

(local editor (require :editor))
(local util (require :lib.util))
(local lume (require :lib.lume))
(local core (require :core))
(local command (require :core.command))
(local keymap (require :core.keymap))
(local translate (require :core.doc.translate))
(local faith (require :lib.faith))
(local debug (require :inspector.debug))
(local fennel (require :lib.fennel))
(local fv fennel.view)
(require :game.meta)
(command.add "core.docview" {
"fennel:eval" #(editor.inline-eval #(fv (fennel.eval $1 {:env _G :compiler-env _G}) {}))
"lume:hotswap" (fn []
(local modname
(-> core.active_view.doc.filename
(: :gsub "%.%a+$" "")
(: :gsub "/" ".")
(: :gsub "^data%." "")
(: :gsub "%.init$" "")))
(core.log (.. "Hotswapping " modname))
(local (mod err) (util.hotswap modname))
(when (not= err nil) (print err) (error err)))
})
(command.add nil {
"faith:run-tests" (fn []
(each [modname _ (pairs package.loaded)]
(when (or (= modname :test) (modname:match "^test%."))
(tset package.loaded modname nil)))
(faith.run (require :test) {:hooks {:exit #(core.log "Tests failed!")
:done (fn [report] (debug.inspect "Test report" report))}}))
})
(keymap.add {
"alt+e" "fennel:eval"
"alt+r" "lume:hotswap"
})
{}