diff options
author | Dennis Eriksen <dennis@eriksen.im> | 2015-06-29 13:45:48 +0200 |
---|---|---|
committer | Dennis Eriksen <dennis@eriksen.im> | 2015-06-29 13:45:48 +0200 |
commit | be2194ae1244bf2787d64d4aed8ab1d20a6c6e92 (patch) | |
tree | b72d81dc4f943a5da66b8479500499643efa6719 /prompt_adam1_setup | |
parent | Initial commit (diff) | |
download | adam3-be2194ae1244bf2787d64d4aed8ab1d20a6c6e92.tar.gz |
adam3 is based upon adam1 from the zsh repo
Diffstat (limited to 'prompt_adam1_setup')
-rw-r--r-- | prompt_adam1_setup | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/prompt_adam1_setup b/prompt_adam1_setup new file mode 100644 index 0000000..aca0e59 --- /dev/null +++ b/prompt_adam1_setup @@ -0,0 +1,54 @@ +# adam1 prompt theme + +prompt_adam1_help () { + cat <<'EOF' +This prompt is color-scheme-able. You can invoke it thus: + + prompt adam1 [<color1> [<color2> [<color3>]]] + +where the colors are for the user@host background, current working +directory, and current working directory if the prompt is split over +two lines respectively. The default colors are blue, cyan and green. +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. +EOF +} + +prompt_adam1_setup () { + prompt_adam1_color1=${1:-'blue'} + prompt_adam1_color2=${2:-'cyan'} + prompt_adam1_color3=${3:-'green'} + + base_prompt="%K{$prompt_adam1_color1}%n@%m%k " + post_prompt="%b%f%k" + + setopt localoptions extendedglob + base_prompt_no_color="${base_prompt//(%K{[^\\\}]#\}|%k)/}" + post_prompt_no_color="${post_prompt//(%K{[^\\\}]#\}|%k)/}" + + add-zsh-hook precmd prompt_adam1_precmd +} + +prompt_adam1_precmd () { + setopt noxtrace localoptions + local base_prompt_expanded_no_color base_prompt_etc + local prompt_length space_left + + base_prompt_expanded_no_color=$(print -P "$base_prompt_no_color") + base_prompt_etc=$(print -P "$base_prompt%(4~|...|)%3~") + prompt_length=${#base_prompt_etc} + if [[ $prompt_length -lt 40 ]]; then + path_prompt="%B%F{$prompt_adam1_color2}%(4~|...|)%3~%F{white}" + else + space_left=$(( $COLUMNS - $#base_prompt_expanded_no_color - 2 )) + path_prompt="%B%F{$prompt_adam1_color3}%${space_left}<...<%~$prompt_newline%F{white}" + fi + PS1="$base_prompt$path_prompt %# $post_prompt" + PS2="$base_prompt$path_prompt %_> $post_prompt" + PS3="$base_prompt$path_prompt ?# $post_prompt" +} + +prompt_adam1_setup "$@" |