mirror of
				https://github.com/ohmyzsh/ohmyzsh.git
				synced 2025-11-04 13:21:19 +08:00 
			
		
		
		
	Switch to normal zsh %F/%f prompt escapes to avoid "eval" and extra variables. Wrap whole thing in anonymous function so the existing `local` statements actually work. Then switch '...' to eager "..." so stuff actually works with local variables. And local-ize the remaining variables that are used only in prompt construction.
		
			
				
	
	
		
			51 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			51 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
# ZSH Theme - Preview: http://dl.dropbox.com/u/4109351/pics/gnzh-zsh-theme.png
 | 
						||
# Based on bira theme
 | 
						||
 | 
						||
setopt prompt_subst
 | 
						||
 | 
						||
() {
 | 
						||
 | 
						||
local PR_USER PR_USER_OP PR_PROMPT PR_HOST
 | 
						||
 | 
						||
# Check the UID
 | 
						||
if [[ $UID -ne 0 ]]; then # normal user
 | 
						||
  PR_USER='%F{green}%n%f'
 | 
						||
  PR_USER_OP='%F{green}%#%f'
 | 
						||
  PR_PROMPT='%f➤ %f'
 | 
						||
else # root
 | 
						||
  PR_USER='%F{red}%n%f'
 | 
						||
  PR_USER_OP='%F{red}%#%f'
 | 
						||
  PR_PROMPT='%F{red}➤ %f'
 | 
						||
fi
 | 
						||
 | 
						||
# Check if we are on SSH or not
 | 
						||
if [[ -n "$SSH_CLIENT"  ||  -n "$SSH2_CLIENT" ]]; then
 | 
						||
  PR_HOST='%F{red}%M%f' # SSH
 | 
						||
else
 | 
						||
  PR_HOST='%F{green}%M%f' # no SSH
 | 
						||
fi
 | 
						||
 | 
						||
 | 
						||
local return_code="%(?..%F{red}%? ↵%f)"
 | 
						||
 | 
						||
local user_host="${PR_USER}%F{cyan}@${PR_HOST}"
 | 
						||
local current_dir="%B%F{blue}%~%f%b"
 | 
						||
local rvm_ruby=''
 | 
						||
if ${HOME}/.rvm/bin/rvm-prompt &> /dev/null; then # detect user-local rvm installation
 | 
						||
  rvm_ruby='%F{red}‹$(${HOME}/.rvm/bin/rvm-prompt i v g s)›%f'
 | 
						||
elif which rvm-prompt &> /dev/null; then # detect system-wide rvm installation
 | 
						||
  rvm_ruby='%F{red}‹$(rvm-prompt i v g s)›%f'
 | 
						||
elif which rbenv &> /dev/null; then # detect Simple Ruby Version Management
 | 
						||
  rvm_ruby='%F{red}‹$(rbenv version | sed -e "s/ (set.*$//")›%f'
 | 
						||
fi
 | 
						||
local git_branch='$(git_prompt_info)'
 | 
						||
 | 
						||
PROMPT="╭─${user_host} ${current_dir} ${rvm_ruby} ${git_branch}
 | 
						||
╰─$PR_PROMPT "
 | 
						||
RPROMPT="${return_code}"
 | 
						||
 | 
						||
ZSH_THEME_GIT_PROMPT_PREFIX="%F{yellow}‹"
 | 
						||
ZSH_THEME_GIT_PROMPT_SUFFIX="› %f"
 | 
						||
 | 
						||
}
 |