ui: pass in file object to _writenobuf()
authorYuya Nishihara <yuya@tcha.org>
Sat, 03 Nov 2018 17:56:17 +0900
changeset 40538 c5e964f75bf7
parent 40537 cbd251d479bb
child 40539 04a9dd8da959
ui: pass in file object to _writenobuf() See the subsequent patches for why. The "if" block in _writenobuf() will be removed soon.
mercurial/ui.py
--- a/mercurial/ui.py	Mon Nov 05 17:24:39 2018 +0100
+++ b/mercurial/ui.py	Sat Nov 03 17:56:17 2018 +0900
@@ -947,10 +947,16 @@
             else:
                 self._buffers[-1].extend(args)
         else:
-            self._writenobuf(self._write, *args, **opts)
+            self._writenobuf(self.fout, *args, **opts)
 
-    def _writenobuf(self, write, *args, **opts):
+    def _writenobuf(self, dest, *args, **opts):
         self._progclear()
+        if dest is self.fout:
+            write = self._write
+        elif dest is self.ferr:
+            write = self._write_err
+        else:
+            raise error.ProgrammingError('unsupported file to write')
         msg = b''.join(args)
 
         # opencode timeblockedsection because this is a critical path
@@ -979,7 +985,7 @@
         if self._bufferstates and self._bufferstates[-1][0]:
             self.write(*args, **opts)
         else:
-            self._writenobuf(self._write_err, *args, **opts)
+            self._writenobuf(self.ferr, *args, **opts)
 
     def _write_err(self, data):
         try:
@@ -1343,7 +1349,7 @@
         if not self.interactive():
             self.write(msg, ' ', default or '', "\n")
             return default
-        self._writenobuf(self._write, msg, label='ui.prompt')
+        self._writenobuf(self.fout, msg, label='ui.prompt')
         self.flush()
         try:
             r = self._readline()