dircycle: keep switch until a directory is found

This fixes the use case where a directory in the dir stack
doesn't exist anymore, so the keystroke doesn't appear to
do anything.

It will keep trying to switch to the n-est directory in the
stack until it founds an available directory or the dirstack
has no more directories to switch to.
master
Marc Cornellà 10 years ago
parent 7c1ca0e4d8
commit 251bc2d380
  1. 14
      plugins/dircycle/dircycle.plugin.zsh

@ -8,11 +8,21 @@
# pushd +N: start counting from left of `dirs' output
# pushd -N: start counting from right of `dirs' output
switch-to-dir () {
while ! builtin pushd -q $1 &>/dev/null; do
# We found a missing directory: pop it out of the dir stack
builtin popd -q $1
# Stop trying if there are no more directories in the dir stack
[[ ${#dirstack} -eq 0 ]] && break
done
}
insert-cycledleft () {
emulate -L zsh
setopt nopushdminus
builtin pushd -q +1 &>/dev/null || true
switch-to-dir +1
zle reset-prompt
}
zle -N insert-cycledleft
@ -21,7 +31,7 @@ insert-cycledright () {
emulate -L zsh
setopt nopushdminus
builtin pushd -q -0 &>/dev/null || true
switch-to-dir -0
zle reset-prompt
}
zle -N insert-cycledright

Loading…
Cancel
Save