summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOliver Kiddle <opk@users.sourceforge.net>2003-07-07 09:48:45 +0000
committerOliver Kiddle <opk@users.sourceforge.net>2003-07-07 09:48:45 +0000
commit3ac50886a00231cf99c421f4e36bbc356c91cea2 (patch)
tree94afe64194e7454330740679c28e4d1d92f47128
parentf92a529edc79d74ac0aa6c3b05a5824465d2cf29 (diff)
downloadzsh-3ac50886a00231cf99c421f4e36bbc356c91cea2.tar.gz
zsh-3ac50886a00231cf99c421f4e36bbc356c91cea2.zip
18822: fix accept-exact style not not bail out when it shouldn't and add a
setting to continue on and do normal completion
-rw-r--r--ChangeLog6
-rw-r--r--Completion/Base/Completer/_expand17
-rw-r--r--Doc/Zsh/compsys.yo4
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 <opk@zsh.org>
+
+ * 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 <clint@zsh.org>
* 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))(