From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 19784 invoked from network); 28 Feb 2000 09:06:24 -0000 Received: from sunsite.auc.dk (130.225.51.30) by ns1.primenet.com.au with SMTP; 28 Feb 2000 09:06:24 -0000 Received: (qmail 18311 invoked by alias); 28 Feb 2000 09:06:10 -0000 Mailing-List: contact zsh-workers-help@sunsite.auc.dk; run by ezmlm Precedence: bulk X-No-Archive: yes X-Seq: 9893 Received: (qmail 18304 invoked from network); 28 Feb 2000 09:06:09 -0000 Date: Mon, 28 Feb 2000 10:06:07 +0100 (MET) Message-Id: <200002280906.KAA02152@beta.informatik.hu-berlin.de> From: Sven Wischnowsky To: zsh-workers@sunsite.auc.dk In-reply-to: "Bart Schaefer"'s message of Mon, 28 Feb 2000 04:52:35 +0000 Subject: Re: Return value of _multi_parts Bart Schaefer wrote: > According to the documentation, _multi_parts is supposed to return 0 if > it successfully added any matches. However, there appear to be several > cases where it returns 0 as long as it has called compadd, i.e. without > checking the exit status of compadd. > > Am I missing something, or is this incorrect? Ugh. True. Bye Sven diff -ru ../z.old/Completion/Core/_multi_parts Completion/Core/_multi_parts --- ../z.old/Completion/Core/_multi_parts Mon Feb 28 10:02:58 2000 +++ Completion/Core/_multi_parts Mon Feb 28 10:05:22 2000 @@ -128,9 +128,10 @@ -M "r:|${sep}=* r:|=* $match" - "$tmp1[1]" fi fi - return 0 + return fi elif (( $#tmp1 )); then + local ret=1 # More than one match. First we get all strings that match the # rest from the line. @@ -164,10 +165,10 @@ if [[ "$i" = *${sep}* ]]; then compadd "$group[@]" "$expl[@]" -r "$sep" -S "$sep" "$opts[@]" \ -p "$pref" \ - -M "r:|${sep}=* r:|=* $match" - "${i%%${sep}*}" + -M "r:|${sep}=* r:|=* $match" - "${i%%${sep}*}" && ret=0 else compadd "$group[@]" "$expl[@]" -S '' "$opts[@]" -p "$pref" \ - -M "r:|${sep}=* r:|=* $match" - "$i" + -M "r:|${sep}=* r:|=* $match" - "$i" && ret=0 fi done else @@ -179,14 +180,14 @@ if [[ "$i" = *${sep}* ]]; then compadd "$group[@]" "$expl[@]" -r "$sep" -S "$sep" "$opts[@]" \ -p "$pref" -s "${i#*${sep}}" \ - -M "r:|${sep}=* r:|=* $match" - "${i%%${sep}*}" + -M "r:|${sep}=* r:|=* $match" - "${i%%${sep}*}" && ret=0 else compadd "$group[@]" "$expl[@]" -S '' "$opts[@]" -p "$pref" \ - -M "r:|${sep}=* r:|=* $match" - "$i" + -M "r:|${sep}=* r:|=* $match" - "$i" && ret=0 fi done fi - return 0 + return ret else # We are here if no string matched what's on the line. In this # case we insert the expanded prefix we collected if it differs @@ -205,7 +206,7 @@ compadd "$group[@]" "$expl[@]" -S '' "$opts[@]" \ -M "r:|${sep}=* r:|=* $match" - "$pref$pre" fi - return 0 + return fi fi -- Sven Wischnowsky wischnow@informatik.hu-berlin.de