diff options
| author | Sven Wischnowsky <wischnow@users.sourceforge.net> | 2000-09-07 09:14:22 +0000 |
|---|---|---|
| committer | Sven Wischnowsky <wischnow@users.sourceforge.net> | 2000-09-07 09:14:22 +0000 |
| commit | 7ab68d2d2933d3ff953ca28a20696d7b467a21cb (patch) | |
| tree | fa34cc79856fe6e1c304ed370b660e5d28dfa581 | |
| parent | stick some `N's into glob patterns (12768) (diff) | |
| download | zsh-7ab68d2d2933d3ff953ca28a20696d7b467a21cb.tar zsh-7ab68d2d2933d3ff953ca28a20696d7b467a21cb.tar.gz zsh-7ab68d2d2933d3ff953ca28a20696d7b467a21cb.tar.bz2 zsh-7ab68d2d2933d3ff953ca28a20696d7b467a21cb.tar.lz zsh-7ab68d2d2933d3ff953ca28a20696d7b467a21cb.tar.xz zsh-7ab68d2d2933d3ff953ca28a20696d7b467a21cb.tar.zst zsh-7ab68d2d2933d3ff953ca28a20696d7b467a21cb.zip | |
more sensible value (12769)
| -rw-r--r-- | ChangeLog | 2 | ||||
| -rw-r--r-- | Completion/Builtins/_cd | 43 |
2 files changed, 27 insertions, 18 deletions
@@ -1,5 +1,7 @@ 2000-09-07 Sven Wischnowsky <wischnow@zsh.org> + * 12769: Completion/Builtins/_cd: more sensible value + * 12768: as suggested by Andrej (12767): Completion/Bsd/_bsd_pkg, Completion/Bsd/_kld, Completion/User/_gcc, Completion/User/_gdb, Completion/User/_mailboxes, Completion/User/_zdump: stick some diff --git a/Completion/Builtins/_cd b/Completion/Builtins/_cd index 634a62c66..3abe26049 100644 --- a/Completion/Builtins/_cd +++ b/Completion/Builtins/_cd @@ -13,7 +13,7 @@ setopt localoptions nonomatch -local expl +local expl ret=1 if [[ CURRENT -eq 3 ]]; then # cd old new: look for old in $PWD and see what can replace it @@ -23,25 +23,32 @@ if [[ CURRENT -eq 3 ]]; then # Now remove all the common parts of $PWD and the completions from this rep=(${${rep#${PWD%%$words[2]*}}%${PWD#*$words[2]}}) (( $#rep )) && _wanted -C replacement strings expl replacement compadd -a rep -elif _popd || [[ $PREFIX != (\~|/|./|../)* && $#cdpath -ne 0 ]]; then - local tdir tdir2 +else + _popd && ret=0 + + if [[ $PREFIX != (\~|/|./|../)* && $#cdpath -ne 0 ]]; then + local tdir tdir2 - # With cdablevars, we can convert foo/bar/... to ~foo/bar/... if - # there is no directory foo. In that case we could also complete - # variable names, but it hardly seems worth it. - # Note we need a tilde because cdablevars also allows user home - # directories, hence we also need nonomatch to suppress error messages. - if [[ -o cdablevars && -n "$PREFIX" && ! -d ${tdir::=${PREFIX%%/*}} && - -d ${~tdir2::="~$tdir"} ]]; then + # With cdablevars, we can convert foo/bar/... to ~foo/bar/... if + # there is no directory foo. In that case we could also complete + # variable names, but it hardly seems worth it. + # Note we need a tilde because cdablevars also allows user home + # directories, hence we also need nonomatch to suppress error messages. + if [[ -o cdablevars && -n "$PREFIX" && ! -d ${tdir::=${PREFIX%%/*}} && + -d ${~tdir2::="~$tdir"} ]]; then PREFIX="~$PREFIX" - _wanted directories expl directory _path_files -/ + _wanted directories expl directory _path_files -/ && ret=0 + else + local tmpcdpath + + tmpcdpath=(${${(@)cdpath:#.}:#$PWD}) + _alternative \ + 'local-directories:local directories:_path_files -/' \ + "path-directories:directories in cdpath:_path_files -W tmpcdpath -/" && ret=0 + fi else - local tmpcdpath - tmpcdpath=(${${(@)cdpath:#.}:#$PWD}) - _alternative \ - 'local-directories:local directories:_path_files -/' \ - "path-directories:directories in cdpath:_path_files -W tmpcdpath -/" + _wanted directories expl directory _path_files -/ && ret=0 fi -else - _wanted directories expl directory _path_files -/ + + return ret fi |
