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 | if num: signal.signal(num, catchterm) |
|
3305 | if num: signal.signal(num, catchterm) | |
3306 |
|
3306 | |||
3307 | try: |
|
3307 | try: | |
3308 |
u = ui.ui(traceback='--traceback' in sys.argv[1:] |
|
3308 | u = ui.ui(traceback='--traceback' in sys.argv[1:]) | |
3309 | readhooks=[load_extensions]) |
|
|||
3310 | except util.Abort, inst: |
|
3309 | except util.Abort, inst: | |
3311 | sys.stderr.write(_("abort: %s\n") % inst) |
|
3310 | sys.stderr.write(_("abort: %s\n") % inst) | |
3312 | return -1 |
|
3311 | return -1 | |
3313 |
|
3312 | |||
|
3313 | load_extensions(u) | |||
|
3314 | u.addreadhook(load_extensions) | |||
|
3315 | ||||
3314 | try: |
|
3316 | try: | |
3315 | cmd, func, args, options, cmdoptions = parse(u, args) |
|
3317 | cmd, func, args, options, cmdoptions = parse(u, args) | |
3316 | if options["time"]: |
|
3318 | if options["time"]: |
@@ -12,13 +12,12 b' demandload(globals(), "ConfigParser mdif' | |||||
12 |
|
12 | |||
13 | class ui(object): |
|
13 | class ui(object): | |
14 | def __init__(self, verbose=False, debug=False, quiet=False, |
|
14 | def __init__(self, verbose=False, debug=False, quiet=False, | |
15 |
interactive=True, traceback=False, parentui=None |
|
15 | interactive=True, traceback=False, parentui=None): | |
16 | readhooks=[]): |
|
|||
17 | self.overlay = {} |
|
16 | self.overlay = {} | |
18 | if parentui is None: |
|
17 | if parentui is None: | |
19 | # this is the parent of all ui children |
|
18 | # this is the parent of all ui children | |
20 | self.parentui = None |
|
19 | self.parentui = None | |
21 |
self.readhooks = |
|
20 | self.readhooks = [] | |
22 | self.trusted_users = {} |
|
21 | self.trusted_users = {} | |
23 | self.trusted_groups = {} |
|
22 | self.trusted_groups = {} | |
24 | self.cdata = ConfigParser.SafeConfigParser() |
|
23 | self.cdata = ConfigParser.SafeConfigParser() | |
@@ -38,7 +37,7 b' class ui(object):' | |||||
38 | else: |
|
37 | else: | |
39 | # parentui may point to an ui object which is already a child |
|
38 | # parentui may point to an ui object which is already a child | |
40 | self.parentui = parentui.parentui or parentui |
|
39 | self.parentui = parentui.parentui or parentui | |
41 |
self.readhooks = |
|
40 | self.readhooks = parentui.readhooks[:] | |
42 | self.trusted_users = parentui.trusted_users.copy() |
|
41 | self.trusted_users = parentui.trusted_users.copy() | |
43 | self.trusted_groups = parentui.trusted_groups.copy() |
|
42 | self.trusted_groups = parentui.trusted_groups.copy() | |
44 | parent_cdata = self.parentui.cdata |
|
43 | parent_cdata = self.parentui.cdata | |
@@ -110,6 +109,9 b' class ui(object):' | |||||
110 | for hook in self.readhooks: |
|
109 | for hook in self.readhooks: | |
111 | hook(self) |
|
110 | hook(self) | |
112 |
|
111 | |||
|
112 | def addreadhook(self, hook): | |||
|
113 | self.readhooks.append(hook) | |||
|
114 | ||||
113 | def setconfig(self, section, name, val): |
|
115 | def setconfig(self, section, name, val): | |
114 | self.overlay[(section, name)] = val |
|
116 | self.overlay[(section, name)] = val | |
115 |
|
117 |
General Comments 0
You need to be logged in to leave comments.
Login now