color: move 'styles' definition on the 'ui' object
Same logic as for '_terminfoparams'. The content depends on the config so it
should be specific to each 'ui instance.
--- a/hgext/color.py Sun Nov 06 20:10:53 2016 +0100
+++ b/hgext/color.py Sun Nov 06 20:16:01 2016 +0100
@@ -207,31 +207,31 @@
return _debugdisplaycolor(ui)
def _debugdisplaycolor(ui):
- oldstyle = color._styles.copy()
+ oldstyle = ui._styles.copy()
try:
- color._styles.clear()
+ ui._styles.clear()
for effect in color._effects.keys():
- color._styles[effect] = effect
+ ui._styles[effect] = effect
if ui._terminfoparams:
for k, v in ui.configitems('color'):
if k.startswith('color.'):
- color._styles[k] = k[6:]
+ ui._styles[k] = k[6:]
elif k.startswith('terminfo.'):
- color._styles[k] = k[9:]
+ ui._styles[k] = k[9:]
ui.write(_('available colors:\n'))
# sort label with a '_' after the other to group '_background' entry.
- items = sorted(color._styles.items(),
+ items = sorted(ui._styles.items(),
key=lambda i: ('_' in i[0], i[0], i[1]))
for colorname, label in items:
ui.write(('%s\n') % colorname, label=label)
finally:
- color._styles.clear()
- color._styles.update(oldstyle)
+ ui._styles.clear()
+ ui._styles.update(oldstyle)
def _debugdisplaystyle(ui):
ui.write(_('available style:\n'))
- width = max(len(s) for s in color._styles)
- for label, effects in sorted(color._styles.items()):
+ width = max(len(s) for s in ui._styles)
+ for label, effects in sorted(ui._styles.items()):
ui.write('%s' % label, label=label)
if effects:
# 50
--- a/mercurial/color.py Sun Nov 06 20:10:53 2016 +0100
+++ b/mercurial/color.py Sun Nov 06 20:16:01 2016 +0100
@@ -254,6 +254,7 @@
return None
def configstyles(ui):
+ ui._styles.update(_styles)
for status, cfgeffects in ui.configitems('color'):
if '.' not in status or status.startswith(('color.', 'terminfo.')):
continue
@@ -267,7 +268,7 @@
ui.warn(_("ignoring unknown color/effect %r "
"(configured in color.%s)\n")
% (e, status))
- _styles[status] = ' '.join(good)
+ ui._styles[status] = ' '.join(good)
def valideffect(ui, effect):
'Determine if the effect is valid or not.'
@@ -321,7 +322,7 @@
elif ui._colormode is not None:
effects = []
for l in label.split():
- s = _styles.get(l, '')
+ s = ui._styles.get(l, '')
if s:
effects.append(s)
elif valideffect(ui, l):
@@ -443,7 +444,7 @@
# determine console attributes based on labels
for l in label.split():
- style = _styles.get(l, '')
+ style = ui._styles.get(l, '')
for effect in style.split():
try:
attr = mapcolor(w32effects[effect], attr)
--- a/mercurial/ui.py Sun Nov 06 20:10:53 2016 +0100
+++ b/mercurial/ui.py Sun Nov 06 20:16:01 2016 +0100
@@ -158,6 +158,7 @@
# color mode: see mercurial/color.py for possible value
self._colormode = None
self._terminfoparams = {}
+ self._styles = {}
if src:
self.fout = src.fout
@@ -176,6 +177,7 @@
self.insecureconnections = src.insecureconnections
self._colormode = src._colormode
self._terminfoparams = src._terminfoparams.copy()
+ self._styles = src._styles.copy()
self.fixconfig()