Warning: this is an htmlized version!
The original is here, and the conversion rules are here. |
-- This file: -- http://angg.twu.net/LUA/Prosody1.lua.html -- http://angg.twu.net/LUA/Prosody1.lua -- (find-angg "LUA/Prosody1.lua") -- Author: Eduardo Ochs <eduardoochs@gmail.com> -- -- (defun e () (interactive) (find-angg "LUA/GetInfo2.lua")) -- (defun p () (interactive) (find-angg "LUA/Prosody1.lua")) -- Test: (find-angg "LUA/DGetInfo1.lua" "DGetInfos-tests") -- «.Prosody» (to "Prosody") -- «.Prosody-tests» (to "Prosody-tests") -- «Prosody» (to ".Prosody") -- Adapted from (the middle part of) the traceback function -- of Prosody. See the message by Matthew Wild in lua-l: -- http://lua-users.org/lists/lua-l/2022-03/msg00071.html -- https://groups.google.com/g/lua-l/c/Axtv6REO_wo Old archive: not yet -- My notes of Prosody are here: -- (find-es "lua5" "prosody-traceback") -- Prosody = Class { type = "Prosody", traceback1 = function (dgi) local line local func_type = dgi.namewhat.." " local source_desc = (dgi.short_src == "[C]" and "C code") or dgi.short_src or "Unknown" if func_type == " " then func_type = "" end if dgi.short_src == "[C]" then line = "[ C ] " ..func_type .."C function " ..(dgi.name and ("%q"):format(dgi.name) or "(unknown name)") elseif dgi.what == "main" then line = "[Lua] " ..dgi.short_src .." line " ..dgi.currentline else local name = dgi.name or " " if name ~= " " then name = ("%q"):format(name) end if func_type == "global " or func_type == "local " then func_type = func_type.."function " end line = "[Lua] " ..dgi.short_src .." line " ..dgi.currentline .." in " ..func_type ..name .." (defined on line " ..dgi.linedefined ..")" end return line end, __index = { }, } -- «Prosody-tests» (to ".Prosody-tests") --[[ * (eepitch-lua51) * (eepitch-kill) * (eepitch-lua51) dofile "Prosody1.lua" require "Repl3" -- (find-angg "LUA/Repl3.lua" "Repl-tests") -- (find-angg "LUA/lua50init.lua" "DGetFrame") -- (find-angg "LUA/PreTraceback1.lua" "DGetFrame") run_repl = function () r = Repl.new(); r:repl() end stop_repl = function () r.STOP = "please" end run_repl() -- Use Prosody to print each stack frame DGetFrame.__index.tostring = function (dgf) return Prosody.traceback1(dgf) end print(2+ nil) -- shows a traceback using Prosody. -- Use PrintFunction to print each stack frame. DGetFrame.__index.tostring = function (dgf) return tostring(dgf:toprintfunction()) end = ptb -- shows the pretraceback in ptb using PrintFunction. stop_repl() --]] -- Local Variables: -- coding: utf-8-unix -- End: