diff options
Diffstat (limited to 'Completion/Core')
-rw-r--r-- | Completion/Core/_oldlist | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/Completion/Core/_oldlist b/Completion/Core/_oldlist index bdf12f90c..2efc08119 100644 --- a/Completion/Core/_oldlist +++ b/Completion/Core/_oldlist @@ -27,13 +27,23 @@ fi # If this is a completion widget, and we have a completion inserted already, # and the compconfig key oldlist_menu is not never, then we cycle through the # existing list (even if it was generated by another widget). -if [[ -n $compstate[old_insert] && $WIDGET = *complete(|-prefix|-word) && - $compconfig[oldlist_menu] != never ]]; then + +if [[ $compconfig[oldlist_menu] = verbose && + $LASTWIDGET = _verbose_list && $WIDGET != _verbose_list && + -z $compstate[old_insert] && + -n $compstate[old_list] ]]; then compstate[old_list]=keep - if [[ $WIDGET = *reverse* ]]; then - compstate[insert]=$(( compstate[old_insert] - 1 )) +elif [[ $WIDGET = *complete(|-prefix|-word) && + $compconfig[oldlist_menu] != (never|verbose) ]]; then + if [[ -n $compstate[old_insert] ]]; then + compstate[old_list]=keep + if [[ $WIDGET = *reverse* ]]; then + compstate[insert]=$(( compstate[old_insert] - 1 )) + else + compstate[insert]=$(( compstate[old_insert] + 1 )) + fi else - compstate[insert]=$(( compstate[old_insert] + 1 )) + return 1 fi return 0 fi |