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):