diff options
author | Dennis Eriksen <dennis@eriksen.im> | 2016-06-06 14:44:54 +0200 |
---|---|---|
committer | Dennis Eriksen <dennis@eriksen.im> | 2016-06-06 14:44:54 +0200 |
commit | b13d650df5e4b6864bd02a639a6a71543093e335 (patch) | |
tree | a34c8d236d16a2e61b3bbef3acf86915f3687a27 | |
parent | adding multicolouring based on hostname (diff) | |
parent | lets add some VCS info (diff) | |
download | adam3-b13d650df5e4b6864bd02a639a6a71543093e335.tar.gz |
pull up adam3
-rw-r--r-- | README.md | 9 | ||||
-rw-r--r-- | prompt_adam3_setup | 34 |
2 files changed, 36 insertions, 7 deletions
@@ -0,0 +1,9 @@ +A prompt which gives you different colors depending on the hostname of your +current host. This might be useful if you visit a large number of hosts, and +want some way to quickly and easily determine that you might be on the wrong +host. + +This project is still in very early development. + +If you wish to test this, plase prompt_adam3_setup in your ``$fpath``, and run +``prompt adam3``. diff --git a/prompt_adam3_setup b/prompt_adam3_setup index 94e430f..5f7fa67 100644 --- a/prompt_adam3_setup +++ b/prompt_adam3_setup @@ -11,27 +11,37 @@ EOF } prompt_adam3_setup () { + + autoload -Uz vcs_info + + # colors prompt_adam3_color1=${1:-'multi'} prompt_adam3_color2=${2:-'blue'} prompt_adam3_color3=${3:-'cyan'} prompt_adam3_color4=${4:-'green'} + # Change color of host, based on hostname if [[ $prompt_adam3_color1 == 'multi' ]]; then prompt_adam3_hostnamecolor=$(hostname | od | tr ' ' '\n' | awk '{total = total + $1}END{print 1 + (total % 24)}') prompt_adam3_hostnamebold=$(hostname | od | tr ' ' '\n' | awk '{total = total + $1}END{print 1 + (total % 2)}') - # hor testing purposes + # for testing purposes #prompt_adam3_hostnamecolor=$(( ( $RANDOM % 24 ) + 1 )) #prompt_adam3_hostnamebold=$(( $RANDOM % 2 )) + # Possible prompt colors prompt_adam3_hostnamecolors=(black,red black,green black,yellow black,blue black,magenta black,cyan red,white red,yellow red,cyan green,black green,blue yellow,black yellow,blue blue,white blue,red blue,yellow magenta,white magenta,yellow cyan,white cyan,blue white,black white,red white,blue white,magenta) + # This is where we set up the actual prompt. base_hostname_prompt="%K{${${prompt_adam3_hostnamecolors[$prompt_adam3_hostnamecolor]}%,*}}%F{${${prompt_adam3_hostnamecolors[$prompt_adam3_hostnamecolor]}##*,}}%m%f%k" + + # this will set the hostname in bold in 50% of the time if [[ $prompt_adam3_hostnamebold -eq 1 ]]; then base_hostname_prompt="%B$base_hostname_prompt%b"; fi else + # If one wants a specific color, just set ut, plain and simple base_hostname_prompt="%K{$prompt_adam3_color1}%m%k" fi @@ -39,6 +49,7 @@ prompt_adam3_setup () { base_prompt="%K{$prompt_adam3_color2}%n@%k$base_hostname_prompt " post_prompt="%b%f%k" + # localoptions allows us to use extendedglob here, and not outside this function. setopt localoptions extendedglob base_prompt_no_color="${base_prompt//(%K{[^\\\}]#\}|%k)/}" post_prompt_no_color="${post_prompt//(%K{[^\\\}]#\}|%k)/}" @@ -48,8 +59,13 @@ prompt_adam3_setup () { prompt_adam3_precmd () { # setopt noxtrace localoptions + zstyle ':vcs_info:*' enable git svn + zstyle ':vcs_info:*' check-for-changes true + zstyle ':vcs_info:*' formats "%F{grey}%s %F{green}%b%{$reset_color%} %F{red}%m%u%c%f" + #zstyle ':vcs_info:git*' actionformats "%s %r/%S %b %m%u%c " + vcs_info local base_prompt_expanded_no_color base_prompt_etc - local prompt_length space_left + local prompt_length space_left promptchar base_prompt_expanded_no_color=$(print -P "$base_prompt_no_color") base_prompt_etc=$(print -P "$base_prompt%(4~|...|)%3~") @@ -58,14 +74,18 @@ prompt_adam3_precmd () { # Changing the prompt based on the length of the prompt, should happen based # on how long it actually is. The method below will need to be changed. if [[ $prompt_length -lt 69 ]]; then - path_prompt="%B%F{$prompt_adam3_color3}%(4~|...|)%3~%F{white}" + path_prompt="%B%F{$prompt_adam3_color3}%(4~|...|)%3~%F{white}%b" else space_left=$(( $COLUMNS - $#base_prompt_expanded_no_color - 2 )) - path_prompt="%B%F{$prompt_adam3_color4}%${space_left}<...<%~$prompt_newline%F{white}" + path_prompt="%B%F{$prompt_adam3_color4}%${space_left}<...<%~$prompt_newline%F{white}%b" fi - PS1="$base_prompt$path_prompt %# $post_prompt" - PS2="$base_prompt$path_prompt %_> $post_prompt" - PS3="$base_prompt$path_prompt ?# $post_prompt" + + # make promptchar bold red if root + if [[ $EUID == 0 ]]; then promptchar="%F{red}%B%#%b%f"; else promptchar="%B%#%b"; fi + + PS1="$base_prompt$path_prompt${vcs_info_msg_0_} $promptchar $post_prompt" + PS2="$base_prompt$path_prompt${vcs_info_msg_0_} %_> $post_prompt" + PS3="$base_prompt$path_prompt${vcs_info_msg_0_} ?# $post_prompt" } prompt_adam3_setup "$@" |