mirror of
				https://github.com/ohmyzsh/ohmyzsh.git
				synced 2024-05-11 05:55:17 +00:00 
			
		
		
		
	dircycle: keep switch until a directory is found
This fixes the use case where a directory in the dir stack doesn't exist anymore, so the keystroke doesn't appear to do anything. It will keep trying to switch to the n-est directory in the stack until it founds an available directory or the dirstack has no more directories to switch to.
This commit is contained in:
		@@ -8,11 +8,21 @@
 | 
				
			|||||||
#  pushd +N: start counting from left of `dirs' output
 | 
					#  pushd +N: start counting from left of `dirs' output
 | 
				
			||||||
#  pushd -N: start counting from right of `dirs' output
 | 
					#  pushd -N: start counting from right of `dirs' output
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					switch-to-dir () {
 | 
				
			||||||
 | 
						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 ]] && break
 | 
				
			||||||
 | 
						done
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
insert-cycledleft () {
 | 
					insert-cycledleft () {
 | 
				
			||||||
	emulate -L zsh
 | 
						emulate -L zsh
 | 
				
			||||||
	setopt nopushdminus
 | 
						setopt nopushdminus
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	builtin pushd -q +1 &>/dev/null || true
 | 
						switch-to-dir +1
 | 
				
			||||||
	zle reset-prompt
 | 
						zle reset-prompt
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
zle -N insert-cycledleft
 | 
					zle -N insert-cycledleft
 | 
				
			||||||
@@ -21,7 +31,7 @@ insert-cycledright () {
 | 
				
			|||||||
	emulate -L zsh
 | 
						emulate -L zsh
 | 
				
			||||||
	setopt nopushdminus
 | 
						setopt nopushdminus
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	builtin pushd -q -0 &>/dev/null || true
 | 
						switch-to-dir -0
 | 
				
			||||||
	zle reset-prompt
 | 
						zle reset-prompt
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
zle -N insert-cycledright
 | 
					zle -N insert-cycledright
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user