honeylisp/wrap.fnl

95 lines
2.5 KiB
Plaintext
Raw Normal View History

(require "lite")
(require "util")
(local lume (require "lume"))
(local imgui (require "imgui"))
(local serial (require "serial"))
(local gsplus (require "machine"))
(local core (require "core"))
(local command (require "core.command"))
(local keymap (require "core.keymap"))
(local translate (require "core.doc.translate"))
(var machine (if (and (pcall #(serial:connect)) (serial:connected?)) serial gsplus))
(command.add #(not= machine serial) {
"serial:switch-machine" #(set machine serial)
})
(command.add #(not= machine gsplus) {
"gsplus:switch-machine" #(set machine gsplus)
})
(command.add #(machine:connected?) {
"honeylisp:upload" (fn []
(local p (reload "test"))
(p:upload machine)
(core.log (string.format "%x" (p:lookup-addr p.start-symbol))))
})
(command.add (fn [] true) {
"honeylisp:rebuild" #(reload "test")
})
(command.add "core.docview" {
"fennel:eval" (fn []
(let [ldoc core.active_view.doc
(aline acol bline bcol) (ldoc:get_selection)
options {:env _G :compiler-env _G}
inject #(ldoc:insert bline bcol (fv (fennel.eval $1 options) {}))]
(if (and (= aline bline) (= acol bcol))
(inject (ldoc:get_text aline 1 aline 10000000))
(inject (ldoc:get_text aline acol bline bcol)))))
"lume:hotswap" (fn []
(local modname
(-> core.active_view.doc.filename
(: :gsub "%.%a+$" "")
(: :gsub "/" ".")
(: :gsub "^data%." "")
(: :gsub "%.init$" "")))
(core.log (.. "Hotswapping " modname))
(local (mod err) (lume.hotswap modname))
(when (not= err nil) (print err) (error err)))
"honeylisp:address" (fn []
(local ldoc core.active_view.doc)
(local (aline acol) (translate.start_of_word ldoc (ldoc:get_selection)))
(local (bline bcol) (translate.end_of_word ldoc (ldoc:get_selection)))
(local word (ldoc:get_text aline acol bline bcol))
(local p (require "test"))
(core.log (string.format "%s %x" word (or (p:lookup-addr word) -1)))
)
})
(keymap.add {
"alt+e" "fennel:eval"
"alt+r" "lume:hotswap"
})
(fn love.load [])
(fn love.update [dt]
(imgui.NewFrame))
(fn love.draw []
(imgui.Render))
(fn love.quit []
(imgui.ShutDown))
(fn love.textinput [t]
(imgui.TextInput t))
(fn love.keypressed [key]
(imgui.KeyPressed key))
(fn love.keyreleased [key]
(imgui.KeyReleased key))
(fn love.mousemoved [x y]
(imgui.MouseMoved x y))
(fn love.mousepressed [x y button]
(imgui.MousePressed button))
(fn love.mousereleased [x y button]
(imgui.MouseReleased button))
(fn love.wheelmoved [x y]
(imgui.WheelMoved y))
{}