[Turn off line numbering]1: arg traceback, @args; 2: var line, out, pre, lines, cur, x, error; 3: 4: // $parse_lib.traceback(traceback(), lines, pre); 5: // -1 lines represents the full error 6: // pre is set to "! " unless otherwise specified. 7: [(lines ?= -1), (pre ?= "! "), (error ?= 0)] = args; 8: out = [pre + "=> " + traceback[1][2]]; 9: pre += " "; 10: 11: // The primary error 12: if (error == 0) 13: out += [pre + "Thrown by " + ._traceback(@traceback[2].subrange(2))]; 14: else 15: out += [pre + "Error " + error + " caused by " + ._traceback(@traceback[2].subrange(2))]; 16: 17: // The rest of it 18: for x in [1 .. traceback.length() - 2] { 19: if (x <= lines || lines == -1) { 20: line = traceback[x + 2][1] + ": "; 21: line += ._traceback(@traceback[x + 2].subrange(2)); 22: out += [pre + line]; 23: } 24: } 25: if (user()) 26: user().set_last_traceback([time(), traceback, out]); 27: return out;
// Created 27-Mar-1995 as a part of ColdCore, see: @help Credit