virsh: Conditionally Ignore the first entry in list of completions

The first entry in the returned array is the substitution for TEXT. It
causes unnecessary output if other commands or options share the same
prefix, e.g.

$ virsh des<TAB><TAB>
des      desc     destroy

or

$ virsh domblklist --d<TAB><TAB>
--d        --details  --domain

This patch fixes the above issue.

Signed-off-by: Lin Ma <lma@suse.com>
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
This commit is contained in:
Lin Ma 2018-05-08 22:20:31 +08:00 committed by Michal Privoznik
parent f3097dc8b6
commit 55948988e8

View File

@ -3493,7 +3493,10 @@ cmdComplete(vshControl *ctl, const vshCmd *cmd)
if (!(matches = vshReadlineCompletion(arg, 0, 0)))
goto cleanup;
for (iter = matches; *iter; iter++)
/* According to rl_completion_matches documentation, the
* first entry in @matches array is some dummy substitution
* string for @arg. Skip it. */
for (iter = &matches[1]; *iter; iter++)
printf("%s\n", *iter);
ret = true;