diff pydershell/pydershell.py @ 16:a78570a423ea

Show code excerpts in js stack tracebacks
author Atul Varma <varmaa@toolness.com>
date Mon, 07 Sep 2009 00:33:56 -0700
parents 351525e95a45
children 1d62177c5c27
line wrap: on
line diff
--- a/pydershell/pydershell.py	Sun Sep 06 14:59:58 2009 -0700
+++ b/pydershell/pydershell.py	Mon Sep 07 00:33:56 2009 -0700
@@ -108,16 +108,22 @@
         function = js_stack['function']
         if script:
             frameinfo = dict(filename = script.filename,
-                         lineno = js_stack['lineno'],
-                         name = '<module>')
+                             lineno = js_stack['lineno'],
+                             name = '<module>')
         elif function and not function.is_python:
             frameinfo = dict(filename = function.filename,
-                         lineno = js_stack['lineno'],
-                         name = function.name)
+                             lineno = js_stack['lineno'],
+                             name = function.name)
         else:
             frameinfo = None
         if frameinfo:
             lines.insert(0, STACK_LINE % frameinfo)
+            try:
+                filelines = open(frameinfo['filename']).readlines()
+                line = filelines[frameinfo['lineno'] - 1].strip()
+                lines.insert(1, "    %s" % line)
+            except Exception:
+                pass
         js_stack = js_stack['caller']
     lines.insert(0, "Traceback (most recent call last):")
     return '\n'.join(lines)