Show More
@@ -445,7 +445,7 b' class colorui(uimod.ui):' | |||
|
445 | 445 | return super(colorui, self).write_err(*args, **opts) |
|
446 | 446 | |
|
447 | 447 | label = opts.get('label', '') |
|
448 | if self._bufferstates and self._bufferstates[-1]: | |
|
448 | if self._bufferstates and self._bufferstates[-1][0]: | |
|
449 | 449 | return self.write(*args, **opts) |
|
450 | 450 | if self._colormode == 'win32': |
|
451 | 451 | for a in args: |
@@ -76,7 +76,8 b' class ui(object):' | |||
|
76 | 76 | def __init__(self, src=None): |
|
77 | 77 | # _buffers: used for temporary capture of output |
|
78 | 78 | self._buffers = [] |
|
79 | # _bufferstates: Should the temporary capture includes stderr | |
|
79 | # _bufferstates: | |
|
80 | # should the temporary capture include stderr and subprocess output | |
|
80 | 81 | self._bufferstates = [] |
|
81 | 82 | self.quiet = self.verbose = self.debugflag = self.tracebackflag = False |
|
82 | 83 | self._reportuntrusted = True |
@@ -540,12 +541,15 b' class ui(object):' | |||
|
540 | 541 | def paths(self): |
|
541 | 542 | return paths(self) |
|
542 | 543 | |
|
543 | def pushbuffer(self, error=False): | |
|
544 | def pushbuffer(self, error=False, subproc=False): | |
|
544 | 545 | """install a buffer to capture standard output of the ui object |
|
545 | 546 | |
|
546 |
If error is True, the error output will be captured too. |
|
|
547 | If error is True, the error output will be captured too. | |
|
548 | ||
|
549 | If subproc is True, output from subprocesses (typically hooks) will be | |
|
550 | captured too.""" | |
|
547 | 551 | self._buffers.append([]) |
|
548 | self._bufferstates.append(error) | |
|
552 | self._bufferstates.append((error, subproc)) | |
|
549 | 553 | |
|
550 | 554 | def popbuffer(self, labeled=False): |
|
551 | 555 | '''pop the last buffer and return the buffered output |
@@ -585,7 +589,7 b' class ui(object):' | |||
|
585 | 589 | |
|
586 | 590 | def write_err(self, *args, **opts): |
|
587 | 591 | try: |
|
588 | if self._bufferstates and self._bufferstates[-1]: | |
|
592 | if self._bufferstates and self._bufferstates[-1][0]: | |
|
589 | 593 | return self.write(*args, **opts) |
|
590 | 594 | if not getattr(self.fout, 'closed', False): |
|
591 | 595 | self.fout.flush() |
@@ -834,8 +838,11 b' class ui(object):' | |||
|
834 | 838 | '''execute shell command with appropriate output stream. command |
|
835 | 839 | output will be redirected if fout is not stdout. |
|
836 | 840 | ''' |
|
841 | out = self.fout | |
|
842 | if util.any(s[1] for s in self._bufferstates): | |
|
843 | out = self | |
|
837 | 844 | return util.system(cmd, environ=environ, cwd=cwd, onerr=onerr, |
|
838 |
errprefix=errprefix, out= |
|
|
845 | errprefix=errprefix, out=out) | |
|
839 | 846 | |
|
840 | 847 | def traceback(self, exc=None, force=False): |
|
841 | 848 | '''print exception traceback if traceback printing enabled or forced. |
General Comments 0
You need to be logged in to leave comments.
Login now