summaryrefslogtreecommitdiff
path: root/plugins/dircycle
diff options
context:
space:
mode:
authorMarc Cornellà <marc.cornella@live.com>2014-12-16 00:43:01 +0100
committerMarc Cornellà <marc.cornella@live.com>2015-02-10 19:18:14 +0100
commit5fe22fcbc6364aaacce373d71fa7d6b6f2d11a33 (patch)
tree5ada72a8eff2d80e3b24cdbf5d075be6c5f33190 /plugins/dircycle
parent13e5afe805f28749f4aa6a5e82272760a62ad573 (diff)
downloadzsh-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.zsh29
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