From: Vincent Le Gallic Date: Thu, 25 Jul 2013 19:55:30 +0000 (+0200) Subject: Fin du déshardcodage des couleurs. X-Git-Url: http://gitweb.pimeys.fr/?a=commitdiff_plain;h=30b1fd7c22ebbba675764a1619ee5a915c121715;p=config-20-100.git Fin du déshardcodage des couleurs. On garde une version de la couleur sans les \[ \] et une version _prompt avec. --- diff --git a/.bashrc b/.bashrc index d3d5e47..778e45e 100644 --- a/.bashrc +++ b/.bashrc @@ -79,7 +79,7 @@ get_vcs_info () { LBRANCH=$(eval "${BRANCH[$DIR]}") LTYPE="${TYPE[$DIR]}" if [ "$color_prompt" = yes ]; then - VCS_info="${nocolor}${vcs_symbols_color}(${nocolor}$LTYPE${vcs_symbols_color})-${vcs_symbols_color}[${vcs_branch_color}$LBRANCH${vcs_symbols_color}]${nocolor}" + VCS_info="${nocolor}${vcs_symbols_color}(${vcs_type_color}$LTYPE${vcs_symbols_color})-${vcs_symbols_color}[${vcs_branch_color}$LBRANCH${vcs_symbols_color}]${nocolor}" else VCS_info="($LTYPE)-[$LBRANCH]" fi @@ -111,33 +111,52 @@ function cd { # | Génération du prompt | # +----------------------+ -cyan='\[\e[1;36m\]' -violet='\[\e[1;35m\]' -violet_thin='\[\e[0;35m\]' -jaune='\[\e[1;33m\]' -rouge='\[\e[1;31m\]' -vert='\[\e[1;32m\]' -vert_thin='\[\e[0;32m\]' -bleu='\[\e[1;34m\]' -nocolor='\[\e[0m\]' +# Définition des couleurs +# Pour les utiliser dans le prompt, +# les couleurs doivent être entourés de \[ et \] pour délimiter les caractères +# invisibles +cyan='\e[1;36m' +violet='\e[1;35m' +violet_thin='\e[0;35m' +jaune='\e[1;33m' +jaune_thin='\e[0;33m' +rouge='\e[1;31m' +vert='\e[1;32m' +vert_thin='\e[0;32m' +bleu='\e[1;34m' +blanc='\e[1;37m' +nocolor='\e[0m' +cyan_prompt="\[${cyan}\]" +violet_prompt="\[${violet}\]" +violet_thin_prompt="\[${violet_thin}\]" +jaune_prompt="\[${jaune}\]" +jaune_thin_prompt="\[${jaune_thin}\]" +rouge_prompt="\[${rouge}\]" +vert_prompt="\[${vert}\]" +vert_thin_prompt="\[${vert_thin}\]" +bleu_prompt="\[${bleu}\]" +nocolor_prompt="\[${nocolor}\]" if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then # support de la couleur color_prompt=yes # Couleurs dans "user@host $" - username_color=$rouge - host_color=$bleu - symbols_color=$vert + username_color=${rouge_prompt} + host_color=${bleu_prompt} + symbols_color=${vert_prompt} # Couleur de la ligne séparatrice de prompt - line_color=$cyan + line_color=${cyan} + line_color_prompt=${cyan_prompt} # Couleur du path actuel - pwd_color=$jaune - # Couleur de la date - date_color=$violet + pwd_color=${jaune_prompt} + # Couleur de la date (à chaque affichage du prompt) + date_color=${violet_prompt} + # Couleur de la date au premier affichage (à l'ouverture du terminal) + announce_date_color=${blanc} # Couleur d'affichage de vcs_info - vcs_symbols_color=$violet_thin - vcs_type_color= - vcs_branch_color=$vert_thin + vcs_symbols_color=${violet_thin_prompt} + vcs_type_color=${jaune_thin_prompt} + vcs_branch_color=${vert_thin_prompt} else # pas de support de la couleur color_prompt=no @@ -183,14 +202,14 @@ function prompt_command POST_DIR='${MINUS_LINE:'${#pwd}+${VCS_size}+1'+${#?}}' fi if [ "$color_prompt" = yes ]; then - DIR="< ${pwd_color}"$DIR"${line_color} >" + DIR="< ${pwd_color}"$DIR"${line_color_prompt} >" # On affiche le code de retour en "no color" si c'est 0, en rouge sinon # Ceci n'est pas customizable à coup de variable, # il faut changer $((31+($?==0)*6)) si vous y tenez vraiment et que vous comprenez ce que vous faites - ERR='[ \[\e[1;$((31+($?==0)*6))m\]$?'${line_color}' ]'$MINUS_CHAR - DATE="( ${date_color}\D{%H:%M:%S}${line_color} )" + ERR='[ \[\e[1;$((31+($?==0)*6))m\]$?'${line_color_prompt}' ]'$MINUS_CHAR + DATE="( ${date_color}\D{%H:%M:%S}${line_color_prompt} )" PROMPT="${username_color}\u${symbols_color}@${host_color}\h ${symbols_color}\$ ${nocolor}" - PS1=$TITLE${line_color}$MINUS_CHAR$DATE$MINUS_CHAR$DIR$MINUS_CHAR$VCS_info${line_color}$POST_DIR$ERR'\n'$PROMPT + PS1=$TITLE${line_color_prompt}$MINUS_CHAR$DATE$MINUS_CHAR$DIR$MINUS_CHAR$VCS_info${line_color_prompt}$POST_DIR$ERR'\n'$PROMPT else DIR="< "$DIR" >" ERR='[ $? ]'$MINUS_CHAR @@ -221,9 +240,9 @@ if [[ $(uname) == Linux && ( $(locale charmap) == UTF-8 && $TERM != screen ) ]]; redate=${date//é/e} redate=${redate//û/u} if [ "$color_prompt" = yes ]; then - echo -e "\e[1;36m┬─${redate//?/─}──┬${MINUS_LINE:${#date}-18}\n\ -│ \e[1;37m$date\e[1;31m \e[1;36m │\n\ -└─${redate//?/─}──┘\e[0m\n" + echo -e "${line_color}┬─${redate//?/─}─┬${MINUS_LINE:${#date}-18}\n\ +│ ${announce_date_color}$date ${line_color}│\n\ +└─${redate//?/─}─┘\e[0m\n" else echo -e "┬─${redate//?/─}──┬${MINUS_LINE:${#date}-18}\n\ │ $date │\n\