mirror of https://gitlab.com/ceda_ei/wish
Refactor wish_append.
Use parameter splitting instead of splitting into array via grep. Speeds the prompt upto 2x in some cases.
This commit is contained in:
parent
ffe7975dfa
commit
886ec3bfaf
60
wish.sh
60
wish.sh
|
@ -35,37 +35,45 @@ function wish_init() {
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Usage: color_to_escape_code [3|4] color
|
||||||
|
#
|
||||||
|
# Parameters:
|
||||||
|
# - [3|4]: Use 3 if escape code is for foreground, 4 for background
|
||||||
|
# - color: -1 to reset, 0-255 for terminal color codes. 6 digit hexadecimal
|
||||||
|
# value for true color.
|
||||||
|
#
|
||||||
|
# Return value: Prints escape code that sets the fg/bg as requested.
|
||||||
|
function color_to_escape_code() {
|
||||||
|
local choice=$1
|
||||||
|
local color=$2
|
||||||
|
if [[ $color == -1 ]]; then
|
||||||
|
echo "\[\033[0;5;0m\]"
|
||||||
|
else
|
||||||
|
if [[ ${#fg_code} -eq 6 ]]; then
|
||||||
|
local r=$(( 16#${color:0:2} ))
|
||||||
|
local g=$(( 16#${color:2:2} ))
|
||||||
|
local b=$(( 16#${color:4:2} ))
|
||||||
|
echo "\[\033[${choice}8;2;$r;$g;${b}m\]"
|
||||||
|
else
|
||||||
|
echo "\[\033[${choice}8;5;${fg_code}m\]"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
# Usage: wish_append bg fg text
|
# Usage: wish_append bg fg text
|
||||||
|
#
|
||||||
|
# Parameters:
|
||||||
|
# - fg, bg: -1 to reset, 0-255 for terminal color codes. 6 digit hexadecimal
|
||||||
|
# value for true color.
|
||||||
|
# - text: Text of the plugin
|
||||||
|
#
|
||||||
|
# Return value: None
|
||||||
function wish_append() {
|
function wish_append() {
|
||||||
local bg_code=$1
|
local bg_code=$1
|
||||||
local fg_code=$2
|
local fg_code=$2
|
||||||
local text=$3
|
local text=$3
|
||||||
if [[ $fg_code == -1 ]]; then
|
local fg=$(color_to_escape_code 3 $fg_code)
|
||||||
local fg="\[\033[0;5;0m\]"
|
local bg=$(color_to_escape_code 4 $bg_code)
|
||||||
else
|
|
||||||
if [[ ${#fg_code} -eq 6 ]]; then
|
|
||||||
local color=($(echo $fg_code | grep -o .))
|
|
||||||
local r=$(( 16#${color[0]}${color[1]} ))
|
|
||||||
local g=$(( 16#${color[2]}${color[3]} ))
|
|
||||||
local b=$(( 16#${color[4]}${color[5]} ))
|
|
||||||
local fg="\[\033[38;2;$r;$g;${b}m\]"
|
|
||||||
else
|
|
||||||
local fg="\[\033[38;5;${fg_code}m\]"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
if [[ $bg_code == -1 ]]; then
|
|
||||||
local bg="\[\033[0;5;0m\]"
|
|
||||||
else
|
|
||||||
if [[ ${#bg_code} -eq 6 ]]; then
|
|
||||||
local color=($(echo $bg_code | grep -o .))
|
|
||||||
local r=$(( 16#${color[0]}${color[1]} ))
|
|
||||||
local g=$(( 16#${color[2]}${color[3]} ))
|
|
||||||
local b=$(( 16#${color[4]}${color[5]} ))
|
|
||||||
local bg="\[\033[48;2;$r;$g;${b}m\]"
|
|
||||||
else
|
|
||||||
local bg="\[\033[48;5;${bg_code}m\]"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ $fg_code == -1 ]]; then
|
if [[ $fg_code == -1 ]]; then
|
||||||
PS1="$PS1$fg${bg}$text"
|
PS1="$PS1$fg${bg}$text"
|
||||||
|
|
Loading…
Reference in New Issue