[PATCH 3 of 6] move: move the 'label' method to the core class
Pierre-Yves David
pierre-yves.david at ens-lyon.org
Wed Feb 22 11:54:34 EST 2017
# HG changeset patch
# User Pierre-Yves David <pierre-yves.david at ens-lyon.org>
# Date 1487590284 -3600
# Mon Feb 20 12:31:24 2017 +0100
# Node ID 9a9e8b28b717e30ed43030cc64f115a4356193de
# Parent f53e95ec986616a48a3a8e67e5a9674b8a684d6e
# EXP-Topic color
move: move the 'label' method to the core class
We move 'label' method from the custom 'colorui' class to the core 'ui' class.
This bring us closer to supporting color in core natively. Core already have a
'label' method that was a no-op. We update its content with the logic from the
extension. Behavior is unchanged when colormode = None.
diff -r f53e95ec9866 -r 9a9e8b28b717 hgext/color.py
--- a/hgext/color.py Mon Feb 20 12:13:23 2017 +0100
+++ b/hgext/color.py Mon Feb 20 12:31:24 2017 +0100
@@ -328,32 +328,6 @@ class colorui(uimod.ui):
return super(colorui, self).write_err(
*[self.label(a, label) for a in args], **opts)
- def label(self, msg, label):
- if self._colormode is None:
- return super(colorui, self).label(msg, label)
-
- if self._colormode == 'debug':
- if label and msg:
- if msg[-1] == '\n':
- return "[%s|%s]\n" % (label, msg[:-1])
- else:
- return "[%s|%s]" % (label, msg)
- else:
- return msg
-
- effects = []
- for l in label.split():
- s = color._styles.get(l, '')
- if s:
- effects.append(s)
- elif color.valideffect(l):
- effects.append(l)
- effects = ' '.join(effects)
- if effects:
- return '\n'.join([color._render_effects(line, effects)
- for line in msg.split('\n')])
- return msg
-
def uisetup(ui):
if ui.plain():
return
diff -r f53e95ec9866 -r 9a9e8b28b717 mercurial/ui.py
--- a/mercurial/ui.py Mon Feb 20 12:13:23 2017 +0100
+++ b/mercurial/ui.py Mon Feb 20 12:31:24 2017 +0100
@@ -26,6 +26,7 @@ from .i18n import _
from .node import hex
from . import (
+ color,
config,
encoding,
error,
@@ -1361,13 +1362,31 @@ class ui(object):
def label(self, msg, label):
'''style msg based on supplied label
- Like ui.write(), this just returns msg unchanged, but extensions
- and GUI tools can override it to allow styling output without
- writing it.
+ If some color mode is enabled, this will added the necessary control
+ character to apply such color. In addition 'debug' color mode adds
+ markup showing which label affect a piece of text.
ui.write(s, 'label') is equivalent to
ui.write(ui.label(s, 'label')).
'''
+ if self._colormode == 'debug':
+ if label and msg:
+ if msg[-1] == '\n':
+ msg = "[%s|%s]\n" % (label, msg[:-1])
+ else:
+ msg = "[%s|%s]" % (label, msg)
+ elif self._colormode is not None:
+ effects = []
+ for l in label.split():
+ s = color._styles.get(l, '')
+ if s:
+ effects.append(s)
+ elif color.valideffect(l):
+ effects.append(l)
+ effects = ' '.join(effects)
+ if effects:
+ msg = '\n'.join([color._render_effects(line, effects)
+ for line in msg.split('\n')])
return msg
def develwarn(self, msg, stacklevel=1, config=None):
More information about the Mercurial-devel
mailing list