From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 13585 invoked from network); 30 Jul 2001 08:40:09 -0000 Received: from sunsite.dk (130.225.51.30) by ns1.primenet.com.au with SMTP; 30 Jul 2001 08:40:09 -0000 Received: (qmail 7714 invoked by alias); 30 Jul 2001 08:39:40 -0000 Mailing-List: contact zsh-workers-help@sunsite.dk; run by ezmlm Precedence: bulk X-No-Archive: yes X-Seq: 15526 Received: (qmail 7702 invoked from network); 30 Jul 2001 08:39:37 -0000 From: Sven Wischnowsky Date: Mon, 30 Jul 2001 10:38:56 +0200 (MET DST) Message-Id: <200107300838.KAA27378@beta.informatik.hu-berlin.de> To: zsh-workers@sunsite.dk Subject: Re: About the new long/short options changes In-Reply-To: <200107300822.KAA27055@beta.informatik.hu-berlin.de> I wrote: > ... > > Second, trying `gzip ' with `prefix-needed == false' didn't show > files because of the return value of _arguments. We've (ok: I) changed > this several times now and can only hope it doesn't interfere with other > complicated functions using _arguments. Urgh. Thinko. This doesn't work because there may be no matches in the completions generated by the calling function. Damn. I comment this out for now. If noone sees a better solution, the thing to do might be to make all functions using `->state' actions compare $compstate[nmatches] to its previous value on exit. Bye Sven ? Completion/Unix/Command/_gzip# Index: Completion/Base/Utility/_arguments =================================================================== RCS file: /cvsroot/zsh/zsh/Completion/Base/Utility/_arguments,v retrieving revision 1.8 diff -u -r1.8 _arguments --- Completion/Base/Utility/_arguments 2001/06/06 09:31:54 1.8 +++ Completion/Base/Utility/_arguments 2001/07/30 08:36:39 @@ -428,6 +428,14 @@ if [[ -n "$aret" ]]; then [[ -n $rawret ]] && return 300 + +### Returning non-zero would allow the calling function to add its own +### completions if we generated only options and have to use a ->state +### action. But if that then doesn't generate matches, the calling +### function's return value would be wrong unless it compares +### $compstate[nmatches] to its previous value. Ugly. +### +### return 1 else [[ -n "$noargs" && nm -eq "$compstate[nmatches]" ]] && _message "$noargs" fi Index: Src/Zle/computil.c =================================================================== RCS file: /cvsroot/zsh/zsh/Src/Zle/computil.c,v retrieving revision 1.70 diff -u -r1.70 computil.c --- Src/Zle/computil.c 2001/07/27 12:56:57 1.70 +++ Src/Zle/computil.c 2001/07/30 08:36:40 @@ -4281,9 +4281,7 @@ SWITCHHEAPS(oldheap, compheap) { while ((n = *args++)) { endcmgroup(NULL); - begcmgroup(n, 0); - endcmgroup(NULL); - begcmgroup(n, CGF_NOSORT); + begcmgroup(n, CGF_NOSORT|CGF_UNIQCON); endcmgroup(NULL); begcmgroup(n, CGF_UNIQALL); endcmgroup(NULL); @@ -4291,7 +4289,9 @@ endcmgroup(NULL); begcmgroup(n, CGF_UNIQALL); endcmgroup(NULL); - begcmgroup(n, CGF_NOSORT|CGF_UNIQCON); + begcmgroup(n, CGF_NOSORT); + endcmgroup(NULL); + begcmgroup(n, 0); } } SWITCHBACKHEAPS(oldheap); -- Sven Wischnowsky wischnow@informatik.hu-berlin.de