From 8a2e1006b3b272126332aa064f3ad95387129544 Mon Sep 17 00:00:00 2001
From: Biswakalyan Bhuyan <biswa@surgot.in>
Date: Thu, 13 Feb 2025 14:13:49 +0530
Subject: new dot files

---
 .../oh-my-zsh/plugins/dircycle/dircycle.plugin.zsh | 54 ++++++++++++++++++++++
 1 file changed, 54 insertions(+)
 create mode 100644 .config/zsh/oh-my-zsh/plugins/dircycle/dircycle.plugin.zsh

(limited to '.config/zsh/oh-my-zsh/plugins/dircycle/dircycle.plugin.zsh')

diff --git a/.config/zsh/oh-my-zsh/plugins/dircycle/dircycle.plugin.zsh b/.config/zsh/oh-my-zsh/plugins/dircycle/dircycle.plugin.zsh
new file mode 100644
index 0000000..bb69f6b
--- /dev/null
+++ b/.config/zsh/oh-my-zsh/plugins/dircycle/dircycle.plugin.zsh
@@ -0,0 +1,54 @@
+# 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
+
+# NO_PUSHD_MINUS syntax:
+#  pushd +N: start counting from left of `dirs' output
+#  pushd -N: start counting from right of `dirs' output
+
+switch-to-dir () {
+	setopt localoptions nopushdminus
+	[[ ${#dirstack} -eq 0 ]] && return 1
+
+	while ! builtin pushd -q $1 &>/dev/null; do
+		# We found a missing directory: pop it out of the dir stack
+		builtin popd -q $1
+
+		# Stop trying if there are no more directories in the dir stack
+		[[ ${#dirstack} -eq 0 ]] && return 1
+	done
+}
+
+insert-cycledleft () {
+	switch-to-dir +1 || return
+
+	local fn
+	for fn (chpwd $chpwd_functions precmd $precmd_functions); do
+		(( $+functions[$fn] )) && $fn
+	done
+	zle reset-prompt
+}
+zle -N insert-cycledleft
+
+insert-cycledright () {
+	switch-to-dir -0 || return
+
+	local fn
+	for fn (chpwd $chpwd_functions precmd $precmd_functions); do
+		(( $+functions[$fn] )) && $fn
+	done
+	zle reset-prompt
+}
+zle -N insert-cycledright
+
+
+# These sequences work for xterm, Apple Terminal.app, and probably others.
+# Not for rxvt-unicode, but it doesn't seem differentiate Ctrl-Shift-Arrow
+# from plain Shift-Arrow, at least by default.
+# iTerm2 does not have these key combinations defined by default; you will need
+# to add them under "Keys" in your profile if you want to use this. You can do
+# this conveniently by loading the "xterm with Numeric Keypad" preset.
+bindkey "\e[1;6D" insert-cycledleft
+bindkey "\e[1;6C" insert-cycledright
-- 
cgit v1.2.3-59-g8ed1b