add a counter to the prompts, and use it in error prefixes

pull/3/head
Björn Linse 4 years ago
parent 0223942731
commit ea63464540

@ -1,12 +1,11 @@
local nvimlua_inspect = require'luadev.inspect' local luadev_inspect = require'luadev.inspect'
local a = vim.api local a = vim.api
if _G.__lua_dev_state == nil then if _G._luadev_mod == nil then
_G.__lua_dev_state = {mod = {}} _G._luadev_mod = {execount = 0}
end end
-- TODO: no need for secrecy, just put everything on the "mod" obj
local s = _G.__lua_dev_state local s = _G._luadev_mod
local mod = s.mod
local function create_buf() local function create_buf()
if s.buf ~= nil then if s.buf ~= nil then
@ -117,23 +116,28 @@ local function ld_pcall(chunk, ...)
return unpack(res) return unpack(res)
end end
local function default_reader(str) local function default_reader(str, count)
local chunk, err = loadstring("return \n"..str,"eval") local name = "@[luadev "..count.."]"
local chunk, err = loadstring("return \n"..str, name)
if chunk == nil then if chunk == nil then
chunk, err = loadstring(str,"exec") chunk, err = loadstring(str, name)
end end
return chunk, err return chunk, err
end end
local function exec(str) local function exec(str)
local reader = mod.reader or default_reader local count = s.execount + 1
local chunk, err = reader(str) s.execount = count
local reader = s.reader or default_reader
local chunk, err = reader(str, count)
local inlines = splitlines(dedent(str)) local inlines = splitlines(dedent(str))
if inlines[#inlines] == "" then if inlines[#inlines] == "" then
inlines[#inlines] = nil inlines[#inlines] = nil
end end
firstmark = tostring(count)..">"
contmark = string.rep(".", string.len(firstmark))
for i,l in ipairs(inlines) do for i,l in ipairs(inlines) do
local marker = ((i == 1) and ">") or "." local marker = ((i == 1) and firstmark) or contmark
inlines[i] = marker.." "..l inlines[i] = marker.." "..l
end end
local start = append_buf(inlines) local start = append_buf(inlines)
@ -150,7 +154,7 @@ local function exec(str)
if st == false then if st == false then
append_buf(res,"WarningMsg") append_buf(res,"WarningMsg")
elseif doeval or res ~= nil then elseif doeval or res ~= nil then
append_buf(nvimlua_inspect(res)) append_buf(luadev_inspect(res))
end end
end end
append_buf({""}) append_buf({""})
@ -190,6 +194,6 @@ local funcs = {
-- TODO: export abstraction for autoreload -- TODO: export abstraction for autoreload
for k,v in pairs(funcs) do for k,v in pairs(funcs) do
s.mod[k] = v s[k] = v
end end
return s.mod return s

Loading…
Cancel
Save