diff options
author | Marc Cornellà <marc.cornella@live.com> | 2014-12-16 00:43:01 +0100 |
---|---|---|
committer | Marc Cornellà <marc.cornella@live.com> | 2015-02-10 19:18:14 +0100 |
commit | 5fe22fcbc6364aaacce373d71fa7d6b6f2d11a33 (patch) | |
tree | 5ada72a8eff2d80e3b24cdbf5d075be6c5f33190 | |
parent | 13e5afe805f28749f4aa6a5e82272760a62ad573 (diff) | |
download | zsh-5fe22fcbc6364aaacce373d71fa7d6b6f2d11a33.tar.gz zsh-5fe22fcbc6364aaacce373d71fa7d6b6f2d11a33.tar.bz2 zsh-5fe22fcbc6364aaacce373d71fa7d6b6f2d11a33.zip |
Clean up and fix +1/-0 syntax to work as expected
This change follows this proposed behaviour:
Ctrl+Shift+Left: move to last visited directory
Ctrl+Shift+Right: move to next visited directory
an alternative behaviour would be:
Ctrl+Shift+Left: move directory to the left in `dirs` output
Ctrl+Shift+Right: move directory to the right in `dirs` output
It also introduces `setopt nopushdminus` as a way to standardise
pushd syntax. It's value wasn't clear before, which has been the
cause of so many pull requests regarding this plugin not working
in some environments.
-rw-r--r-- | plugins/dircycle/dircycle.plugin.zsh | 29 |
1 files changed, 23 insertions, 6 deletions
diff --git a/plugins/dircycle/dircycle.plugin.zsh b/plugins/dircycle/dircycle.plugin.zsh index c6b6ba785..2064af46a 100644 --- a/plugins/dircycle/dircycle.plugin.zsh +++ b/plugins/dircycle/dircycle.plugin.zsh @@ -1,10 +1,27 @@ -## -# dircycle plugin: enables cycling through the directory -# stack using Ctrl+Shift+Left/Right +# enables cycling through the directory stack using +# Ctrl+Shift+Left/Right +# +# left/right direction follows the order in which directories +# were visited, like left/right arrows do in a browser -eval "insert-cycledleft () { zle push-line; LBUFFER='pushd -q +1'; zle accept-line }" +# NO_PUSHD_MINUS syntax: +# pushd +N: start counting from left of `dirs' output +# pushd -N: start counting from right of `dirs' output +setopt nopushdminus + +insert-cycledleft () { + zle push-line + LBUFFER='pushd -q +1' + zle accept-line +} zle -N insert-cycledleft -bindkey "\e[1;6D" insert-cycledleft -eval "insert-cycledright () { zle push-line; LBUFFER='pushd -q +0'; zle accept-line }" + +insert-cycledright () { + zle push-line + LBUFFER='pushd -q -0' + zle accept-line +} zle -N insert-cycledright + +bindkey "\e[1;6D" insert-cycledleft bindkey "\e[1;6C" insert-cycledright |