From 3ac50886a00231cf99c421f4e36bbc356c91cea2 Mon Sep 17 00:00:00 2001 From: Oliver Kiddle Date: Mon, 7 Jul 2003 09:48:45 +0000 Subject: 18822: fix accept-exact style not not bail out when it shouldn't and add a setting to continue on and do normal completion --- ChangeLog | 6 ++++++ Completion/Base/Completer/_expand | 17 +++++++++++------ Doc/Zsh/compsys.yo | 4 +++- 3 files changed, 20 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index 0aab30c0c..58f2bb348 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2003-07-07 Oliver Kiddle + + * 18822: Completion/Base/Completer/_expand, Doc/Zsh/compsys.yo: + fix accept-exact style not not bail out when it shouldn't and + add a setting to continue on and do normal completion + 2003-07-07 Clint Adams * 18xxx: Completion/Unix/Command/_subversion: completion for diff --git a/Completion/Base/Completer/_expand b/Completion/Base/Completer/_expand index 0e7b5820c..a71c7d34b 100644 --- a/Completion/Base/Completer/_expand +++ b/Completion/Base/Completer/_expand @@ -12,6 +12,7 @@ setopt localoptions nonomatch [[ _matcher_num -gt 1 ]] && return 1 local exp word sort expr expl subd suf=" " force opt asp tmp opre pre epre +local continue=0 (( $# )) && while getopts gsco opt; do @@ -37,13 +38,17 @@ zstyle -T ":completion:${curcontext}:" suffix && "${(e)word}" != *[][^*?\(\)\<\>\{\}\|]* ]] && return 1 -zstyle -t ":completion:${curcontext}:" accept-exact || - [[ $? -eq 2 && ! -o recexact ]] || +zstyle -s ":completion:${curcontext}:" accept-exact tmp || + [[ ! -o recexact ]] || tmp=1 + +if [[ "$tmp" != (yes|true|on|1) ]]; then { [[ "$word" = \~(|[-+]) || - ( "$word" = \~[-+][1-9]## && $word[3,-1] -le $#dirstack ) || - ( "$word" = \~* && ${#userdirs[(I)${word[2,-1]}*]}+${#nameddirs[(I)${word[2,-1]}*]} -ne 1 ) || + ( "$word" = \~[-+][1-9]## && $word[3,-1] -le $#dirstack ) ]] && return 1 } + { [[ ( "$word" = \~* && ${#userdirs[(I)${word[2,-1]}*]}+${#nameddirs[(I)${word[2,-1]}*]} -gt 1 ) || ( "$word" = *\$[a-zA-Z0-9_]## && - ${#parameters[(I)${word##*\$}*]} -ne 1 ) ]] && return 1 } + ${#parameters[(I)${word##*\$}*]} -ne 1 ) ]] && continue=1 } + [[ continue -eq 1 && "$tmp" != continue ]] && return 1 +fi # In exp we will collect the expansions. @@ -217,4 +222,4 @@ else compstate[insert]=menu fi -return 0 +return continue diff --git a/Doc/Zsh/compsys.yo b/Doc/Zsh/compsys.yo index 3ea302872..e48a057f7 100644 --- a/Doc/Zsh/compsys.yo +++ b/Doc/Zsh/compsys.yo @@ -1034,7 +1034,9 @@ words beginning with a tilde or parameter expansion should be expanded. For example, if there are parameters tt(foo) and tt(foobar), the string `tt($foo)' will only be expanded if tt(accept-exact) is set to `true'; otherwise the completion system will -be allowed to complete tt($foo) to tt($foobar). +be allowed to complete tt($foo) to tt($foobar). If the style is set to +`continue', _expand will add the expansion as a match and the completion +system will also be allowed to continue. ) kindex(add-space, completion style) item(tt(add-space))( -- cgit 1.4.1