aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorDennis Eriksen <dennis@eriksen.im>2016-06-06 14:44:54 +0200
committerDennis Eriksen <dennis@eriksen.im>2016-06-06 14:44:54 +0200
commitb13d650df5e4b6864bd02a639a6a71543093e335 (patch)
treea34c8d236d16a2e61b3bbef3acf86915f3687a27
parentadding multicolouring based on hostname (diff)
parentlets add some VCS info (diff)
downloadadam3-b13d650df5e4b6864bd02a639a6a71543093e335.tar.gz
pull up adam3
-rw-r--r--README.md9
-rw-r--r--prompt_adam3_setup34
2 files changed, 36 insertions, 7 deletions
diff --git a/README.md b/README.md
index e69de29..d6ad081 100644
--- a/README.md
+++ b/README.md
@@ -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 "$@"