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 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 () { | ||||
| 	emulate -L zsh | ||||
| 	setopt nopushdminus | ||||
|  | ||||
| 	builtin pushd -q +1 &>/dev/null || true | ||||
| 	switch-to-dir +1 | ||||
| 	zle reset-prompt | ||||
| } | ||||
| zle -N insert-cycledleft | ||||
| @@ -21,7 +31,7 @@ insert-cycledright () { | ||||
| 	emulate -L zsh | ||||
| 	setopt nopushdminus | ||||
|  | ||||
| 	builtin pushd -q -0 &>/dev/null || true | ||||
| 	switch-to-dir -0 | ||||
| 	zle reset-prompt | ||||
| } | ||||
| zle -N insert-cycledright | ||||
|   | ||||
		Reference in New Issue
	
	Block a user