From 22d506ed6b0a9ef5b9dba6fa81d74182ca890ff0 Mon Sep 17 00:00:00 2001 From: Sven Wischnowsky Date: Fri, 5 Oct 2001 11:18:36 +0000 Subject: make expand style (file completion) work again; no more special behaviour with menu completion; try to make docs clearer (15944) --- ChangeLog | 6 ++++++ Completion/Unix/Type/_path_files | 15 +++++++++++---- Doc/Zsh/compsys.yo | 10 +++++----- 3 files changed, 22 insertions(+), 9 deletions(-) diff --git a/ChangeLog b/ChangeLog index 2a5f2b379..79124f326 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2001-10-05 Sven Wischnowsky + + * 15944: Completion/Unix/Type/_path_files, Doc/Zsh/compsys.yo: + make expand style (file completion) work again; no more special + behaviour with menu completion; try to make docs clearer + 2001-10-05 Geoff Wing * unposted: Doc/Zsh/options.yo: typo diff --git a/Completion/Unix/Type/_path_files b/Completion/Unix/Type/_path_files index 805f6993e..811e63173 100644 --- a/Completion/Unix/Type/_path_files +++ b/Completion/Unix/Type/_path_files @@ -332,6 +332,8 @@ for prepath in "$prepaths[@]"; do # Get the matching files by globbing. + tmp2=( "$tmp1[@]" ) + if [[ "$tpre$tsuf" = */* ]]; then compfiles -P$cfopt tmp1 accex "$skipped" "$_matcher" "$sdirs" fake elif [[ "$sopt" = *[/f]* ]]; then @@ -344,7 +346,9 @@ for prepath in "$prepaths[@]"; do if [[ -n "$PREFIX$SUFFIX" ]]; then # See which of them match what's on the line. - if [[ "$tmp1[1]" = */* ]]; then + if (( ! $#tmp1 )); then + tmp2=( ${^tmp2}/$PREFIX$SUFFIX ) + elif [[ "$tmp1[1]" = */* ]]; then if [[ -n "$_comp_correct" ]]; then tmp2=( "$tmp1[@]" ) builtin compadd -D tmp1 -F _comp_ignore "$matcher[@]" - "${(@)tmp1:t}" @@ -505,12 +509,15 @@ for prepath in "$prepaths[@]"; do SUFFIX="$osuf" fi - if [[ -n $menu || -z "$compstate[insert]" ]] || - ! zstyle -t ":completion:${curcontext}:paths" expand suffix || + # This once tested `-n $menu ||' but our menu-completion expert says + # that's not what we want. + + if [[ -z "$compstate[insert]" ]] || + { ! zstyle -t ":completion:${curcontext}:paths" expand suffix && [[ -z "$listsfx" && ( -n "$_comp_correct" || -z "$compstate[pattern_match]" || "$SUFFIX" != */* || - "${SUFFIX#*/}" = (|*[^\\])[][*?#~^\|\<\>]* ) ]]; then + "${SUFFIX#*/}" = (|*[^\\])[][*?#~^\|\<\>]* ) ]] }; then (( tmp4 )) && zstyle -t ":completion:${curcontext}:paths" ambiguous && compstate[to_end]= if [[ "$tmp3" = */* ]]; then diff --git a/Doc/Zsh/compsys.yo b/Doc/Zsh/compsys.yo index 1c387c5ee..d9afe9933 100644 --- a/Doc/Zsh/compsys.yo +++ b/Doc/Zsh/compsys.yo @@ -1070,15 +1070,15 @@ the file tt(/etc/resolv.conf). kindex(expand, completion style) item(tt(expand))( This style is used when completing strings consisting of multiple -parts, such as path names. If its -value contains the string `tt(prefix)', the partially typed word from +parts, such as path names. If one of its values is +the string `tt(prefix)', the partially typed word from the line will be expanded as far as possible even if trailing parts -cannot be completed. If it contains the string `tt(suffix)' -and normal (non-menu-) completion is used, matching names for +cannot be completed. If one of its values is the string `tt(suffix)', +matching names for components after the first ambiguous one will also be added. This means that the resulting string is the longest unambiguous string possible, but if menu completion is started on the list of matches -generated this way (e.g. due to the option tt(AUTO_MENU) being set), +generated this way, this will also cycle through the names of the files in pathname components after the first ambiguous one. ) -- cgit 1.4.1