mirror of
				git://git.code.sf.net/p/zsh/code
				synced 2025-11-04 07:21:06 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			108 lines
		
	
	
	
		
			4.1 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			108 lines
		
	
	
	
		
			4.1 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
# adam2 prompt theme
 | 
						|
 | 
						|
prompt_adam2_help () {
 | 
						|
  cat <<'EOF'
 | 
						|
This prompt is color-scheme-able.  You can invoke it thus:
 | 
						|
 | 
						|
  prompt adam2 [ plain ] [<color1> [<color2> [<color3>]]]
 | 
						|
 | 
						|
where the colors are for the hyphens, current directory, and user@host
 | 
						|
bits respectively.  The default colors are cyan, green, and cyan.
 | 
						|
This theme works best with a dark background.
 | 
						|
 | 
						|
Recommended fonts for this theme: nexus or vga or similar.  If you
 | 
						|
don't have any of these, then specify the `plain' option to use 7-bit
 | 
						|
replacements for the 8-bit characters.
 | 
						|
 | 
						|
And you probably thought adam1 was overkill.
 | 
						|
EOF
 | 
						|
}
 | 
						|
 | 
						|
prompt_adam2_setup () {
 | 
						|
  # Some can't be local
 | 
						|
  local prompt_gfx_tlc prompt_gfx_mlc prompt_gfx_blc prompt_gfx_bbox 
 | 
						|
 | 
						|
  if [[ $1 == 'plain' ]]; then
 | 
						|
    shift
 | 
						|
    prompt_gfx_tlc='.'
 | 
						|
    prompt_gfx_mlc='|'
 | 
						|
    prompt_gfx_blc='\`'
 | 
						|
    prompt_gfx_hyphen='-'
 | 
						|
  else
 | 
						|
    prompt_gfx_tlc=$'\xda'
 | 
						|
    prompt_gfx_mlc=$'\xc3'
 | 
						|
    prompt_gfx_blc=$'\xc0'
 | 
						|
    prompt_gfx_hyphen=$'\xc4'
 | 
						|
  fi
 | 
						|
 | 
						|
  # Colour scheme
 | 
						|
  prompt_adam2_color1=${1:-'cyan'}    # hyphens
 | 
						|
  prompt_adam2_color2=${2:-'green'}   # current directory
 | 
						|
  prompt_adam2_color3=${3:-'cyan'}    # user@host
 | 
						|
 | 
						|
  prompt_gfx_tbox="%{$fg_bold[$prompt_adam2_color1]%}${prompt_gfx_tlc}%{$fg_no_bold[$prompt_adam2_color1]%}${prompt_gfx_hyphen}"
 | 
						|
  prompt_gfx_bbox="%{$fg_bold[$prompt_adam2_color1]%}${prompt_gfx_blc}${prompt_gfx_hyphen}%{$fg_no_bold[$prompt_adam2_color1]%}"
 | 
						|
 | 
						|
  # This is a cute hack.  Well I like it, anyway.
 | 
						|
  prompt_gfx_bbox_to_mbox=$(print -n "%{\e[A\r$fg_bold[$prompt_adam2_color1]${prompt_gfx_mlc}$fg_no_bold[$prompt_adam2_color1]${prompt_gfx_hyphen}\e[B%}")
 | 
						|
 | 
						|
  prompt_l_paren="%{$fg_bold[grey]%}("
 | 
						|
  prompt_r_paren="%{$fg_bold[grey]%})"
 | 
						|
 | 
						|
  prompt_machine="%{$fg_no_bold[$prompt_adam2_color3]%}%n%{$fg_bold[$prompt_adam2_color3]%}@%{$fg_no_bold[$prompt_adam2_color3]%}%m"
 | 
						|
 | 
						|
  prompt_padding_text=`perl -e "print qq{${prompt_gfx_hyphen}} x 200"`
 | 
						|
 | 
						|
  prompt_line_1a="$prompt_gfx_tbox$prompt_l_paren%{$fg_bold[$prompt_adam2_color2]%}%~$prompt_r_paren%{$fg_no_bold[$prompt_adam2_color1]%}"
 | 
						|
  prompt_line_1a_no_color=$(echo "$prompt_line_1a" | perl -pe 's/%{.*?%}//g')
 | 
						|
  prompt_line_1b="$prompt_l_paren$prompt_machine$prompt_r_paren%{$fg_no_bold[$prompt_adam2_color1]%}${prompt_gfx_hyphen}"
 | 
						|
  prompt_line_1b_no_color=$(echo "$prompt_line_1b" | perl -pe 's/%{.*?%}//g')
 | 
						|
 | 
						|
  prompt_line_2="$prompt_gfx_bbox${prompt_gfx_hyphen}%{$fg_bold[white]%}"
 | 
						|
 | 
						|
  prompt_char="%(!.#.>)"
 | 
						|
 | 
						|
  precmd () { prompt_adam2_precmd; setopt promptsubst }
 | 
						|
  preexec () { prompt_adam2_preexec }
 | 
						|
}
 | 
						|
 | 
						|
prompt_adam2_precmd () {
 | 
						|
  setopt noxtrace localoptions
 | 
						|
  local prompt_line_1a_no_color_expanded prompt_line_2a_no_color_expanded
 | 
						|
  local prompt_padding_size prompt_padding prompt_line_1 pre_prompt
 | 
						|
  local prompt_pwd_size
 | 
						|
 | 
						|
  prompt_line_1a_no_color_expanded=$(print -P "$prompt_line_1a_no_color")
 | 
						|
  prompt_line_1b_no_color_expanded=$(print -P "$prompt_line_1b_no_color")
 | 
						|
  prompt_padding_size=$(( $COLUMNS
 | 
						|
                            - $#prompt_line_1a_no_color_expanded 
 | 
						|
                            - $#prompt_line_1b_no_color_expanded ))
 | 
						|
 | 
						|
  if [[ $prompt_padding_size -ge 0 ]]; then
 | 
						|
    prompt_padding=$(printf "%$prompt_padding_size.${prompt_padding_size}s" "$prompt_padding_text")
 | 
						|
    prompt_line_1="$prompt_line_1a$prompt_padding$prompt_line_1b"
 | 
						|
  else
 | 
						|
    prompt_padding_size=$(( $COLUMNS
 | 
						|
                              - $#prompt_line_1a_no_color_expanded ))
 | 
						|
 | 
						|
    if [[ $prompt_padding_size -ge 0 ]]; then
 | 
						|
      prompt_padding=$(printf "%$prompt_padding_size.${prompt_padding_size}s" "$prompt_padding_text")
 | 
						|
      prompt_line_1="$prompt_line_1a$prompt_padding"
 | 
						|
    else
 | 
						|
      prompt_pwd_size=$(( $COLUMNS - 5 ))
 | 
						|
      prompt_line_1="$prompt_gfx_tbox$prompt_l_paren%{$fg_bold[$prompt_adam2_color2]%}%$prompt_pwd_size<...<%~%<<$prompt_r_paren%{$fg_no_bold[$prompt_adam2_color1]$prompt_gfx_hyphen%}"
 | 
						|
    fi
 | 
						|
  fi
 | 
						|
 | 
						|
  pre_prompt="$prompt_line_1$prompt_newline$prompt_line_2"
 | 
						|
 | 
						|
  PS1="$pre_prompt%{$fg_bold[white]%}$prompt_char "
 | 
						|
  PS2="$prompt_line_2%{$prompt_gfx_bbox_to_mbox$fg_bold[white]%}%_> "
 | 
						|
  PS3="$prompt_line_2%{$prompt_gfx_bbox_to_mbox$fg_bold[white]%}?# "
 | 
						|
}
 | 
						|
 | 
						|
prompt_adam2_preexec () {
 | 
						|
  print -n "$fg_no_bold[white]"
 | 
						|
}
 | 
						|
 | 
						|
prompt_adam2_setup "$@"
 |