aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/prompt_adam1_setup
diff options
context:
space:
mode:
authorDennis Eriksen <dennis@eriksen.im>2015-06-29 13:45:48 +0200
committerDennis Eriksen <dennis@eriksen.im>2015-06-29 13:45:48 +0200
commitbe2194ae1244bf2787d64d4aed8ab1d20a6c6e92 (patch)
treeb72d81dc4f943a5da66b8479500499643efa6719 /prompt_adam1_setup
parentInitial commit (diff)
downloadadam3-be2194ae1244bf2787d64d4aed8ab1d20a6c6e92.tar.gz
adam3 is based upon adam1 from the zsh repo
Diffstat (limited to 'prompt_adam1_setup')
-rw-r--r--prompt_adam1_setup54
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 "$@"