# HG changeset patch
# User Henrik Stuart <h...@hstuart.dk>
# Date 1249371238 -7200
# Node ID cee66577eee9eb3350373e3d5b3214ceea438767
# Parent  bbce43e4ab33bf9486ceb0e1ba5e14293548eb82
hgtk: don't suppress exceptions in the dispatcher

diff -r bbce43e4ab33 -r cee66577eee9 hgtk
--- a/hgtk      Sun Aug 02 22:15:14 2009 -0500
+++ b/hgtk      Tue Aug 04 09:33:58 2009 +0200
@@ -31,6 +31,7 @@
 demandimport.enable()
 from mercurial import ui
 import cStringIO
+import traceback
 
 try:
     import hggtk.hgtk
@@ -47,18 +48,24 @@
     sys.exit(hggtk.hgtk.dispatch(sys.argv[1:]))
 else:
     mystderr = cStringIO.StringIO()
+    origstderr = sys.stderr
     sys.stderr = mystderr
-    ret = hggtk.hgtk.dispatch(sys.argv[1:])
-    mystderr.seek(0)
-    for l in mystderr.readlines():
-        if l.startswith('Traceback') or l.startswith('TypeError'):
-            from hggtk.bugreport import run
-            from hggtk.hgtk import gtkrun
-            error = 'Recoverable runtime error (stderr):\n'+mystderr.getvalue()
-            opts = {}
-            opts['cmd'] = ' '.join(sys.argv[1:])
-            opts['error'] = error
-            opts['nofork'] = True
-            gtkrun(run, _ui, **opts)
-            break
-    sys.exit(ret)
+    try:
+        ret = hggtk.hgtk.dispatch(sys.argv[1:])
+        mystderr.seek(0)
+        for l in mystderr.readlines():
+            if l.startswith('Traceback') or l.startswith('TypeError'):
+                from hggtk.bugreport import run
+                from hggtk.hgtk import gtkrun
+                error = 'Recoverable runtime error 
(stderr):\n'+mystderr.getvalue()
+                opts = {}
+                opts['cmd'] = ' '.join(sys.argv[1:])
+                opts['error'] = error
+                opts['nofork'] = True
+                gtkrun(run, _ui, **opts)
+                break
+        sys.exit(ret)
+    except:
+        if sys.exc_info()[0] not in [SystemExit, KeyboardInterrupt]:
+            sys.stderr = origstderr
+            traceback.print_exc()

------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
trial. Simplify your report design, integration and deployment - and focus on 
what you do best, core application coding. Discover what's new with 
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
Tortoisehg-develop mailing list
Tortoisehg-develop@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/tortoisehg-develop

Reply via email to