From 4572bd02fa289b989de3d24e246be187dbd25f65 Mon Sep 17 00:00:00 2001 From: Panayiotis Kkolos Date: Sat, 8 Mar 2014 22:52:06 +0200 Subject: [PATCH] Fix *BSD support for terminal colours --- liquidprompt | 35 ++++++++++++++++++++++++----------- 1 file changed, 24 insertions(+), 11 deletions(-) diff --git a/liquidprompt b/liquidprompt index 6c2acfe..b782ef1 100755 --- a/liquidprompt +++ b/liquidprompt @@ -186,18 +186,31 @@ _lp_source_config() local ti_sgr0="$( { tput sgr0 || tput me ; } 2>/dev/null )" local ti_bold="$( { tput bold || tput md ; } 2>/dev/null )" local ti_setaf - if tput setaf >/dev/null 2>&1 ; then - ti_setaf () { tput setaf "$1" ; } - elif tput AF >/dev/null 2>&1 ; then - # *BSD - ti_setaf () { tput AF "$1" ; } - elif tput AF 1 >/dev/null 2>&1 ; then + local ti_setab + if tput setaf 0 >/dev/null 2>&1; then + ti_setaf() { tput setaf "$1" ; } + elif tput AF 0 >/dev/null 2>&1; then + # FreeBSD + ti_setaf() { tput AF "$1" ; } + elif tput AF 0 0 0 >/dev/null 2>&1; then # OpenBSD - ti_setaf () { tput AF "$1" ; } + ti_setaf() { tput AF "$1" 0 0 ; } else echo "liquidprompt: terminal $TERM not supported" >&2 ti_setaf () { : ; } fi + if tput setab 0 >/dev/null 2>&1; then + ti_setab() { tput setab "$1" ; } + elif tput AB 0 >/dev/null 2>&1; then + # FreeBSD + ti_setab() { tput AB "$1" ; } + elif tput AB 0 0 0 >/dev/null 2>&1; then + # OpenBSD + ti_setab() { tput AB "$1" 0 0 ; } + else + echo "liquidprompt: terminal $TERM not supported" >&2 + ti_setab() { : ; } + fi # Colors: variables are local so they will have a value only # during config loading and will not conflict with other values @@ -211,9 +224,9 @@ _lp_source_config() local RED="${_LP_OPEN_ESC}$(ti_setaf 1)${_LP_CLOSE_ESC}" local BOLD_RED="${_LP_OPEN_ESC}${ti_bold}$(ti_setaf 1)${_LP_CLOSE_ESC}" - local WARN_RED="${_LP_OPEN_ESC}$(ti_setaf 0 ; tput setab 1)${_LP_CLOSE_ESC}" - local CRIT_RED="${_LP_OPEN_ESC}${ti_bold}$(ti_setaf 7 ; tput setab 1)${_LP_CLOSE_ESC}" - local DANGER_RED="${_LP_OPEN_ESC}${ti_bold}$(ti_setaf 3 ; tput setab 1)${_LP_CLOSE_ESC}" + local WARN_RED="${_LP_OPEN_ESC}$(ti_setaf 0 ; ti_setab 1)${_LP_CLOSE_ESC}" + local CRIT_RED="${_LP_OPEN_ESC}${ti_bold}$(ti_setaf 7 ; ti_setab 1)${_LP_CLOSE_ESC}" + local DANGER_RED="${_LP_OPEN_ESC}${ti_bold}$(ti_setaf 3 ; ti_setab 1)${_LP_CLOSE_ESC}" local GREEN="${_LP_OPEN_ESC}$(ti_setaf 2)${_LP_CLOSE_ESC}" local BOLD_GREEN="${_LP_OPEN_ESC}${ti_bold}$(ti_setaf 2)${_LP_CLOSE_ESC}" @@ -233,7 +246,7 @@ _lp_source_config() # NO_COL is special: it will be used at runtime, not just during config loading NO_COL="${_LP_OPEN_ESC}${ti_sgr0}${_LP_CLOSE_ESC}" - unset ti_sgr0 ti_bold ti_setaf + unset ti_sgr0 ti_bold ti_setaf ti_setab # Default values (globals)