ui: simply concatenate messages before applying color labels
This should be cheaper in space than applying labels for each message.
--- a/mercurial/color.py Sat Nov 03 17:36:10 2018 +0900
+++ b/mercurial/color.py Sat Nov 03 17:42:05 2018 +0900
@@ -487,11 +487,7 @@
ansire = re.compile(b'\033\[([^m]*)m([^\033]*)(.*)',
re.MULTILINE | re.DOTALL)
- def win32print(ui, writefunc, *msgs, **opts):
- for text in msgs:
- _win32print(ui, text, writefunc, **opts)
-
- def _win32print(ui, text, writefunc, **opts):
+ def win32print(ui, writefunc, text, **opts):
label = opts.get(r'label', '')
attr = origattr
--- a/mercurial/ui.py Sat Nov 03 17:36:10 2018 +0900
+++ b/mercurial/ui.py Sat Nov 03 17:42:05 2018 +0900
@@ -951,16 +951,16 @@
def _writenobuf(self, write, *args, **opts):
self._progclear()
+ msg = b''.join(args)
if self._colormode == 'win32':
# windows color printing is its own can of crab, defer to
# the color module and that is it.
- color.win32print(self, write, *args, **opts)
+ color.win32print(self, write, msg, **opts)
else:
- msgs = args
if self._colormode is not None:
label = opts.get(r'label', '')
- msgs = [self.label(a, label) for a in args]
- write(b''.join(msgs))
+ msg = self.label(msg, label)
+ write(msg)
def _write(self, data):
# opencode timeblockedsection because this is a critical path