show choices on ambiguous commands
authorTK Soh <teekaysoh@yahoo.com>
Tue, 07 Mar 2006 08:05:17 +0100
changeset 1848 bb70ffebe77b
parent 1846 4d2791f4ef80
child 1849 360d0f8d9d6f
show choices on ambiguous commands
mercurial/commands.py
--- a/mercurial/commands.py	Mon Mar 06 21:06:53 2006 -0800
+++ b/mercurial/commands.py	Tue Mar 07 08:05:17 2006 +0100
@@ -2678,23 +2678,22 @@
 
 def find(cmd):
     """Return (aliases, command table entry) for command string."""
-    choice = None
-    count = 0
+    choice = []
     for e in table.keys():
         aliases = e.lstrip("^").split("|")
         if cmd in aliases:
             return aliases, table[e]
         for a in aliases:
             if a.startswith(cmd):
-                count += 1
-                choice = aliases, table[e]
+                choice.append([aliases, table[e]])
                 break
 
-    if count > 1:
-        raise AmbiguousCommand(cmd)
+    if len(choice) > 1:
+        clist = [x[0][0] for x in choice]
+        raise AmbiguousCommand(cmd, clist)
 
     if choice:
-        return choice
+        return choice[0]
 
     raise UnknownCommand(cmd)
 
@@ -2806,7 +2805,8 @@
             help_(u, 'shortlist')
         sys.exit(-1)
     except AmbiguousCommand, inst:
-        u.warn(_("hg: command '%s' is ambiguous.\n") % inst.args[0])
+        u.warn(_("hg: command '%s' is ambiguous:\n    %s\n") % 
+                (inst.args[0], " ".join(inst.args[1])))
         sys.exit(1)
     except UnknownCommand, inst:
         u.warn(_("hg: unknown command '%s'\n") % inst.args[0])
@@ -2941,7 +2941,8 @@
         u.warn(_("%s: invalid arguments\n") % cmd)
         help_(u, cmd)
     except AmbiguousCommand, inst:
-        u.warn(_("hg: command '%s' is ambiguous.\n") % inst.args[0])
+        u.warn(_("hg: command '%s' is ambiguous:\n    %s\n") % 
+                (inst.args[0], " ".join(inst.args[1])))
         help_(u, 'shortlist')
     except UnknownCommand, inst:
         u.warn(_("hg: unknown command '%s'\n") % inst.args[0])