diff --git a/mercurial/dispatch.py b/mercurial/dispatch.py --- a/mercurial/dispatch.py +++ b/mercurial/dispatch.py @@ -489,7 +489,7 @@ except error.AmbiguousCommand as inst: ui.warn( _(b"hg: command '%s' is ambiguous:\n %s\n") - % (inst.args[0], b" ".join(inst.args[1])) + % (inst.prefix, b" ".join(inst.matches)) ) except error.CommandError as inst: if inst.command: diff --git a/mercurial/error.py b/mercurial/error.py --- a/mercurial/error.py +++ b/mercurial/error.py @@ -117,6 +117,11 @@ class AmbiguousCommand(Exception): """Exception raised if command shortcut matches more than one command.""" + def __init__(self, prefix, matches): + self.prefix = prefix + self.matches = matches + super(AmbiguousCommand, self).__init__() + __bytes__ = _tobytes diff --git a/mercurial/help.py b/mercurial/help.py --- a/mercurial/help.py +++ b/mercurial/help.py @@ -713,7 +713,7 @@ except error.AmbiguousCommand as inst: # py3 fix: except vars can't be used outside the scope of the # except block, nor can be used inside a lambda. python issue4617 - prefix = inst.args[0] + prefix = inst.prefix select = lambda c: cmdutil.parsealiases(c)[0].startswith(prefix) rst = helplist(select) return rst