summaryrefslogtreecommitdiff
path: root/plugins/dircycle
diff options
context:
space:
mode:
authorDawid Ferenczy <dawid@ferenczy.cz>2015-08-25 16:34:04 +0200
committerDawid Ferenczy <dawid@ferenczy.cz>2015-08-25 16:34:04 +0200
commit18ef1ee6481dbeca4fbecf3de627f946860ffd5a (patch)
treecb07e72538c470bb486596d955c7912c5b05e23e /plugins/dircycle
parenteafd5f325208421b82a770e57441dd1063eb5745 (diff)
parent192de6bcffb0294e19f4203f6f7dc1a7f3e427be (diff)
downloadzsh-18ef1ee6481dbeca4fbecf3de627f946860ffd5a.tar.gz
zsh-18ef1ee6481dbeca4fbecf3de627f946860ffd5a.tar.bz2
zsh-18ef1ee6481dbeca4fbecf3de627f946860ffd5a.zip
Merge remote-tracking branch 'robbyrussell/master'
Diffstat (limited to 'plugins/dircycle')
-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 46a0ab268..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