Commit 251bc2d3 authored by Marc Cornellà's avatar Marc Cornellà
Browse files

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.
parent 7c1ca0e4
...@@ -8,11 +8,21 @@ ...@@ -8,11 +8,21 @@
# pushd +N: start counting from left of `dirs' output # pushd +N: start counting from left of `dirs' output
# pushd -N: start counting from right 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 () { insert-cycledleft () {
emulate -L zsh emulate -L zsh
setopt nopushdminus setopt nopushdminus
builtin pushd -q +1 &>/dev/null || true switch-to-dir +1
zle reset-prompt zle reset-prompt
} }
zle -N insert-cycledleft zle -N insert-cycledleft
...@@ -21,7 +31,7 @@ insert-cycledright () { ...@@ -21,7 +31,7 @@ insert-cycledright () {
emulate -L zsh emulate -L zsh
setopt nopushdminus setopt nopushdminus
builtin pushd -q -0 &>/dev/null || true switch-to-dir -0
zle reset-prompt zle reset-prompt
} }
zle -N insert-cycledright zle -N insert-cycledright
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment