Mercurial > hg
changeset 30283:e1f6898a80e1
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.
author | Pierre-Yves David <pierre-yves.david@ens-lyon.org> |
---|---|
date | Thu, 03 Nov 2016 14:29:19 +0100 |
parents | 7a53458fae4e |
children | 7556507f7197 |
files | hgext/color.py |
diffstat | 1 files changed, 17 insertions(+), 13 deletions(-) [+] |
line wrap: on
line diff
--- a/hgext/color.py Thu Nov 03 14:12:32 2016 +0100 +++ b/hgext/color.py Thu Nov 03 14:29:19 2016 +0100 @@ -540,19 +540,23 @@ 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