From 9867c4091e71e6ed69889a9bfaee07275d2fa04e Mon Sep 17 00:00:00 2001 From: Tanaka Akira Date: Thu, 19 Aug 1999 11:18:05 +0000 Subject: manual/7448 --- Completion/Core/_normal | 41 ++++++++++++++++++++++++++++++++--------- 1 file changed, 32 insertions(+), 9 deletions(-) (limited to 'Completion/Core/_normal') diff --git a/Completion/Core/_normal b/Completion/Core/_normal index d4e948e41..ffacc8f04 100644 --- a/Completion/Core/_normal +++ b/Completion/Core/_normal @@ -29,13 +29,15 @@ fi # See if there are any matching pattern completions. -if [[ "$_compskip" != *patterns* ]]; then +if [[ "$_compskip" != (all|*patterns*) ]]; then for i in "$_patcomps[@]"; do pat="${i% *}" val="${i#* }" if [[ "$cmd1" == $~pat || "$cmd2" == $~pat ]]; then "$val" && ret=0 - if [[ "$_compskip" = *patterns* || "$_compskip" = all ]]; then + if [[ "$_compskip" = *patterns* ]]; then + break + elif [[ "$_compskip" = all ]]; then unset _compskip return ret fi @@ -55,15 +57,36 @@ fi # And generate the matches, probably using default completion. -if [[ -z "$comp" ]]; then - if [[ "$_compskip" = *default* ]]; then - unset _compskip - return 1 +if [[ -n "$comp" ]]; then + _compskip=patterns + "$comp" && ret=0 + [[ "$_compskip" = (all|*patterns*) ]] && return ret +else + if [[ "$_compskip" != *default* ]]; then + name=-default- + comp="$_comps[-default-]" fi - name=-default- - comp="$_comps[-default-]" fi -[[ -z "$comp" ]] || "$comp" && ret=0 + +if [[ "$_compskip" != (all|*patterns*) ]]; then + for i in "$_postpatcomps[@]"; do + pat="${i% *}" + val="${i#* }" + if [[ "$cmd1" == $~pat || "$cmd2" == $~pat ]]; then + _compskip=default + "$val" && ret=0 + if [[ "$_compskip" = *patterns* ]]; then + break + elif [[ "$_compskip" = all ]]; then + unset _compskip + return ret + fi + fi + done +fi + +[[ "$name" = -default- && -n "$comp" && "$_compskip" != (all|*default*) ]] && + "$comp" && ret=0 unset _compskip -- cgit 1.4.1