From 75d5e9bb8b42282935f54b6d4750aea7ae6d5844 Mon Sep 17 00:00:00 2001 From: Sven Wischnowsky Date: Mon, 30 Jul 2001 08:42:55 +0000 Subject: (15526) --- ChangeLog | 7 +++++++ Completion/Base/Utility/_arguments | 8 ++++++++ Src/Zle/computil.c | 8 ++++---- 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 6f7418026..4f8801e50 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2001-07-30 Sven Wischnowsky + + * 15526: Completion/Base/Utility/_arguments, Src/Zle/computil.c: + change order in which compgroups adds groups; add comment to + _arguments trying to explain how and why the return value is + wrong + 2001-07-28 Peter Stephenson * 15511: Functions/Misc/zcalc, Doc/Zsh/contrib.yo: make diff --git a/Completion/Base/Utility/_arguments b/Completion/Base/Utility/_arguments index 006e80374..0551afcf2 100644 --- a/Completion/Base/Utility/_arguments +++ b/Completion/Base/Utility/_arguments @@ -428,6 +428,14 @@ if (( $# )) && comparguments -i "$autod" "$singopt[@]" "$@"; then 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 diff --git a/Src/Zle/computil.c b/Src/Zle/computil.c index 552f5f745..12fafc71d 100644 --- a/Src/Zle/computil.c +++ b/Src/Zle/computil.c @@ -4281,9 +4281,7 @@ bin_compgroups(char *nam, char **args, char *ops, int func) 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 @@ bin_compgroups(char *nam, char **args, char *ops, int func) 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); -- cgit 1.4.1