73 lines
2.4 KiB
Lua
73 lines
2.4 KiB
Lua
local _2afile_2a = "fnl/aniseed/eval.fnl"
|
|
local _2amodule_name_2a = "conjure-macroexpand.aniseed.eval"
|
|
local _2amodule_2a
|
|
do
|
|
package.loaded[_2amodule_name_2a] = {}
|
|
_2amodule_2a = package.loaded[_2amodule_name_2a]
|
|
end
|
|
local _2amodule_locals_2a
|
|
do
|
|
_2amodule_2a["aniseed/locals"] = {}
|
|
_2amodule_locals_2a = (_2amodule_2a)["aniseed/locals"]
|
|
end
|
|
local autoload = (require("conjure-macroexpand.aniseed.autoload")).autoload
|
|
local a, compile, fennel, fs, nvim = autoload("conjure-macroexpand.aniseed.core"), autoload("conjure-macroexpand.aniseed.compile"), autoload("conjure-macroexpand.aniseed.fennel"), autoload("conjure-macroexpand.aniseed.fs"), autoload("conjure-macroexpand.aniseed.nvim")
|
|
do end (_2amodule_locals_2a)["a"] = a
|
|
_2amodule_locals_2a["compile"] = compile
|
|
_2amodule_locals_2a["fennel"] = fennel
|
|
_2amodule_locals_2a["fs"] = fs
|
|
_2amodule_locals_2a["nvim"] = nvim
|
|
local function str(code, opts)
|
|
local fnl = fennel.impl()
|
|
local function _1_()
|
|
return fnl.eval(compile["wrap-macros"](code, opts), a.merge({compilerEnv = _G}, opts))
|
|
end
|
|
return xpcall(_1_, fnl.traceback)
|
|
end
|
|
_2amodule_2a["str"] = str
|
|
local function clean_values(vals)
|
|
local function _2_(val)
|
|
if a["table?"](val) then
|
|
return (compile["delete-marker"] ~= a.first(val))
|
|
else
|
|
return true
|
|
end
|
|
end
|
|
return a.filter(_2_, vals)
|
|
end
|
|
_2amodule_locals_2a["clean-values"] = clean_values
|
|
local function clean_error(err)
|
|
return string.gsub(string.gsub(err, "^%b[string .-%b]:%d+: ", ""), "^Compile error in .-:%d+\n%s+", "")
|
|
end
|
|
_2amodule_2a["clean-error"] = clean_error
|
|
local function repl(opts)
|
|
local eval_values = nil
|
|
local fnl = fennel.impl()
|
|
local opts0 = (opts or {})
|
|
local co
|
|
local function _4_()
|
|
local function _5_(_241)
|
|
eval_values = clean_values(_241)
|
|
return nil
|
|
end
|
|
local function _6_(_241, _242)
|
|
return (opts0["error-handler"] or nvim.err_writeln)(clean_error(_242))
|
|
end
|
|
return fnl.repl(a.merge({compilerEnv = _G, pp = a.identity, readChunk = coroutine.yield, onValues = _5_, onError = _6_}, opts0))
|
|
end
|
|
co = coroutine.create(_4_)
|
|
coroutine.resume(co)
|
|
coroutine.resume(co, compile["wrap-macros"](nil, opts0))
|
|
eval_values = nil
|
|
local function _7_(code)
|
|
ANISEED_STATIC_MODULES = false
|
|
coroutine.resume(co, code)
|
|
local prev_eval_values = eval_values
|
|
eval_values = nil
|
|
return prev_eval_values
|
|
end
|
|
return _7_
|
|
end
|
|
_2amodule_2a["repl"] = repl
|
|
return _2amodule_2a
|