diff options
author | Peter Stephenson <pws@users.sourceforge.net> | 2003-02-24 11:33:04 +0000 |
---|---|---|
committer | Peter Stephenson <pws@users.sourceforge.net> | 2003-02-24 11:33:04 +0000 |
commit | f1fd8273b44fb232651e72ceb4af1da8492ea447 (patch) | |
tree | 2fade887f7afcf3f76747cdcfaf7251b7eab51aa | |
parent | b1ae269e555cb3997ebac0ceae936f563e3c67c1 (diff) | |
download | zsh-f1fd8273b44fb232651e72ceb4af1da8492ea447.tar.gz zsh-f1fd8273b44fb232651e72ceb4af1da8492ea447.tar.xz zsh-f1fd8273b44fb232651e72ceb4af1da8492ea447.zip |
18230: Test for explicitly matched file in _path_files.
-rw-r--r-- | ChangeLog | 8 | ||||
-rw-r--r-- | Completion/Unix/Type/_path_files | 23 |
2 files changed, 30 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog index 55c1d26b8..11ad17f6d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2003-02-24 Peter Stephenson <pws@csr.com> + + * 18230: Completion/Unix/Type/_path_files: If globbing failed + to match a path entry, test to see if [[ -e <file> ]] worked + anyway. This supports smart filing systems (cygdrive, ClearCase + dynamic views) and may work for automounted directories (so + commented out the other hack to see). + 2003-02-23 Peter Stephenson <pws@pwstephenson.fsnet.co.uk> * 18278: Functions/TCP/tcp_output, Functions/TCP/tcp_spam, diff --git a/Completion/Unix/Type/_path_files b/Completion/Unix/Type/_path_files index 45308bc93..b4d6e105e 100644 --- a/Completion/Unix/Type/_path_files +++ b/Completion/Unix/Type/_path_files @@ -324,8 +324,11 @@ for prepath in "$prepaths[@]"; do fi # Force auto-mounting. There might be a better way... + # Commented out in the hope that `pws non-canonical hack' + # down below does this for us. Can be uncommented if it + # doesn't. - : ${^tmp1}/${PREFIX}${SUFFIX}/.(/) + # : ${^tmp1}/${PREFIX}${SUFFIX}/.(/) # Get the matching files by globbing. @@ -343,6 +346,24 @@ for prepath in "$prepaths[@]"; do if [[ -n "$PREFIX$SUFFIX" ]]; then # See which of them match what's on the line. + # pws non-canonical hack which seems to work so far... + # if we didn't match by globbing, check that there is + # something to match by explicit name. This is for + # `clever' filing systems where names pop into existence + # when referenced. + if (( ! $#tmp1 )); then + for tmp3 in "$tmp2[@]"; do + if [[ -n $tmp3 && $tmp3 != */ ]]; then + tmp3+=/ + fi + if [[ -e "$tmp3${(Q)PREFIX}${(Q)SUFFIX}" ]] then + ## DEBUG + print "added $tmp3${(Q)PREFIX}${(Q)SUFFIX}" >&2 + tmp1+=("$tmp3${(Q)PREFIX}${(Q)SUFFIX}") + fi + done + fi + if (( ! $#tmp1 )); then tmp2=( ${^tmp2}/$PREFIX$SUFFIX ) elif [[ "$tmp1[1]" = */* ]]; then |