Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
PATCH: _cd not completing in $cdpath
- X-seq: zsh-workers 9149
- From: Peter Stephenson <pws@xxxxxxxxxxxxxxxxxxxxxxxx>
- To: zsh-workers@xxxxxxxxxxxxxx (Zsh hackers list)
- Subject: PATCH: _cd not completing in $cdpath
- Date: Thu, 23 Dec 1999 21:54:06 +0000
- Mailing-list: contact zsh-workers-help@xxxxxxxxxxxxxx; run by ezmlm
(Andrej just reported this after I'd noticed it. I've left in the fact
that . gets removed. I think this is to do with the local-directories and
path-directories tag being separate; local files do get completed at some
point.)
_alternative re-evaluates arguments passed to it, so a string like
'\(/home/pws /home/pws/tex\)'
isn't good enough as a path for _path_files -W because it gets split on
spaces, whereas _path_files needs it as a single argument. If that's the
correct behaviour for _alternative --- and I suspect it is, because there
are uses like
_alternative 'files:: _files' 'parameters:: _parameters'
--- then _cd needs fixing.
The simple solution, passing the name of a parameter instead of the
concocted string, took me ages to think of. It turns out then that an
extra fix is required in _path_files for directories with spaces in: the
parameter was split with an extra ${=...}, which seems to me unnecessary
since it should be a proper array anyway, that's what they're for.
Index: Completion/Builtins/_cd
===================================================================
RCS file: /home/pws/CVSROOT/projects/zsh/Completion/Builtins/_cd,v
retrieving revision 1.3
diff -u -r1.3 _cd
--- Completion/Builtins/_cd 1999/12/15 19:44:32 1.3
+++ Completion/Builtins/_cd 1999/12/23 15:51:12
@@ -37,9 +37,11 @@
PREFIX="~$PREFIX"
_path_files -/
else
+ local tmpcdpath
+ tmpcdpath=(${(@)cdpath:#.})
_alternative \
'local-directories:local directories:_path_files -/' \
- "path-directories: directories in cdpath:_path_files -W \\(${${(@)cdpath:#.}}\\) -/"
+ "path-directories:directories in cdpath:_path_files -W tmpcdpath -/"
fi
else
_path_files -/
Index: Completion/Core/_path_files
===================================================================
RCS file: /home/pws/CVSROOT/projects/zsh/Completion/Core/_path_files,v
retrieving revision 1.10
diff -u -r1.10 _path_files
--- Completion/Core/_path_files 1999/12/15 19:44:32 1.10
+++ Completion/Core/_path_files 1999/12/23 15:47:25
@@ -44,7 +44,9 @@
if [[ "$tmp1[1]" = '(' ]]; then
prepaths=( ${^=tmp1[2,-2]%/}/ )
else
- prepaths=( ${(P)^=tmp1%/}/ )
+ # In this case the variable should be an array, so
+ # don't use an extra ${=...}.
+ prepaths=( ${(P)^tmp1%/}/ )
(( ! $#prepaths )) && prepaths=( ${tmp1%/}/ )
fi
(( ! $#prepaths )) && prepaths=( '' )
--
Peter Stephenson <pws@xxxxxxxxxxxxxxxxxxxxxxxx>
Messages sorted by:
Reverse Date,
Date,
Thread,
Author