diff --git a/hgext/color.py b/hgext/color.py
--- a/hgext/color.py
+++ b/hgext/color.py
@@ -331,29 +331,7 @@ class colorui(uimod.ui):
     def label(self, msg, label):
         if self._colormode is None:
             return super(colorui, self).label(msg, label)
-        return colorlabel(self, msg, label)
-
-def colorlabel(ui, msg, label):
-    """add color control code according to the mode"""
-    if ui._colormode == 'debug':
-        if label and msg:
-            if msg[-1] == '\n':
-                msg = "[%s|%s]\n" % (label, msg[:-1])
-            else:
-                msg = "[%s|%s]" % (label, msg)
-    elif ui._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
+        return color.colorlabel(self, msg, label)
 
 def uisetup(ui):
     if ui.plain():
diff --git a/mercurial/color.py b/mercurial/color.py
--- a/mercurial/color.py
+++ b/mercurial/color.py
@@ -175,6 +175,28 @@ def _render_effects(text, effects):
         stop = '\033[' + str(_effects['none']) + 'm'
     return ''.join([start, text, stop])
 
+def colorlabel(ui, msg, label):
+    """add color control code according to the mode"""
+    if ui._colormode == 'debug':
+        if label and msg:
+            if msg[-1] == '\n':
+                msg = "[%s|%s]\n" % (label, msg[:-1])
+            else:
+                msg = "[%s|%s]" % (label, msg)
+    elif ui._colormode is not None:
+        effects = []
+        for l in label.split():
+            s = _styles.get(l, '')
+            if s:
+                effects.append(s)
+            elif valideffect(l):
+                effects.append(l)
+        effects = ' '.join(effects)
+        if effects:
+            msg = '\n'.join([_render_effects(line, effects)
+                             for line in msg.split('\n')])
+    return msg
+
 w32effects = None
 if pycompat.osname == 'nt':
     import ctypes