Mercurial > public > mercurial-scm > hg
comparison mercurial/ui.py @ 3014:01454af644b8
load extensions only after the ui object has been completely initialized
This fixes a traceback printed when hg tries to print another traceback
after an extension fails to be loaded. Add a test for that.
author | Alexis S. L. Carvalho <alexis@cecm.usp.br> |
---|---|
date | Tue, 22 Aug 2006 22:49:30 -0300 |
parents | 494521a3f142 |
children | 1efd5a6df5a3 |
comparison
equal
deleted
inserted
replaced
3013:494521a3f142 | 3014:01454af644b8 |
---|---|
10 demandload(globals(), "errno getpass os re socket sys tempfile") | 10 demandload(globals(), "errno getpass os re socket sys tempfile") |
11 demandload(globals(), "ConfigParser mdiff templater traceback util") | 11 demandload(globals(), "ConfigParser mdiff templater traceback util") |
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 = list(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() |
25 self.readconfig(util.rcpath()) | 24 self.readconfig(util.rcpath()) |
26 | 25 |
36 self.prev_header = [] | 35 self.prev_header = [] |
37 self.revlogopts = self.configrevlog() | 36 self.revlogopts = self.configrevlog() |
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 = list(parentui.readhooks or 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 |
45 self.cdata = ConfigParser.SafeConfigParser(parent_cdata.defaults()) | 44 self.cdata = ConfigParser.SafeConfigParser(parent_cdata.defaults()) |
46 # make interpolation work | 45 # make interpolation work |
107 self.trusted_users[user] = 1 | 106 self.trusted_users[user] = 1 |
108 for group in self.configlist('trusted', 'groups'): | 107 for group in self.configlist('trusted', 'groups'): |
109 self.trusted_groups[group] = 1 | 108 self.trusted_groups[group] = 1 |
110 for hook in self.readhooks: | 109 for hook in self.readhooks: |
111 hook(self) | 110 hook(self) |
111 | |
112 def addreadhook(self, hook): | |
113 self.readhooks.append(hook) | |
112 | 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 |
116 def config(self, section, name, default=None): | 118 def config(self, section, name, default=None): |