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 /plugins/dircycle | |
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.
Diffstat (limited to 'plugins/dircycle')
-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 |