mercurial/ui.py
changeset 40541 c2aea007130b
parent 40540 06e841e72523
child 40542 d8997c5ce2ff
equal deleted inserted replaced
40540:06e841e72523 40541:c2aea007130b
   911         else:
   911         else:
   912             self._bufferapplylabels = None
   912             self._bufferapplylabels = None
   913 
   913 
   914         return "".join(self._buffers.pop())
   914         return "".join(self._buffers.pop())
   915 
   915 
       
   916     def _isbuffered(self, dest):
       
   917         if dest is self.fout:
       
   918             return bool(self._buffers)
       
   919         if dest is self.ferr:
       
   920             return bool(self._bufferstates and self._bufferstates[-1][0])
       
   921         return False
       
   922 
   916     def canwritewithoutlabels(self):
   923     def canwritewithoutlabels(self):
   917         '''check if write skips the label'''
   924         '''check if write skips the label'''
   918         if self._buffers and not self._bufferapplylabels:
   925         if self._buffers and not self._bufferapplylabels:
   919             return True
   926             return True
   920         return self._colormode is None
   927         return self._colormode is None
   938 
   945 
   939         When labeling output for a specific command, a label of
   946         When labeling output for a specific command, a label of
   940         "cmdname.type" is recommended. For example, status issues
   947         "cmdname.type" is recommended. For example, status issues
   941         a label of "status.modified" for modified files.
   948         a label of "status.modified" for modified files.
   942         '''
   949         '''
   943         if self._buffers:
   950         self._write(self.fout, *args, **opts)
       
   951 
       
   952     def write_err(self, *args, **opts):
       
   953         self._write(self.ferr, *args, **opts)
       
   954 
       
   955     def _write(self, dest, *args, **opts):
       
   956         if self._isbuffered(dest):
   944             if self._bufferapplylabels:
   957             if self._bufferapplylabels:
   945                 label = opts.get(r'label', '')
   958                 label = opts.get(r'label', '')
   946                 self._buffers[-1].extend(self.label(a, label) for a in args)
   959                 self._buffers[-1].extend(self.label(a, label) for a in args)
   947             else:
   960             else:
   948                 self._buffers[-1].extend(args)
   961                 self._buffers[-1].extend(args)
   949         else:
   962         else:
   950             self._writenobuf(self.fout, *args, **opts)
   963             self._writenobuf(dest, *args, **opts)
   951 
   964 
   952     def _writenobuf(self, dest, *args, **opts):
   965     def _writenobuf(self, dest, *args, **opts):
   953         self._progclear()
   966         self._progclear()
   954         msg = b''.join(args)
   967         msg = b''.join(args)
   955 
   968 
   979             raise error.StdioError(err)
   992             raise error.StdioError(err)
   980         finally:
   993         finally:
   981             self._blockedtimes['stdio_blocked'] += \
   994             self._blockedtimes['stdio_blocked'] += \
   982                 (util.timer() - starttime) * 1000
   995                 (util.timer() - starttime) * 1000
   983 
   996 
   984     def write_err(self, *args, **opts):
       
   985         if self._bufferstates and self._bufferstates[-1][0]:
       
   986             self.write(*args, **opts)
       
   987         else:
       
   988             self._writenobuf(self.ferr, *args, **opts)
       
   989 
       
   990     def flush(self):
   997     def flush(self):
   991         # opencode timeblockedsection because this is a critical path
   998         # opencode timeblockedsection because this is a critical path
   992         starttime = util.timer()
   999         starttime = util.timer()
   993         try:
  1000         try:
   994             try:
  1001             try: