# HG changeset patch # User Pierre-Yves David # Date 2016-11-03 13:29:19 # Node ID e1f6898a80e195b0eaf652115bc4c13024d5f92d # Parent 7a53458fae4eaffeb918a894dfb5860291debca9 color: restore _style global after debugcolor ran Before this change, running 'debugcolor' would destroy all color style for the rest of the process life. We now properly backup and restore the variable content. Using a global variable is sketchy in general and could probably be removed. However, this is a quest for another adventure. diff --git a/hgext/color.py b/hgext/color.py --- a/hgext/color.py +++ b/hgext/color.py @@ -540,19 +540,23 @@ def extsetup(ui): def debugcolor(ui, repo, **opts): """show available colors and effects""" global _styles - _styles = {} - for effect in _effects.keys(): - _styles[effect] = effect - if _terminfo_params: - for k, v in ui.configitems('color'): - if k.startswith('color.'): - _styles[k] = k[6:] - elif k.startswith('terminfo.'): - _styles[k] = k[9:] - ui.write(('color mode: %s\n') % ui._colormode) - ui.write(_('available colors:\n')) - for colorname, label in _styles.items(): - ui.write(('%s\n') % colorname, label=label) + oldstyle = _styles + try: + _styles = {} + for effect in _effects.keys(): + _styles[effect] = effect + if _terminfo_params: + for k, v in ui.configitems('color'): + if k.startswith('color.'): + _styles[k] = k[6:] + elif k.startswith('terminfo.'): + _styles[k] = k[9:] + ui.write(('color mode: %s\n') % ui._colormode) + ui.write(_('available colors:\n')) + for colorname, label in _styles.items(): + ui.write(('%s\n') % colorname, label=label) + finally: + _styles = oldstyle if os.name != 'nt': w32effects = None