Created
March 18, 2019 16:49
-
-
Save ActionScripted/6dd98177d625e6dae579e07b6e001f6b to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Solarized 2 (solarized but wanted a different name) | |
# --- | |
# | |
# Solarized prompt...that might be breaking the rules a bit. | |
# SOLARIZED HEX 16/8 TERMCOL XTERM/HEX L*A*B RGB HSB | |
# --------- ------- ---- ------- ----------- ---------- ----------- ----------- | |
# base03 #002b36 8/4 brblack 234 #1c1c1c 15 -12 -12 0 43 54 193 100 21 | |
# base02 #073642 0/4 black 235 #262626 20 -12 -12 7 54 66 192 90 26 | |
# base01 #586e75 10/7 brgreen 240 #585858 45 -07 -07 88 110 117 194 25 46 | |
# base00 #657b83 11/7 bryellow 241 #626262 50 -07 -07 101 123 131 195 23 51 | |
# base0 #839496 12/6 brblue 244 #808080 60 -06 -03 131 148 150 186 13 59 | |
# base1 #93a1a1 14/4 brcyan 245 #8a8a8a 65 -05 -02 147 161 161 180 9 63 | |
# base2 #eee8d5 7/7 white 254 #e4e4e4 92 -00 10 238 232 213 44 11 93 | |
# base3 #fdf6e3 15/7 brwhite 230 #ffffd7 97 00 10 253 246 227 44 10 99 | |
# yellow #b58900 3/3 yellow 136 #af8700 60 10 65 181 137 0 45 100 71 | |
# orange #cb4b16 9/3 brred 166 #d75f00 50 50 55 203 75 22 18 89 80 | |
# red #d30102 1/1 red 124 #af0000 45 70 60 211 1 2 0 99 83 | |
# magenta #d33682 5/5 magenta 125 #af005f 50 65 -05 211 54 130 331 74 83 | |
# violet #6c71c4 13/5 brmagenta 61 #5f5faf 50 15 -45 108 113 196 237 45 77 | |
# blue #268bd2 4/4 blue 33 #0087ff 55 -10 -45 38 139 210 205 82 82 | |
# cyan #2aa198 6/6 cyan 37 #00afaf 60 -35 -05 42 161 152 175 74 63 | |
# green #859900 2/2 green 64 #5f8700 60 -20 65 133 153 0 68 100 60 | |
# | |
# The "%{...%}" is to help with prompt line length/position. | |
# If you don't do this, auto-complete (tab) will not position | |
# suggestions properly. | |
# | |
# http://zsh.sourceforge.net/Doc/Release/Prompt-Expansion.html | |
# https://stackoverflow.com/questions/4842424/list-of-ansi-color-escape-sequences | |
# https://wiki.archlinux.org/index.php/zsh | |
sfp_prev_bg='' | |
sfp_prev_fg='' | |
# Default output styles | |
sfp_reset() { | |
echo -n "%{\033[0m%}" | |
} | |
# Prefix output with color and styles | |
# $1 = fg, $2 = bg, $3 = style, $4 = output | |
sfp_segment() { | |
local bg="\033[48;5;$2m" | |
local fg="\033[38;5;$1m" | |
local style | |
sfp_prev_bg=$2 | |
sfp_prev_fg=$1 | |
for s in ${(s.,.)3}; do | |
case $s in | |
(blink) style+='\033[5m' ;; | |
(bold) style+='\033[1m' ;; | |
(faint) style+='\033[2m' ;; | |
(italic) style+='\033[3m' ;; | |
(normal) style+='\033[0m' ;; | |
(strike) style+='\033[9m' ;; | |
(underline) style+='\033[4m' ;; | |
esac | |
done | |
sfp_reset | |
echo -n "%{$style$fg$bg%}$4" | |
} | |
# The fancy arrow thing between items | |
sfp_separator() { | |
local bg="\033[48;5;$2m" | |
local fg="\033[38;5;$1m" | |
sfp_reset | |
echo -n "%{$fg$bg%}\ue0b0" | |
} | |
# Build our prompt | |
sfp_build() { | |
RETVAL=$? | |
local job_count=$(jobs -l | wc -l | tr -d ' ') | |
sfp_segment 7 10 'normal' ' %n' | |
sfp_segment 7 10 'faint' '@' | |
sfp_segment 7 10 'normal' '%m ' | |
if [[ -n $VIRTUAL_ENV && -n $VIRTUAL_ENV_DISABLE_PROMPT ]]; then | |
sfp_separator $sfp_prev_bg 6 | |
sfp_segment 7 6 'normal' " `basename $VIRTUAL_ENV` " | |
fi | |
if [[ $job_count -gt 0 ]]; then | |
sfp_separator $sfp_prev_bg 13 | |
sfp_segment 7 13 'normal' " $job_count " | |
fi | |
if [[ $RETVAL -ne 0 ]]; then | |
sfp_separator $sfp_prev_bg 9 | |
sfp_segment 15 9 'normal' " $RETVAL " | |
fi | |
if (( $+commands[git] )); then | |
if $(git rev-parse --is-inside-work-tree >/dev/null 2>&1); then | |
local mode='' | |
local ref=$(git symbolic-ref HEAD 2> /dev/null) || ref="➦ $(git rev-parse --short HEAD 2> /dev/null)" | |
local repo_path=$(git rev-parse --git-dir 2>/dev/null) | |
local segment_bg=12 | |
if [[ -n $(parse_git_dirty) ]]; then segment_bg=4; fi | |
if [[ -e "${repo_path}/BISECT_LOG" ]]; then | |
mode=" <B>" | |
elif [[ -e "${repo_path}/MERGE_HEAD" ]]; then | |
mode=" >M<" | |
elif [[ -e "${repo_path}/rebase" || -e "${repo_path}/rebase-apply" || -e "${repo_path}/rebase-merge" || -e "${repo_path}/../.dotest" ]]; then | |
mode=" >R>" | |
fi | |
setopt promptsubst | |
autoload -Uz vcs_info | |
zstyle ':vcs_info:*' enable git | |
zstyle ':vcs_info:*' get-revision true | |
zstyle ':vcs_info:*' check-for-changes true | |
zstyle ':vcs_info:*' stagedstr '✚' | |
zstyle ':vcs_info:*' unstagedstr '●' | |
zstyle ':vcs_info:*' formats ' %u%c' | |
zstyle ':vcs_info:*' actionformats ' %u%c' | |
vcs_info | |
sfp_separator $sfp_prev_bg $segment_bg | |
sfp_segment 15 $segment_bg 'faint' " \ue0a0 " | |
sfp_segment 15 $segment_bg 'normal' "${ref/refs\/heads\//}" | |
sfp_segment 15 $segment_bg 'normal' "${vcs_info_msg_0_%% }${mode} " | |
fi | |
fi | |
sfp_separator $sfp_prev_bg 0 | |
sfp_segment 14 0 'normal' ' %~ ' | |
sfp_separator $sfp_prev_bg 8 | |
echo '' | |
sfp_segment 14 0 'normal' ' %(!.#.$) ' | |
sfp_separator $sfp_prev_bg 8 | |
sfp_segment 0 8 'normal' ' ' | |
sfp_reset | |
#echo -n "%{%f%k%}" | |
sfp_segment 2 8 'normal' '' | |
} | |
# Assign to prompts | |
PROMPT='%{%f%b%k%}$(sfp_build)' | |
# LS colors | |
LSCOLORS='exfxcxdxbxegedabagacad' | |
# Zsh to use the same colors as ls | |
zstyle ':completion:*' list-colors ${(s.:.)LS_COLORS} | |
function precmd() { | |
# Print a newline before the prompt, unless it's the | |
# first prompt in the process. | |
# TODO: suppress when "clear" called | |
if [ -z "$NEW_LINE_BEFORE_PROMPT" ]; then | |
NEW_LINE_BEFORE_PROMPT=1 | |
elif [ "$NEW_LINE_BEFORE_PROMPT" -eq 1 ]; then | |
echo '' | |
fi | |
} | |
# Reset term before output | |
preexec () { echo -ne "\e[0m" } | |
VIRTUAL_ENV_DISABLE_PROMPT=1 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment