Patchwork [12,of,13,V2] color: move 'write-err' logic to the core ui class

login
register
mail settings
Submitter Pierre-Yves David
Date Feb. 24, 2017, 10:09 p.m.
Message ID <419d5f42cc7b764f5304.1487974186@nodosa.octopoid.net>
Download mbox | patch
Permalink /patch/18765/
State Accepted
Headers show

Comments

Pierre-Yves David - Feb. 24, 2017, 10:09 p.m.
# HG changeset patch
# User Pierre-Yves David <pierre-yves.david@ens-lyon.org>
# Date 1487590943 -3600
#      Mon Feb 20 12:42:23 2017 +0100
# Node ID 419d5f42cc7b764f5304b2518146824329c32f91
# Parent  620683bba165d6bbb9c6f163516102aaa264f980
# EXP-Topic color
color: move 'write-err' logic to the core ui class

This is similar to what we needed for 'write', we move the logic from the
extension to the core class. Beside the dispatch to 'win32print', we just apply
label to the argument.

Patch

diff -r 620683bba165 -r 419d5f42cc7b hgext/color.py
--- a/hgext/color.py	Fri Feb 24 19:53:41 2017 +0100
+++ b/hgext/color.py	Mon Feb 20 12:42:23 2017 +0100
@@ -297,19 +297,7 @@  def _modesetup(ui, coloropt):
     return None
 
 class colorui(uimod.ui):
-
-    def write_err(self, *args, **opts):
-        if self._colormode is None:
-            return super(colorui, self).write_err(*args, **opts)
-
-        label = opts.get('label', '')
-        if self._bufferstates and self._bufferstates[-1][0]:
-            return self.write(*args, **opts)
-        if self._colormode == 'win32':
-            color.win32print(super(colorui, self).write_err, *args, **opts)
-        else:
-            return super(colorui, self).write_err(
-                *[self.label(a, label) for a in args], **opts)
+    pass
 
 def uisetup(ui):
     if ui.plain():
diff -r 620683bba165 -r 419d5f42cc7b mercurial/ui.py
--- a/mercurial/ui.py	Fri Feb 24 19:53:41 2017 +0100
+++ b/mercurial/ui.py	Mon Feb 20 12:42:23 2017 +0100
@@ -823,8 +823,17 @@  class ui(object):
     def write_err(self, *args, **opts):
         self._progclear()
         if self._bufferstates and self._bufferstates[-1][0]:
-            return self.write(*args, **opts)
-        self._write_err(*args, **opts)
+            self.write(*args, **opts)
+        elif 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_err, *args, **opts)
+        else:
+            msgs = args
+            if self._colormode is not None:
+                label = opts.get('label', '')
+                msgs = [self.label(a, label) for a in args]
+            self._write_err(*msgs, **opts)
 
     def _write_err(self, *msgs, **opts):
         try: