3152 optionalrepo = ("paths debugconfig") |
3152 optionalrepo = ("paths debugconfig") |
3153 |
3153 |
3154 def findpossible(cmd): |
3154 def findpossible(cmd): |
3155 """ |
3155 """ |
3156 Return cmd -> (aliases, command table entry) |
3156 Return cmd -> (aliases, command table entry) |
3157 for each matching command |
3157 for each matching command. |
|
3158 Return debug commands (or their aliases) only if no normal command matches. |
3158 """ |
3159 """ |
3159 choice = {} |
3160 choice = {} |
3160 debugchoice = {} |
3161 debugchoice = {} |
3161 for e in table.keys(): |
3162 for e in table.keys(): |
3162 aliases = e.lstrip("^").split("|") |
3163 aliases = e.lstrip("^").split("|") |
|
3164 found = None |
3163 if cmd in aliases: |
3165 if cmd in aliases: |
3164 choice[cmd] = (aliases, table[e]) |
3166 found = cmd |
3165 continue |
3167 else: |
3166 for a in aliases: |
3168 for a in aliases: |
3167 if a.startswith(cmd): |
3169 if a.startswith(cmd): |
3168 if aliases[0].startswith("debug"): |
3170 found = a |
3169 debugchoice[a] = (aliases, table[e]) |
3171 break |
3170 else: |
3172 if found is not None: |
3171 choice[a] = (aliases, table[e]) |
3173 if aliases[0].startswith("debug"): |
3172 break |
3174 debugchoice[found] = (aliases, table[e]) |
|
3175 else: |
|
3176 choice[found] = (aliases, table[e]) |
3173 |
3177 |
3174 if not choice and debugchoice: |
3178 if not choice and debugchoice: |
3175 choice = debugchoice |
3179 choice = debugchoice |
3176 |
3180 |
3177 return choice |
3181 return choice |