mercurial/ui.py
changeset 31091 ad074f900907
parent 31090 e9f96ccf36a6
child 31092 cb759f7f940d
equal deleted inserted replaced
31090:e9f96ccf36a6 31091:ad074f900907
   777         return "".join(self._buffers.pop())
   777         return "".join(self._buffers.pop())
   778 
   778 
   779     def write(self, *args, **opts):
   779     def write(self, *args, **opts):
   780         '''write args to output
   780         '''write args to output
   781 
   781 
   782         By default, this method simply writes to the buffer or stdout,
   782         By default, this method simply writes to the buffer or stdout.
   783         but extensions or GUI tools may override this method,
   783         Color mode can be set on the UI class to have the output decorated
   784         write_err(), popbuffer(), and label() to style output from
   784         with color modifier before being written to stdout.
   785         various parts of hg.
   785 
   786 
   786         The color used is controlled by an optional keyword argument, "label".
   787         An optional keyword argument, "label", can be passed in.
   787         This should be a string containing label names separated by space.
   788         This should be a string containing label names separated by
   788         Label names take the form of "topic.type". For example, ui.debug()
   789         space. Label names take the form of "topic.type". For example,
   789         issues a label of "ui.debug".
   790         ui.debug() issues a label of "ui.debug".
       
   791 
   790 
   792         When labeling output for a specific command, a label of
   791         When labeling output for a specific command, a label of
   793         "cmdname.type" is recommended. For example, status issues
   792         "cmdname.type" is recommended. For example, status issues
   794         a label of "status.modified" for modified files.
   793         a label of "status.modified" for modified files.
   795         '''
   794         '''
   796         if self._buffers and not opts.get('prompt', False):
   795         if self._buffers and not opts.get('prompt', False):
   797             self._buffers[-1].extend(a for a in args)
   796             if self._bufferapplylabels:
       
   797                 label = opts.get('label', '')
       
   798                 self._buffers[-1].extend(self.label(a, label) for a in args)
       
   799             else:
       
   800                 self._buffers[-1].extend(args)
       
   801         elif self._colormode == 'win32':
       
   802             # windows color printing is its own can of crab, defer to
       
   803             # the color module and that is it.
       
   804             color.win32print(self._write, *args, **opts)
   798         else:
   805         else:
   799             self._write(*args, **opts)
   806             msgs = args
       
   807             if self._colormode is not None:
       
   808                 label = opts.get('label', '')
       
   809                 msgs = [self.label(a, label) for a in args]
       
   810             self._write(*msgs, **opts)
   800 
   811 
   801     def _write(self, *msgs, **opts):
   812     def _write(self, *msgs, **opts):
   802             self._progclear()
   813             self._progclear()
   803             # opencode timeblockedsection because this is a critical path
   814             # opencode timeblockedsection because this is a critical path
   804             starttime = util.timer()
   815             starttime = util.timer()