Mercurial > public > mercurial-scm > hg-stable
comparison mercurial/commands.py @ 1424:918cb47d725e
[issue21] cannot debug extension
The following patch should work.
author | Benoit Boissinot <mercurial-bugs@selenic.com> |
---|---|
date | Mon, 24 Oct 2005 14:53:12 -0700 |
parents | b32b3509c7ab |
children | 16a5d349963c |
comparison
equal
deleted
inserted
replaced
1423:76239f0cb0dc | 1424:918cb47d725e |
---|---|
2066 pass | 2066 pass |
2067 | 2067 |
2068 u = ui.ui() | 2068 u = ui.ui() |
2069 external = [] | 2069 external = [] |
2070 for x in u.extensions(): | 2070 for x in u.extensions(): |
2071 def on_exception(Exception, inst): | |
2072 u.warn(_("*** failed to import extension %s\n") % x[1]) | |
2073 u.warn("%s\n" % inst) | |
2074 if "--traceback" in sys.argv[1:]: | |
2075 traceback.print_exc() | |
2071 if x[1]: | 2076 if x[1]: |
2072 try: | 2077 try: |
2073 mod = imp.load_source(x[0], x[1]) | 2078 mod = imp.load_source(x[0], x[1]) |
2074 except: | 2079 except Exception, inst: |
2075 u.warn(_("*** failed to import extension %s\n") % x[1]) | 2080 on_exception(Exception, inst) |
2076 continue | 2081 continue |
2077 else: | 2082 else: |
2078 def importh(name): | 2083 def importh(name): |
2079 mod = __import__(name) | 2084 mod = __import__(name) |
2080 components = name.split('.') | 2085 components = name.split('.') |
2081 for comp in components[1:]: | 2086 for comp in components[1:]: |
2082 mod = getattr(mod, comp) | 2087 mod = getattr(mod, comp) |
2083 return mod | 2088 return mod |
2084 try: | 2089 try: |
2085 mod = importh(x[0]) | 2090 mod = importh(x[0]) |
2086 except: | 2091 except Exception, inst: |
2087 u.warn(_("failed to import extension %s\n") % x[0]) | 2092 on_exception(Exception, inst) |
2088 continue | 2093 continue |
2089 | 2094 |
2090 external.append(mod) | 2095 external.append(mod) |
2091 for x in external: | 2096 for x in external: |
2092 cmdtable = getattr(x, 'cmdtable', {}) | 2097 cmdtable = getattr(x, 'cmdtable', {}) |