diff options
author | Hans Hagen <pragma@wxs.nl> | 2014-03-25 02:17:00 +0100 |
---|---|---|
committer | Hans Hagen <pragma@wxs.nl> | 2014-03-25 02:17:00 +0100 |
commit | fa0bb2080209868f52c7fa0ccf4876265a99878b (patch) | |
tree | 7870ad27b98e809071b011c3a24a60dd598164f4 /tex/context/base/trac-deb.lua | |
parent | 752a8cf2ff8a794c0a3b4f109f8568a897cc58fc (diff) | |
download | context-fa0bb2080209868f52c7fa0ccf4876265a99878b.tar.gz |
beta 2014.03.25 02:17
Diffstat (limited to 'tex/context/base/trac-deb.lua')
-rw-r--r-- | tex/context/base/trac-deb.lua | 28 |
1 files changed, 25 insertions, 3 deletions
diff --git a/tex/context/base/trac-deb.lua b/tex/context/base/trac-deb.lua index cd8f803d4..edf32c3b9 100644 --- a/tex/context/base/trac-deb.lua +++ b/tex/context/base/trac-deb.lua @@ -147,13 +147,35 @@ function tracers.showlines(filename,linenumber,offset,luaerrorline) end end -function tracers.printerror(offset) +-- this will work ok in >=0.79 + +local function processerror(offset) local inputstack = resolvers.inputstack local filename = inputstack[#inputstack] or status.filename local linenumber = tonumber(status.linenumber) or 0 local lasttexerror = status.lasterrorstring or "?" local lastluaerror = status.lastluaerrorstring or lasttexerror - local luaerrorline = match(lastluaerror,[[%[.-lua%].-:.-(%d+)]]) -- this will work ok in >=0.79 + local luaerrorline = match(lastluaerror,[[%[.-lua%].-:.-(%d+)]]) or (lastluaerror and find(lastluaerror,"?:0:",1,true) and 0) + local report = luaerrorline and report_lua or report_tex + tracers.printerror { + filename = filename, + linenumber = linenumber, + lasttexerror = lasttexerror, + lastluaerror = lastluaerror, + luaerrorline = luaerrorline, + offset = tonumber(offset) or 10, + } +end + +-- so one can overload the printer if (really) needed + +function tracers.printerror(specification) + local filename = specification.filename + local linenumber = specification.linenumber + local lasttexerror = specification.lasttexerror + local lastluaerror = specification.lastluaerror + local luaerrorline = specification.luaerrorline + local offset = specification.offset local report = luaerrorline and report_lua or report_tex if not filename then report("error not related to input file: %s ...",lasttexerror) @@ -182,7 +204,7 @@ directives.register("system.errorcontext", function(v) local register = callback.register if v then register('show_error_message', nop) - register('show_error_hook', function() tracers.printerror(v) end) + register('show_error_hook', function() processerror(v) end) register('show_lua_error_hook', nop) else register('show_error_message', nil) |