summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog3
-rw-r--r--Completion/Core/_path_files23
2 files changed, 26 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 3c46c87fb..dd038dd00 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
2000-05-29 Sven Wischnowsky <wischnow@zsh.org>
+ * 11635: Completion/Core/_path_files: make _path_files use glob
+ qualifiers from the line when doing pattern matching
+
* users/3101: Doc/Zsh/compsys.yo: make handling of default tag clearer
in the docs
diff --git a/Completion/Core/_path_files b/Completion/Core/_path_files
index bfe370eed..a8567ab78 100644
--- a/Completion/Core/_path_files
+++ b/Completion/Core/_path_files
@@ -147,6 +147,29 @@ zstyle -s ":completion:${curcontext}:paths" special-dirs sdirs &&
zstyle -s ":completion:${curcontext}:files" ignore-parents ignpar
+if [[ -n "$compstate[pattern_match]" &&
+ ( ( -z "$SUFFIX" && "$PREFIX" = *\([^\|\~]##\) ) ||
+ "$SUFFIX" = *\([^\|\~]##\) ) ]]; then
+ if [[ "$SUFFIX" = *\([^\|\~]##\) ]]; then
+ tmp3="${${(M)SUFFIX%\([^\|\~]##\)}[2,-2]}"
+ SUFFIX="${SUFFIX%\($tmp3\)}"
+ else
+ tmp3="${${(M)PREFIX%\([^\|\~]##\)}[2,-2]}"
+ PREFIX="${PREFIX%\($tmp3\)}"
+ fi
+ tmp2=()
+ for tmp1 in "$pats[@]"; do
+ if [[ "$tmp1" = (#b)(?*)(\(\([^\|~]##\)\)) ]]; then
+ tmp2=( "$tmp2[@]" "${match[1]}((${tmp3}${match[2][3,-1]}" )
+ elif [[ "$tmp1" = (#b)(?*)(\([^\|~]##\)) ]]; then
+ tmp2=( "$tmp2[@]" "${match[1]}(${tmp3}${match[2][2,-1]}" )
+ else
+ tmp2=( "$tmp2[@]" "${tmp1}(${tmp3})" )
+ fi
+ done
+ pats=( "$tmp2[@]" )
+fi
+
# We get the prefix and the suffix from the line and save the whole
# original string. Then we see if we will do menucompletion.