fix wrong staged status detection, add a way to debug the thing
This commit is contained in:
		
							parent
							
								
									bd607383aa
								
							
						
					
					
						commit
						1a4ea1bd0f
					
				
					 1 changed files with 12 additions and 8 deletions
				
			
		
							
								
								
									
										20
									
								
								bashplugins
									
										
									
									
									
								
							
							
						
						
									
										20
									
								
								bashplugins
									
										
									
									
									
								
							| 
						 | 
					@ -25,9 +25,6 @@ gdf()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
git_prompt()
 | 
					git_prompt()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    # FIXME:
 | 
					 | 
				
			||||||
    # upon the first traverse into the git repository, we always get staged
 | 
					 | 
				
			||||||
    # count instead of unstaged, that is weird
 | 
					 | 
				
			||||||
    prompt_command
 | 
					    prompt_command
 | 
				
			||||||
    if ! raw_status="$(git status --porcelain -bu 2>/dev/null)"; then
 | 
					    if ! raw_status="$(git status --porcelain -bu 2>/dev/null)"; then
 | 
				
			||||||
        return
 | 
					        return
 | 
				
			||||||
| 
						 | 
					@ -38,6 +35,8 @@ git_prompt()
 | 
				
			||||||
    untracked_count=0
 | 
					    untracked_count=0
 | 
				
			||||||
    unmerged_count=0
 | 
					    unmerged_count=0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    IFS=
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    while read line; do
 | 
					    while read line; do
 | 
				
			||||||
        if [[ "${line:0:2}" == '##' ]]; then
 | 
					        if [[ "${line:0:2}" == '##' ]]; then
 | 
				
			||||||
            read branch_info <<< "${line:3}"
 | 
					            read branch_info <<< "${line:3}"
 | 
				
			||||||
| 
						 | 
					@ -49,14 +48,17 @@ git_prompt()
 | 
				
			||||||
    done <<< "${raw_status}"
 | 
					    done <<< "${raw_status}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    (( $unstaged_count > 0 )) && git_status+="${pmagenta}~${unstaged_count}"
 | 
					    (( $unstaged_count > 0 )) && git_status+="${pmagenta}~${unstaged_count}"
 | 
				
			||||||
    (( $staged_count > 0 )) && git_status+="${pyellow}+${staged_count}"
 | 
					    (( $staged_count > 0 )) && git_status+="${pgreen}+${staged_count}"
 | 
				
			||||||
    (( $untracked_count > 0 )) && git_status+="${pcyan}?${untracked_count}"
 | 
					    (( $untracked_count > 0 )) && git_status+="${pyellow}-${untracked_count}"
 | 
				
			||||||
    (( $unmerged_count > 0 )) && git_status+="${pred}!${unmerged_count}"
 | 
					    (( $unmerged_count > 0 )) && git_status+="${pred}*${unmerged_count}"
 | 
				
			||||||
    [[ -z "${git_status}" ]] && git_status='.'
 | 
					    [[ -z "${git_status}" ]] && git_status='.'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    full_status="{ ${pblue}${branch_info}${preset} | ${git_status}${preset} }"
 | 
					    full_status="{ ${pblue}${branch_info}${preset} | ${git_status}${preset} }"
 | 
				
			||||||
    IFS="$ifs_temp"
 | 
					    if [[ -n "${OLD_PROMPT}" ]]; then
 | 
				
			||||||
    PS1="${ps_line1} ${full_status}\n${ps_line2}"
 | 
					        PS1="${ps_line1} ${full_status}\n${ps_line2}"
 | 
				
			||||||
 | 
					    else
 | 
				
			||||||
 | 
					        echo ${full_status}
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
gitmode()
 | 
					gitmode()
 | 
				
			||||||
| 
						 | 
					@ -69,3 +71,5 @@ gitmode()
 | 
				
			||||||
        PROMPT_COMMAND=git_prompt
 | 
					        PROMPT_COMMAND=git_prompt
 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					gitmode
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue