[Turn on line numbering]
arg traceback, @args;
var line, out, pre, lines, cur, x, error;
// $parse_lib.traceback(traceback(), lines, pre);
// -1 lines represents the full error
// pre is set to "! " unless otherwise specified.
[(lines ?= -1), (pre ?= "! "), (error ?= 0)] = args;
out = [pre + "=> " + traceback[1][2]];
pre += " ";
// The primary error
if (error == 0)
out += [pre + "Thrown by " + ._traceback(@traceback[2].subrange(2))];
else
out += [pre + "Error " + error + " caused by " + ._traceback(@traceback[2].subrange(2))];
// The rest of it
for x in [1 .. traceback.length() - 2] {
if (x <= lines || lines == -1) {
line = traceback[x + 2][1] + ": ";
line += ._traceback(@traceback[x + 2].subrange(2));
out += [pre + line];
}
}
if (user())
user().set_last_traceback([time(), traceback, out]);
return out;
["// Created 26-Mar-1995 as a part of ColdCore, see: @help Credit"]