39 lines
978 B
Text
39 lines
978 B
Text
|
#!/usr/bin/zsh
|
||
|
# Return a prompt string with appropriate color escapes
|
||
|
# Eryn Wells <eryn@erynwells.me>
|
||
|
|
||
|
local bold=0
|
||
|
local foreground=''
|
||
|
local background=''
|
||
|
|
||
|
while getopts 'bf:k:' opt; do
|
||
|
case $opt in
|
||
|
b) bold=1;;
|
||
|
f) foreground=$OPTARG;;
|
||
|
k) background=$OPTARG;;
|
||
|
*) echo "Unknown option: $opt" 1>&2; return -1;;
|
||
|
esac
|
||
|
done
|
||
|
|
||
|
local str=$@[$OPTIND,${#@}]
|
||
|
|
||
|
autoload -U is-at-least
|
||
|
if is-at-least '4.3.7'; then
|
||
|
[[ -n "$foreground" ]] && str="%F{$foreground}$str%f"
|
||
|
[[ -n "$background" ]] && str="%K{$background}$str%k"
|
||
|
[[ $bold -eq 1 ]] && str="%B$str%b"
|
||
|
else
|
||
|
local fg_hash bg_hash
|
||
|
if [[ $bold -eq 1 ]]; then
|
||
|
fg_hash='fg_bold'
|
||
|
bg_hash='bg_bold'
|
||
|
else
|
||
|
fg_hash='fg_no_bold'
|
||
|
bg_hash='bg_no_bold'
|
||
|
fi
|
||
|
[[ -n "$foreground" ]] && str="%{\$${fg_hash}[$foreground]%}$str%{\$reset_color%}"
|
||
|
[[ -n "$background" ]] && str="%%{\$${bg_hash}[$background]%}$str%{\$reset_color%}"
|
||
|
fi
|
||
|
|
||
|
print $str
|