Show More
@@ -0,0 +1,9 b'' | |||
|
1 | #!/bin/sh | |
|
2 | ||
|
3 | echo 'syntax error' > badext.py | |
|
4 | abspath=`pwd`/badext.py | |
|
5 | ||
|
6 | echo '[extensions]' >> $HGRCPATH | |
|
7 | echo "badext = $abspath" >> $HGRCPATH | |
|
8 | ||
|
9 | hg -q help help |
@@ -0,0 +1,4 b'' | |||
|
1 | *** failed to import extension badext: invalid syntax (badext.py, line 1) | |
|
2 | hg help [COMMAND] | |
|
3 | ||
|
4 | show help for a command, extension, or list of commands |
@@ -3305,12 +3305,14 b' def dispatch(args):' | |||
|
3305 | 3305 | if num: signal.signal(num, catchterm) |
|
3306 | 3306 | |
|
3307 | 3307 | try: |
|
3308 |
u = ui.ui(traceback='--traceback' in sys.argv[1:] |
|
|
3309 | readhooks=[load_extensions]) | |
|
3308 | u = ui.ui(traceback='--traceback' in sys.argv[1:]) | |
|
3310 | 3309 | except util.Abort, inst: |
|
3311 | 3310 | sys.stderr.write(_("abort: %s\n") % inst) |
|
3312 | 3311 | return -1 |
|
3313 | 3312 | |
|
3313 | load_extensions(u) | |
|
3314 | u.addreadhook(load_extensions) | |
|
3315 | ||
|
3314 | 3316 | try: |
|
3315 | 3317 | cmd, func, args, options, cmdoptions = parse(u, args) |
|
3316 | 3318 | if options["time"]: |
@@ -12,13 +12,12 b' demandload(globals(), "ConfigParser mdif' | |||
|
12 | 12 | |
|
13 | 13 | class ui(object): |
|
14 | 14 | def __init__(self, verbose=False, debug=False, quiet=False, |
|
15 |
interactive=True, traceback=False, parentui=None |
|
|
16 | readhooks=[]): | |
|
15 | interactive=True, traceback=False, parentui=None): | |
|
17 | 16 | self.overlay = {} |
|
18 | 17 | if parentui is None: |
|
19 | 18 | # this is the parent of all ui children |
|
20 | 19 | self.parentui = None |
|
21 |
self.readhooks = |
|
|
20 | self.readhooks = [] | |
|
22 | 21 | self.trusted_users = {} |
|
23 | 22 | self.trusted_groups = {} |
|
24 | 23 | self.cdata = ConfigParser.SafeConfigParser() |
@@ -38,7 +37,7 b' class ui(object):' | |||
|
38 | 37 | else: |
|
39 | 38 | # parentui may point to an ui object which is already a child |
|
40 | 39 | self.parentui = parentui.parentui or parentui |
|
41 |
self.readhooks = |
|
|
40 | self.readhooks = parentui.readhooks[:] | |
|
42 | 41 | self.trusted_users = parentui.trusted_users.copy() |
|
43 | 42 | self.trusted_groups = parentui.trusted_groups.copy() |
|
44 | 43 | parent_cdata = self.parentui.cdata |
@@ -110,6 +109,9 b' class ui(object):' | |||
|
110 | 109 | for hook in self.readhooks: |
|
111 | 110 | hook(self) |
|
112 | 111 | |
|
112 | def addreadhook(self, hook): | |
|
113 | self.readhooks.append(hook) | |
|
114 | ||
|
113 | 115 | def setconfig(self, section, name, val): |
|
114 | 116 | self.overlay[(section, name)] = val |
|
115 | 117 |
General Comments 0
You need to be logged in to leave comments.
Login now