diff options
author | Sven Wischnowsky <wischnow@users.sourceforge.net> | 2000-04-06 11:36:33 +0000 |
---|---|---|
committer | Sven Wischnowsky <wischnow@users.sourceforge.net> | 2000-04-06 11:36:33 +0000 |
commit | 9cb71e2f7cc2809b7d41e9160188ffe8af9e3b7d (patch) | |
tree | fd66df74fa7361246ff076428f2aec7cd198b339 | |
parent | 4d08f8def21a24afb3b0a52dc11518a45e0ca2ab (diff) | |
download | zsh-9cb71e2f7cc2809b7d41e9160188ffe8af9e3b7d.tar.gz zsh-9cb71e2f7cc2809b7d41e9160188ffe8af9e3b7d.tar.xz zsh-9cb71e2f7cc2809b7d41e9160188ffe8af9e3b7d.zip |
tag in file-patterns optional, use `files' as default (10542)
-rw-r--r-- | ChangeLog | 3 | ||||
-rw-r--r-- | Completion/Core/_files | 25 | ||||
-rw-r--r-- | Doc/Zsh/compsys.yo | 3 |
3 files changed, 21 insertions, 10 deletions
diff --git a/ChangeLog b/ChangeLog index 439c889d0..9221cf24f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2000-04-06 Sven Wischnowsky <wischnow@informatik.hu-berlin.de> + * Completion/Core/_files, Doc/Zsh/compsys.yo: tag in file-patterns + optional, use `files' as default (10542) + * 10531: Src/init.c: use `zsh' as command name in error messages even with -c diff --git a/Completion/Core/_files b/Completion/Core/_files index 0c0231cb4..7a4fdc3a0 100644 --- a/Completion/Core/_files +++ b/Completion/Core/_files @@ -1,6 +1,6 @@ #autoload -local opts tmp glob pats expl tag i pat descr end ign ret=1 +local opts tmp glob pat pats expl tag i def descr end ign ret=1 zparseopts -a opts \ '/=tmp' 'f=tmp' 'g+:-=tmp' q n 1 2 P: S: r: R: W: X+: M+: F: J+: V+: @@ -19,9 +19,16 @@ else ign= fi -if zstyle -a ":completion:${curcontext}:" file-patterns pats; then +if zstyle -a ":completion:${curcontext}:" file-patterns tmp; then [[ "$type" = */* ]] && glob="$glob *(-/)" - pats=( \ ${(M)^${pats//\\%p/ ${glob:-\*} }:#*[^\\]:*} ) + pats=() + for i in ${tmp//\\%p/ ${${glob:-\*}//:/\\:} }; do + if [[ $i = *[^\\]:* ]]; then + pats=( "$pats[@]" " $i" ) + else + pats=( "$pats[@]" " ${i}:files" ) + fi + done else if [[ "$type" = *g* ]]; then if [[ "$type" = */* ]]; then @@ -37,14 +44,14 @@ else fi fi -for tag in "${(@)${(@)pats#*[^\\]:}%%:*}"; do +for def in "$pats[@]"; do ###"${(@)${(@)pats#*[^\\]:}%%:*}"; do - i="$pats[(I)*[^\\\\]:${tag}(|:*)]" - pat="${${pats[i]%%:${tag}*}//\\\\:/:}" + tag="${${def#*[^\\]:}%%:*}" + pat="${${def%%:${tag}*}//\\\\:/:}" - if [[ i -gt 0 && "$pat" != \ # ]]; then - if [[ "$pats[i]" = *:${tag}:* ]]; then - descr="${pats[i]#*:${tag}:}" + if [[ "$pat" != \ # ]]; then + if [[ "$def" = *:${tag}:* ]]; then + descr="${def#*:${tag}:}" else descr=file end=yes diff --git a/Doc/Zsh/compsys.yo b/Doc/Zsh/compsys.yo index e8eada391..5ae068e4d 100644 --- a/Doc/Zsh/compsys.yo +++ b/Doc/Zsh/compsys.yo @@ -942,7 +942,8 @@ the pattern(s) given by the calling function. Colons in the pattern have to be preceded by a backslash to make them distinguishable from the colon before the var(tag). The var(tag)s of all strings in the value will be offered by tt(_files) -(again, one after another) and used when looking up other styles. The +(again, one after another) and used when looking up other styles. If +no `tt(:)var(tag)' is given the tt(files) tag will be used. The var(tag) may also be followed by an optional second colon and a description. If that is given, this description will be used for the `tt(%d)' in the value of |