summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobby Russell <robby@planetargon.com>2015-02-10 11:20:08 -0800
committerRobby Russell <robby@planetargon.com>2015-02-10 11:20:08 -0800
commit0a0a27857e7811b77c35361c759bb566255108db (patch)
treeb7f5b17df8e0c27d3052f09ffe0b1ec3739d0f57
parent412a92e45ee934dc3b3a7b21b206b9fec9983623 (diff)
parent282240bf37d6fd9979da2c3a41006824dbb4e268 (diff)
downloadzsh-0a0a27857e7811b77c35361c759bb566255108db.tar.gz
zsh-0a0a27857e7811b77c35361c759bb566255108db.tar.bz2
zsh-0a0a27857e7811b77c35361c759bb566255108db.zip
Merge pull request #3413 from mcornella/fix-dircycle-plugin
dircycle plugin: clean and fix logic once and for all
-rw-r--r--plugins/dircycle/dircycle.plugin.zsh41
1 files changed, 34 insertions, 7 deletions
diff --git a/plugins/dircycle/dircycle.plugin.zsh b/plugins/dircycle/dircycle.plugin.zsh
index c6b6ba785..1e31105b1 100644
--- a/plugins/dircycle/dircycle.plugin.zsh
+++ b/plugins/dircycle/dircycle.plugin.zsh
@@ -1,10 +1,37 @@
-##
-# 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
+
+insert-cycledleft () {
+ emulate -L zsh
+ setopt nopushdminus
+
+ builtin pushd -q +1 &>/dev/null || true
+ zle reset-prompt
+}
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 () {
+ emulate -L zsh
+ setopt nopushdminus
+
+ builtin pushd -q -0 &>/dev/null || true
+ zle reset-prompt
+}
zle -N insert-cycledright
-bindkey "\e[1;6C" insert-cycledright
+
+
+# add key bindings for iTerm2
+if [[ "$TERM_PROGRAM" == "iTerm.app" ]]; then
+ bindkey "^[[1;6D" insert-cycledleft
+ bindkey "^[[1;6C" insert-cycledright
+else
+ bindkey "\e[1;6D" insert-cycledleft
+ bindkey "\e[1;6C" insert-cycledright
+fi \ No newline at end of file