| @@ -59,39 +59,36 @@ precmd.is_git_repo() { | ||||
| } | ||||
|  | ||||
| precmd.git() { | ||||
| 	declare git_unstaged git_untracked git_status_short git_status_colour git_prompt_msg | ||||
| 	declare git_branch_info git_unstaged git_untracked git_status_short git_status_colour git_prompt_msg | ||||
|  | ||||
| 	if [[ -f .novcsprompt ]]; then | ||||
| 		return 0 | ||||
| 	fi | ||||
| 	[[ -f .novcsprompt ]] && return 0 | ||||
| 	precmd.is_git_repo || return 0 | ||||
|  | ||||
| 	if precmd.is_git_repo; then | ||||
| 		git_current_branch=$(git rev-parse --abbrev-ref HEAD) | ||||
| 		 | ||||
| 		while IFS= read -r line; do | ||||
| 			case $line in | ||||
| 				' M'*|A*|D*) git_unstaged=1;; | ||||
| 				\?\?*) git_untracked=1;; | ||||
| 			esac | ||||
| 		done < <( git status --short ) | ||||
| 	declare line | ||||
| 	while IFS= read -r line; do | ||||
| 		[[ $line[1,2] == '##' ]] && git_branch_info=$line[4,-1] | ||||
| 		[[ $line[1,2] == '??' ]] && (( git_untracked++ )) | ||||
| 		[[ $line[1,2] =~ .[MD] ]] && (( git_unstaged++ )) | ||||
| 	done < <(git status --porcelain -bu 2>/dev/null) | ||||
|  | ||||
| 		(( git_unstaged )) && { | ||||
| 			git_status_short+='c' | ||||
| 			git_status_colour='red' | ||||
| 		} | ||||
| 	git_branch_name=${git_branch_info%%...*} | ||||
|  | ||||
| 		(( git_untracked )) && { | ||||
| 			git_status_short+='f' | ||||
| 			git_status_colour='red' | ||||
| 		} | ||||
| 	(( git_unstaged )) && { | ||||
| 		git_status_short+='c' | ||||
| 		git_status_colour='red' | ||||
| 	} | ||||
|  | ||||
| 		git_status_short=${git_status_short:-"ok"} | ||||
| 		git_status_colour=${git_status_colour:-"green"} | ||||
| 	(( git_untracked )) && { | ||||
| 		git_status_short+='f' | ||||
| 		git_status_colour='red' | ||||
| 	} | ||||
|  | ||||
| 		git_prompt_msg="(%F{cyan}$git_current_branch%f[%F{$git_status_colour}${git_status_short}%f]) " | ||||
| 	git_status_short=${git_status_short:-"ok"} | ||||
| 	git_status_colour=${git_status_colour:-"green"} | ||||
|  | ||||
| 		printf '%s' $git_prompt_msg | ||||
| 	fi | ||||
| 	git_prompt_msg="(%F{cyan}$git_branch_name%f[%F{$git_status_colour}${git_status_short}%f]) " | ||||
|  | ||||
| 	printf '%s' $git_prompt_msg | ||||
| } | ||||
|  | ||||
| rprompt() { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user