diff --git a/mercurial/color.py b/mercurial/color.py --- a/mercurial/color.py +++ b/mercurial/color.py @@ -118,6 +118,7 @@ 'formatvariant.default': '', 'histedit.remaining': 'red bold', 'ui.prompt': 'yellow', + 'ui.abort': 'red', 'log.changeset': 'yellow', 'patchbomb.finalsummary': '', 'patchbomb.from': 'magenta', diff --git a/mercurial/commandserver.py b/mercurial/commandserver.py --- a/mercurial/commandserver.py +++ b/mercurial/commandserver.py @@ -353,7 +353,7 @@ # handle exceptions that may be raised by command server. most of # known exceptions are caught by dispatch. except error.Abort as inst: - ui.warn(_('abort: %s\n') % inst) + ui.warn(_('abort: %s\n') % inst, label='ui.abort') except IOError as inst: if inst.errno != errno.EPIPE: raise diff --git a/mercurial/dispatch.py b/mercurial/dispatch.py --- a/mercurial/dispatch.py +++ b/mercurial/dispatch.py @@ -212,9 +212,9 @@ try: ret = _runcatch(req) or 0 except error.ProgrammingError as inst: - req.ui.warn(_('** ProgrammingError: %s\n') % inst) + req.ui.warn(_('** ProgrammingError: %s\n') % inst, label='ui.abort') if inst.hint: - req.ui.warn(_('** (%s)\n') % inst.hint) + req.ui.warn(_('** (%s)\n') % inst.hint, label='ui.abort') raise except KeyboardInterrupt as inst: try: @@ -222,7 +222,7 @@ msg = _("killed!\n") else: msg = _("interrupted!\n") - req.ui.warn(msg) + req.ui.warn(msg, label='ui.abort') except error.SignalInterrupt: # maybe pager would quit without consuming all the output, and # SIGPIPE was raised. we cannot print anything in this case. diff --git a/mercurial/scmutil.py b/mercurial/scmutil.py --- a/mercurial/scmutil.py +++ b/mercurial/scmutil.py @@ -170,63 +170,70 @@ else: reason = _('lock held by %r') % inst.locker ui.warn(_("abort: %s: %s\n") - % (inst.desc or stringutil.forcebytestr(inst.filename), reason)) + % (inst.desc or stringutil.forcebytestr(inst.filename), reason), + label='ui.abort') if not inst.locker: - ui.warn(_("(lock might be very busy)\n")) + ui.warn(_("(lock might be very busy)\n"), label='ui.abort') except error.LockUnavailable as inst: ui.warn(_("abort: could not lock %s: %s\n") % (inst.desc or stringutil.forcebytestr(inst.filename), - encoding.strtolocal(inst.strerror))) + encoding.strtolocal(inst.strerror)), + label='ui.abort') except error.OutOfBandError as inst: if inst.args: msg = _("abort: remote error:\n") else: msg = _("abort: remote error\n") - ui.warn(msg) + ui.warn(msg, label='ui.abort') if inst.args: - ui.warn(''.join(inst.args)) + ui.warn(''.join(inst.args), label='ui.abort') if inst.hint: - ui.warn('(%s)\n' % inst.hint) + ui.warn('(%s)\n' % inst.hint, label='ui.abort') except error.RepoError as inst: - ui.warn(_("abort: %s!\n") % inst) + ui.warn(_("abort: %s!\n") % inst, label='ui.abort') if inst.hint: - ui.warn(_("(%s)\n") % inst.hint) + ui.warn(_("(%s)\n") % inst.hint, label='ui.abort') except error.ResponseError as inst: - ui.warn(_("abort: %s") % inst.args[0]) + ui.warn(_("abort: %s") % inst.args[0], label='ui.abort') msg = inst.args[1] if isinstance(msg, type(u'')): msg = pycompat.sysbytes(msg) if not isinstance(msg, bytes): - ui.warn(" %r\n" % (msg,)) + ui.warn(" %r\n" % (msg,), label='ui.abort') elif not msg: - ui.warn(_(" empty string\n")) + ui.warn(_(" empty string\n"), label='ui.abort') else: - ui.warn("\n%r\n" % pycompat.bytestr(stringutil.ellipsis(msg))) + ui.warn("\n%r\n" % pycompat.bytestr(stringutil.ellipsis(msg)), + label='ui.abort') except error.CensoredNodeError as inst: - ui.warn(_("abort: file censored %s!\n") % inst) + ui.warn(_("abort: file censored %s!\n") % inst, label='ui.abort') except error.RevlogError as inst: - ui.warn(_("abort: %s!\n") % inst) + ui.warn(_("abort: %s!\n") % inst, label='ui.abort') except error.InterventionRequired as inst: - ui.warn("%s\n" % inst) + ui.warn("%s\n" % inst, label='ui.abort') if inst.hint: - ui.warn(_("(%s)\n") % inst.hint) + ui.warn(_("(%s)\n") % inst.hint, label='ui.abort') return 1 except error.WdirUnsupported: - ui.warn(_("abort: working directory revision cannot be specified\n")) + ui.warn(_("abort: working directory revision cannot be specified\n"), + label='ui.abort') except error.Abort as inst: - ui.warn(_("abort: %s\n") % inst) + ui.warn(_("abort: %s\n") % inst, label='ui.abort') if inst.hint: - ui.warn(_("(%s)\n") % inst.hint) + ui.warn(_("(%s)\n") % inst.hint, label='ui.abort') except ImportError as inst: - ui.warn(_("abort: %s!\n") % stringutil.forcebytestr(inst)) + ui.warn(_("abort: %s!\n") % stringutil.forcebytestr(inst), + label='ui.abort') m = stringutil.forcebytestr(inst).split()[-1] if m in "mpatch bdiff".split(): - ui.warn(_("(did you forget to compile extensions?)\n")) + ui.warn(_("(did you forget to compile extensions?)\n"), + label='ui.abort') elif m in "zlib".split(): - ui.warn(_("(is your Python install correct?)\n")) + ui.warn(_("(is your Python install correct?)\n"), label='ui.abort') except IOError as inst: if util.safehasattr(inst, "code"): - ui.warn(_("abort: %s\n") % stringutil.forcebytestr(inst)) + ui.warn(_("abort: %s\n") % stringutil.forcebytestr(inst), + label='ui.abort') elif util.safehasattr(inst, "reason"): try: # usually it is in the form (errno, strerror) reason = inst.reason.args[1] @@ -236,7 +243,7 @@ if isinstance(reason, pycompat.unicode): # SSLError of Python 2.7.9 contains a unicode reason = encoding.unitolocal(reason) - ui.warn(_("abort: error: %s\n") % reason) + ui.warn(_("abort: error: %s\n") % reason, label='ui.abort') elif (util.safehasattr(inst, "args") and inst.args and inst.args[0] == errno.EPIPE): pass @@ -244,26 +251,29 @@ if getattr(inst, "filename", None): ui.warn(_("abort: %s: %s\n") % ( encoding.strtolocal(inst.strerror), - stringutil.forcebytestr(inst.filename))) + stringutil.forcebytestr(inst.filename)), label='ui.abort') else: - ui.warn(_("abort: %s\n") % encoding.strtolocal(inst.strerror)) + ui.warn(_("abort: %s\n") % encoding.strtolocal(inst.strerror), + label='ui.abort') else: raise except OSError as inst: if getattr(inst, "filename", None) is not None: ui.warn(_("abort: %s: '%s'\n") % ( encoding.strtolocal(inst.strerror), - stringutil.forcebytestr(inst.filename))) + stringutil.forcebytestr(inst.filename)), label='ui.abort') else: - ui.warn(_("abort: %s\n") % encoding.strtolocal(inst.strerror)) + ui.warn(_("abort: %s\n") % encoding.strtolocal(inst.strerror), + label='ui.abort') except MemoryError: - ui.warn(_("abort: out of memory\n")) + ui.warn(_("abort: out of memory\n"), label='ui.abort') except SystemExit as inst: # Commands shouldn't sys.exit directly, but give a return code. # Just in case catch this and and pass exit code to caller. return inst.code except socket.error as inst: - ui.warn(_("abort: %s\n") % stringutil.forcebytestr(inst.args[-1])) + ui.warn(_("abort: %s\n") % stringutil.forcebytestr(inst.args[-1]), + label='ui.abort') return -1