mercurial/ui.py
changeset 2033 e3280d350792
parent 2013 65634e1038dd
child 2072 74d3f5336b66
--- a/mercurial/ui.py
+++ b/mercurial/ui.py
@@ -27,6 +27,8 @@ class ui(object):
 
             self.updateopts(verbose, debug, quiet, interactive)
             self.diffcache = None
+            self.header = []
+            self.prev_header = []
         else:
             # parentui may point to an ui object which is already a child
             self.parentui = parentui.parentui or parentui
@@ -184,9 +186,18 @@ class ui(object):
         return self.config("paths", loc, loc)
 
     def write(self, *args):
+        if self.header:
+            if self.header != self.prev_header:
+                self.prev_header = self.header
+                self.write(*self.header)
+            self.header = []
         for a in args:
             sys.stdout.write(str(a))
 
+    def write_header(self, *args):
+        for a in args:
+            self.header.append(str(a))
+
     def write_err(self, *args):
         try:
             if not sys.stdout.closed: sys.stdout.flush()