mirror of
				https://github.com/ohmyzsh/ohmyzsh.git
				synced 2025-11-04 13:21:19 +08:00 
			
		
		
		
	make pygmalion theme use two lines when needed
if the length of the prompt (excluding color escapes) exceeds 40 characters, emit the arrow prompt on its own line This helps a lot on smaller terminals
This commit is contained in:
		
							parent
							
								
									3e9493fb30
								
							
						
					
					
						commit
						77045230f4
					
				@ -1,9 +1,34 @@
 | 
			
		||||
# Yay! High voltage and arrows!
 | 
			
		||||
 | 
			
		||||
ZSH_THEME_GIT_PROMPT_PREFIX="%{$reset_color%}%{$fg[green]%}"
 | 
			
		||||
ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%} "
 | 
			
		||||
ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[yellow]%}⚡%{$reset_color%}"
 | 
			
		||||
ZSH_THEME_GIT_PROMPT_CLEAN=""
 | 
			
		||||
prompt_setup_pygmalion(){
 | 
			
		||||
  ZSH_THEME_GIT_PROMPT_PREFIX="%{$reset_color%}%{$fg[green]%}"
 | 
			
		||||
  ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%} "
 | 
			
		||||
  ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[yellow]%}⚡%{$reset_color%}"
 | 
			
		||||
  ZSH_THEME_GIT_PROMPT_CLEAN=""
 | 
			
		||||
 | 
			
		||||
  base_prompt='%{$fg[magenta]%}%n%{$reset_color%}%{$fg[cyan]%}@%{$reset_color%}%{$fg[yellow]%}%m%{$reset_color%}%{$fg[red]%}:%{$reset_color%}%{$fg[cyan]%}%0~%{$reset_color%}%{$fg[red]%}|%{$reset_color%}'
 | 
			
		||||
  post_prompt='%{$fg[cyan]%}⇒%{$reset_color%}  '
 | 
			
		||||
 | 
			
		||||
  base_prompt_nocolor=$(echo "$base_prompt" | perl -pe "s/%\{[^}]+\}//g")
 | 
			
		||||
  post_prompt_nocolor=$(echo "$post_prompt" | perl -pe "s/%\{[^}]+\}//g")
 | 
			
		||||
 | 
			
		||||
  add-zsh-hook precmd prompt_pygmalion_precmd
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
prompt_pygmalion_precmd(){
 | 
			
		||||
  local gitinfo=$(git_prompt_info)
 | 
			
		||||
  local gitinfo_nocolor=$(echo "$gitinfo" | perl -pe "s/%\{[^}]+\}//g")
 | 
			
		||||
  local exp_nocolor=$(print -P "$base_prompt_nocolor$gitinfo_nocolor$post_prompt_nocolor")
 | 
			
		||||
  local prompt_length=${#exp_nocolor}
 | 
			
		||||
 | 
			
		||||
  local nl=""
 | 
			
		||||
 | 
			
		||||
  if [[ $prompt_length -gt 40 ]]; then
 | 
			
		||||
    nl=$'\n%{\r%}';
 | 
			
		||||
  fi
 | 
			
		||||
  PROMPT="$base_prompt$gitinfo$nl$post_prompt"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
prompt_setup_pygmalion
 | 
			
		||||
 | 
			
		||||
PROMPT='%{$fg[magenta]%}%n%{$reset_color%}%{$fg[cyan]%}@%{$reset_color%}%{$fg[yellow]%}%m%{$reset_color%}%{$fg[red]%}:%{$reset_color%}%{$fg[cyan]%}%0~%{$reset_color%}%{$fg[red]%}|%{$reset_color%}$(git_prompt_info)%{$fg[cyan]%}⇒%{$reset_color%}  '
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user