dotfiles/dotfiles/lib/zsh/prompt.sh

124 lines
3.3 KiB
Bash
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

##### COLOR SETUP
autoload -U colors && colors
# P.C. Shyamshankar <sykora@lucentbeing.com>
# Copied from
# http://github.com/sykora/etc/blob/master/zsh/functions/spectrum/
typeset -Ag FX FG BG
FX=(
reset "%{%}"
bold "%{%}" no-bold "%{%}"
italic "%{%}" no-italic "%{%}"
underline "%{%}" no-underline "%{%}"
blink "%{%}" no-blink "%{%}"
reverse "%{%}" no-reverse "%{%}"
)
for color in {000..255}; do
FG[$color]="%{[38;5;${color}m%}"
BG[$color]="%{[48;5;${color}m%}"
done
# Show all 256 colors with color number
function spectrum_ls {
for code in {000..255}; do
print -P -- "$code: %{$FG[$code]Test%f%}"
done
}
#####
function current_directory {
local PWD=$(pwd)
echo "${PWD/#$HOME/~}"
}
function git_prompt_info {
if test -z $(git branch-or-sha);
then
echo ""
else
local b="$(print_with_color $(git branch-or-sha) $SOURCE_CONTROL_COLOR)"
echo " $(separator "on") $b$(git_status_character)"
fi
}
function git_status_character {
if git dirty;
then
print_with_color "✘" "$fg[red]"
else
print_with_color "✔" "$fg[green]"
fi
}
function command_line_character {
if ! test -z $(git branch-or-sha);
then
echo "±"
else
echo "○"
fi
}
export PROMPT_CHAR_ERROR="$fg[red]"
export PROMPT_CHAR_SUCCESS="$fg[green]"
function prompt_custom_colors {
export USERNAME_COLOR="$FG[040]"
export SEPARATOR_COLOR="$FG[239]"
export HOSTNAME_COLOR="$FG[033]"
export CURRENT_DIRECTORY_COLOR="$FG[226]"
export CURRENT_DIRECTORY_COLOR="$FG[255]"
}
function prompt_basic_colors {
export USERNAME_COLOR="$fg_no_bold[green]"
export SEPARATOR_COLOR="$fg_no_bold[black]"
export HOSTNAME_COLOR="$fg_no_bold[blue]"
export CURRENT_DIRECTORY_COLOR="$fg[yellow]"
export SOURCE_CONTROL_COLOR="$fg[white]"
}
function prompt_solarized_colors {
prompt_basic_colors
export HOSTNAME_COLOR="$fg[magenta]"
export USERNAME_COLOR="$fg[blue]"
export CURRENT_DIRECTORY_COLOR="$fg[red]"
export SOURCE_CONTROL_COLOR="$fg[white]"
}
function prompt_tomorrow_colors {
export SEPARATOR_COLOR="$fg[cyan]"
export HOSTNAME_COLOR="$fg[yellow]"
export USERNAME_COLOR="$fg[blue]"
export CURRENT_DIRECTORY_COLOR="$fg[red]"
export SOURCE_CONTROL_COLOR="$fg[white]"
}
function prompt_monokai_colors {
export SEPARATOR_COLOR="$fg[black]"
export HOSTNAME_COLOR="$fg[blue]"
export USERNAME_COLOR="$fg[red]"
export CURRENT_DIRECTORY_COLOR="$fg[magenta]"
export SOURCE_CONTROL_COLOR="$fg[white]"
}
function prompt_basic_colors_with_grey_separator {
prompt_basic_colors
export SEPARATOR_COLOR="$FG[239]"
}
function print_with_color {
echo "%{$2%}$1%{$reset_color%}"
}
function separator {
print_with_color "$1" "$SEPARATOR_COLOR"
}
prompt_basic_colors_with_grey_separator
# For reasons which are currently beyond me,
PROMPT='⚡ % $(print_with_color "%n" "$USERNAME_COLOR") $(separator "at") $(print_with_color "`hostname -s`" "$HOSTNAME_COLOR") $(separator "in") $(print_with_color "`current_directory`" "$CURRENT_DIRECTORY_COLOR")$(git_prompt_info)
%(?.$(print_with_color "$(command_line_character) " $PROMPT_CHAR_SUCCESS).$(print_with_color "$(command_line_character) " $PROMPT_CHAR_ERROR)) '
PS2='(%_) '