Merge pull request #68 from aks/master

Refactored out color defs & assignments; other optimizations.
master
Martin Gondermann 11 years ago
commit 926c441b26
  1. 63
      README.md
  2. 20
      git-prompt-colors.sh
  3. 14
      git-prompt-help.sh
  4. 261
      gitprompt.sh
  5. 0
      newfile.txt
  6. 82
      prompt-colors.sh

@ -9,7 +9,7 @@ staged, changed, etc.
(an original idea from this [blog post][]). (an original idea from this [blog post][]).
`gitstatus.sh` added by [AKS](http://github.com/aks). `gitstatus.sh` and `git-prompt-help.sh` added by [AKS](http://github.com/aks).
## Examples ## Examples
@ -49,9 +49,13 @@ The symbols are as follows:
## Install ## Install
- Clone this repository to your homedir 1. Clone this repository to your home directory.
e.g. ``git clone https://github.com/magicmonty/bash-git-prompt.git .bash-git-prompt``
- Source the file ``gitprompt.sh`` from your ``~/.bashrc`` config file: git clone https://github.com/magicmonty/bash-git-prompt.git .bash-git-prompt
2. Source the file `gitprompt.sh` from `~/.bashrc`
3. `cd` to a git repository and test it!
```sh ```sh
# some other config in .bashrc # some other config in .bashrc
@ -61,28 +65,40 @@ The symbols are as follows:
# Set config variables first # Set config variables first
GIT_PROMPT_ONLY_IN_REPO=1 GIT_PROMPT_ONLY_IN_REPO=1
# GIT_PROMPT_FETCH_REMOTE_STATUS=0 # uncomment to avoid fetching remote status
# GIT_PROMPT_START=... # uncomment for custom prompt start sequence
# GIT_PROMPT_END=... # uncomment for custom prompt end sequence
# as last entry source the gitprompt script # as last entry source the gitprompt script
source ~/.bash-git-prompt/gitprompt.sh source ~/.bash-git-prompt/gitprompt.sh
``` ```
- Go in a git repository and test it! - Go in a git repository and test it!
## Configuration - You can define `GIT_PROMPT_START` and `GIT_PROMPT_END` to tweak your prompt.
- The default colors and some variables for tweaking the prompt are defined - The default colors are defined within `prompt-colors.sh`, which is sourced by
within ``gitprompt.sh``, but may be overridden by copying ``git-prompt-colors.sh`` `gitprompt.sh`. The colors used for various git status are defined in
to your home directory at ``~/.git-prompt-colors.sh``. This file may also be found in the same `git-prompt-colors.sh`. Both of these files may be overridden by copying
directory as ``gitprompt.sh``, but without the leading ``.``. them to $HOME with a `.` prefix. They can also be placed in `$HOME/lib`
without the leading `.`. The defaults are the original files in the
`~/.bash-git-prompt` directory.
- You can use ``GIT_PROMPT_START_USER``, ``GIT_PROMPT_START_ROOT``, ``GIT_PROMPT_END_USER`` and ``GIT_PROMPT_END_ROOT`` in your ``.git-prompt-colors.sh`` to tweak your prompt. You can also override the start and end of the prompt by setting ``GIT_PROMPT_START`` and ``GIT_PROMPT_END`` before you source the ``gitprompt.sh`` - You can use `GIT_PROMPT_START_USER`, `GIT_PROMPT_START_ROOT`,
`GIT_PROMPT_END_USER` and `GIT_PROMPT_END_ROOT` in your
`.git-prompt-colors.sh` to tweak your prompt. You can also override the start
and end of the prompt by setting `GIT_PROMPT_START` and `GIT_PROMPT_END`
before you source the `gitprompt.sh`.
- The current git repo information is obtained by the script `gitstatus.sh` or - The current git repo information is obtained by the script `gitstatus.sh` or
`gitstatus.py`. Both scripts do the same thing, but the bash script is a `gitstatus.py`. Both scripts do the same thing, but the bash script is a tad
tad more quick, and is used by default. If you prefer the python script more quick, and is used by default. If you prefer the python script
(possibly because you have enhanced it), simply delete or change the name of (possibly because you have enhanced it), simply delete or change the name of
``gitstatus.sh``. `gitstatus.sh`.
- You can define `prompt_callback` function to tweak your prompt dynamically.
- You can define ``prompt_callback`` function to tweak your prompt dynamically.
```sh ```sh
function prompt_callback { function prompt_callback {
if [ `jobs | wc -l` -ne 0 ]; then if [ `jobs | wc -l` -ne 0 ]; then
@ -91,19 +107,26 @@ function prompt_callback {
} }
``` ```
- If you want to show the git prompt only, if you are in a git repository you can set ``GIT_PROMPT_ONLY_IN_REPO=1`` before sourcing the gitprompt script - If you want to show the git prompt only if you are in a git repository you
can set ``GIT_PROMPT_ONLY_IN_REPO=1`` before sourcing the gitprompt script
- You can show an additional indicator at the start of the prompt, which shows the result of the last executed command by setting ``GIT_PROMPT_SHOW_LAST_COMMAND_INDICATOR=1`` before sourcing the gitprompt script - You can show an additional indicator at the start of the prompt, which shows
the result of the last executed command by setting
``GIT_PROMPT_SHOW_LAST_COMMAND_INDICATOR=1`` before sourcing the gitprompt
script
- It is now possible to disable the fetching of the remote repository either globally by setting ``GIT_PROMPT_FETCH_REMOTE_STATUS=0`` in your .bashrc or - It is now possible to disable the fetching of the remote repository either
on a per repository basis by creating a file named ``.bash-git-rc`` with the content ``FETCH_REMOTE_STATUS=0`` in the root of your git repository. globally by setting ``GIT_PROMPT_FETCH_REMOTE_STATUS=0`` in your .bashrc or
on a per repository basis by creating a file named ``.bash-git-rc`` with the
content ``FETCH_REMOTE_STATUS=0`` in the root of your git repository.
- You can get help on the git prompt with the function ``git_prompt_help``. - You can get help on the git prompt with the function ``git_prompt_help``.
Examples are available with ``git_prompt_examples``. Examples are available with ``git_prompt_examples``.
**Enjoy!** **Enjoy!**
## Alternative RPM Install ## Alternative RPM Install
This project ships an RPM spec to simplify installation on RHEL and This project ships an RPM spec to simplify installation on RHEL and
clones. If you wish to install from RPM, you may first build the RPM clones. If you wish to install from RPM, you may first build the RPM
from scratch by following this procedure: from scratch by following this procedure:

@ -1,3 +1,17 @@
# These are the color definitions used by gitprompt.sh
declare -g GIT_PROMPT_PREFIX
declare -g GIT_PROMPT_SUFFIX
declare -g GIT_PROMPT_SEPARATOR
declare -g GIT_PROMPT_BRANCH
declare -g GIT_PROMPT_STAGED
declare -g GIT_PROMPT_CONFLICTS
declare -g GIT_PROMPT_CHANGED
declare -g GIT_PROMPT_REMOTE
declare -g GIT_PROMPT_UNTRACKED
declare -g GIT_PROMPT_STASHED
declare -g GIT_PROMPT_CLEAN
local Time12a="\$(date +%H:%M)" local Time12a="\$(date +%H:%M)"
local PathShort="\w" local PathShort="\w"
@ -8,12 +22,12 @@ GIT_PROMPT_SEPARATOR="|" # separates each item
GIT_PROMPT_BRANCH="${Magenta}" # the git branch that is active in the current directory GIT_PROMPT_BRANCH="${Magenta}" # the git branch that is active in the current directory
GIT_PROMPT_STAGED="${Red}" # the number of staged files/directories GIT_PROMPT_STAGED="${Red}" # the number of staged files/directories
GIT_PROMPT_CONFLICTS="${Red}" # the number of files in conflict GIT_PROMPT_CONFLICTS="${Red} " # the number of files in conflict
GIT_PROMPT_CHANGED="${Blue}" # the number of changed files GIT_PROMPT_CHANGED="${Blue} " # the number of changed files
GIT_PROMPT_REMOTE=" " # the remote branch name (if any) and the symbols for ahead and behind GIT_PROMPT_REMOTE=" " # the remote branch name (if any) and the symbols for ahead and behind
GIT_PROMPT_UNTRACKED="${Cyan}" # the number of untracked files/dirs GIT_PROMPT_UNTRACKED="${Cyan}" # the number of untracked files/dirs
GIT_PROMPT_STASHED="${BoldBlue}" # the number of stashed files/dir GIT_PROMPT_STASHED="${BoldBlue} " # the number of stashed files/dir
GIT_PROMPT_CLEAN="${BoldGreen}" # a colored flag indicating a "clean" repo GIT_PROMPT_CLEAN="${BoldGreen}" # a colored flag indicating a "clean" repo
GIT_PROMPT_COMMAND_OK="${Green}" # indicator if the last command returned with an exit code of 0 GIT_PROMPT_COMMAND_OK="${Green}" # indicator if the last command returned with an exit code of 0

@ -3,6 +3,8 @@
# being displayed. # being displayed.
git_prompt_help() { git_prompt_help() {
source prompt-colors.sh
source git-prompt-colors.sh
cat <<EOF | sed 's/\\\[\\033//g' | sed 's/\\\]//g' cat <<EOF | sed 's/\\\[\\033//g' | sed 's/\\\]//g'
The git prompt format is [<BRANCH><TRACKING>|<LOCALSTATUS>] The git prompt format is [<BRANCH><TRACKING>|<LOCALSTATUS>]
@ -18,12 +20,12 @@ remote branch. It can be empty, or one of:
LOCALSTATUS is one of the following: LOCALSTATUS is one of the following:
${GIT_PROMPT_CLEAN}${ResetColor} - repository clean ${GIT_PROMPT_CLEAN}${ResetColor} - repository clean
${GIT_PROMPT_STAGED}N${ResetColor} - N staged files ${GIT_PROMPT_STAGED} N${ResetColor} - N staged files
${GIT_PROMPT_CONFLICTS}N${ResetColor} - N conflicted files ${GIT_PROMPT_CONFLICTS} N${ResetColor} - N conflicted files
${GIT_PROMPT_CHANGED}N${ResetColor} - N changed but *unstaged* files ${GIT_PROMPT_CHANGED} N${ResetColor} - N changed but *unstaged* files
${GIT_PROMPT_UNTRACKED}N${ResetColor} - N untracked files ${GIT_PROMPT_UNTRACKED} N${ResetColor} - N untracked files
${GIT_PROMPT_STASHED}N${ResetColor} - N stash entries ${GIT_PROMPT_STASHED} N${ResetColor} - N stash entries
See "git_prompt_examples" for examples. See "git_prompt_examples" for examples.
EOF EOF

@ -22,115 +22,106 @@ function git_prompt_dir()
fi fi
} }
function git_prompt_config() # gp_set_file_var ENVAR SOMEFILE
{ #
# Colors # Set ENVAR to the path to SOMEFILE, based on $HOME, $__GIT_PROMPT_DIR, and the
ResetColor="\[\033[0m\]" # Text reset # directory of the current script. The SOMEFILE can be prefixed with '.', or
# not.
# Bold #
local BoldGreen="\[\033[1;32m\]" # Green # Return 0 (success) if ENVAR not already defined, 1 (failure) otherwise.
local BoldBlue="\[\033[1;34m\]" # Blue
function gp_set_file_var() {
# High Intensty local envar="$1"
local IntenseBlack="\[\033[0;90m\]" # Grey local file="$2"
if eval "test -z \"\$$envar\"" ; then
eval "$envar=" # set empty envar
gp_maybe_set_envar_to_path "$envar" "$HOME/.$file" "$HOME/$file" "$HOME/lib/$file" && return 0
git_prompt_dir
gp_maybe_set_envar_to_path "$envar" "$__GIT_PROMPT_DIR/$file" "${0##*/}/$file" && return 0
fi
return 1
}
# Bold High Intensty # gp_maybe_set_envar_to_path ENVAR FILEPATH ...
local Magenta="\[\033[1;95m\]" # Purple #
# return 0 (true) if any FILEPATH is readable, set ENVAR to it
# return 1 (false) if not
function gp_maybe_set_envar_to_path(){
local envar="$1"
shift
local file
for file in "$@" ; do
if [[ -r "$file" ]]; then
eval "$envar=\"$file\""
return 0
fi
done
return 1
}
# Regular Colors function git_prompt_config()
local Yellow="\[\033[0;33m\]" {
local White='\[\033[37m\]'
local Red="\[\033[0;31m\]"
local Blue="\[\033[0;34m\]"
local Cyan="\[\033[0;36m\]"
local Green="\[\033[0;32m\]"
#Checking if root to change output #Checking if root to change output
_isroot=false _isroot=false
[[ $UID -eq 0 ]] && _isroot=true [[ $UID -eq 0 ]] && _isroot=true
# There are two files related to colors:
#
# prompt-colors.sh -- sets generic color names suitable for bash `PS1` prompt
# git-prompt-colors.sh -- sets the GIT_PROMPT color scheme, using names from prompt-colors.sh
if gp_set_file_var __PROMPT_COLORS_SH prompt-colors.sh ; then
if [[ -n "${__PROMPT_COLORS_SH}" ]]; then
source "${__PROMPT_COLORS_SH}" # outsource the color defs
else
echo 1>&2 "Cannot find prompt-colors.sh!"
fi
fi
# source the user's ~/.git-prompt-colors.sh file, or the one that should be # source the user's ~/.git-prompt-colors.sh file, or the one that should be
# sitting in the same directory as this script # sitting in the same directory as this script
if [[ -z "$__GIT_PROMPT_COLORS_FILE" ]]; then if gp_set_file_var __GIT_PROMPT_COLORS_FILE git-prompt-colors.sh ; then
local pfx file dir
for dir in "$HOME" "$__GIT_PROMPT_DIR" ; do # if the envar is defined, source the file for custom colors
for pfx in '.' '' ; do if [[ -n "${__GIT_PROMPT_COLORS_FILE}" ]]; then
file="$dir/${pfx}git-prompt-colors.sh" source "${__GIT_PROMPT_COLORS_FILE}"
if [[ -f "$file" ]]; then else
__GIT_PROMPT_COLORS_FILE="$file" echo 1>&2 "Cannot find git-prompt-colors.sh!"
break 2 fi
fi
done
done
fi fi
# Various variables you might want for your PS1 prompt instead # Do this only once to define PROMPT_START and PROMPT_END
local Time12a="\$(date +%H:%M)"
# local Time12a="(\$(date +%H:%M:%S))"
# local Time12a="(\@))"
local PathShort="\w"
# if the envar is defined, source the file for custom colors if [[ -z "$PROMPT_START" || -z "$PROMPT_END" ]]; then
if [[ -n "$__GIT_PROMPT_COLORS_FILE" && -f "$__GIT_PROMPT_COLORS_FILE" ]]; then
source "$__GIT_PROMPT_COLORS_FILE"
else
# Default values for the appearance of the prompt. Do not change these
# below. Instead, copy these to `~/.git-prompt-colors.sh` and change them
# there.
GIT_PROMPT_PREFIX="["
GIT_PROMPT_SUFFIX="]"
GIT_PROMPT_SEPARATOR="|"
GIT_PROMPT_BRANCH="${Magenta}"
GIT_PROMPT_STAGED="${Red}"
GIT_PROMPT_CONFLICTS="${Red}"
GIT_PROMPT_CHANGED="${Blue}"
GIT_PROMPT_REMOTE=" "
GIT_PROMPT_UNTRACKED="${Cyan}"
GIT_PROMPT_STASHED="${BoldBlue}"
GIT_PROMPT_CLEAN="${BoldGreen}"
GIT_PROMPT_COMMAND_OK="${Green}"
GIT_PROMPT_COMMAND_FAIL="${Red}"
GIT_PROMPT_START_USER="${Yellow}${PathShort}${ResetColor}"
GIT_PROMPT_START_ROOT="${Yellow}${PathShort}${ResetColor}"
GIT_PROMPT_END_USER=" \n${White}${Time12a}${ResetColor} $ "
GIT_PROMPT_END_ROOT=" \n${White}${Time12a}${ResetColor} # "
# Please do not add colors to these symbols
GIT_PROMPT_SYMBOLS_AHEAD="↑·"
GIT_PROMPT_SYMBOLS_BEHIND="↓·"
GIT_PROMPT_SYMBOLS_PREHASH=":"
fi
if [ "x${GIT_PROMPT_SHOW_LAST_COMMAND_INDICATOR}" == "x1" ]; then # Various variables you might want for your PS1 prompt instead
if [ $LAST_COMMAND_STATE = 0 ]; then local Time12a="\$(date +%H:%M)"
LAST_COMMAND_INDICATOR="${GIT_PROMPT_COMMAND_OK}"; # local Time12a="(\$(date +%H:%M:%S))"
else # local Time12a="(\@))"
LAST_COMMAND_INDICATOR="${GIT_PROMPT_COMMAND_FAIL}"; local PathShort="\w"
fi
fi
if [ "x${GIT_PROMPT_START}" == "x" ]; then if [[ -z "${GIT_PROMPT_START}" ]] ; then
#First statment is for non root behavior second for root if $_isroot; then
if $_isroot; then PROMPT_START="$GIT_PROMPT_START_ROOT"
PROMPT_START="${GIT_PROMPT_START_ROOT}" else
PROMPT_START="$GIT_PROMPT_START_USER"
fi
else else
PROMPT_START="${GIT_PROMPT_START_USER}" PROMPT_START="${GIT_PROMPT_START}"
fi fi
else
PROMPT_START="${GIT_PROMPT_START}"
fi
if [ "x${GIT_PROMPT_END}" == "x" ]; then if [[ -z "${GIT_PROMPT_END}" ]] ; then
#First statment is for non root behavior second for root if $_isroot; then
if ! $_isroot; then PROMPT_END="$GIT_PROMPT_END_ROOT"
PROMPT_END="${GIT_PROMPT_END_USER}" else
PROMPT_END="$GIT_PROMPT_END_USER"
fi
else else
PROMPT_END="${GIT_PROMPT_END_ROOT}" PROMPT_END="${GIT_PROMPT_END}"
fi fi
else
PROMPT_END="${GIT_PROMPT_END}"
fi fi
# set GIT_PROMPT_LEADING_SPACE to 0 if you want to have no leading space in front of the GIT prompt # set GIT_PROMPT_LEADING_SPACE to 0 if you want to have no leading space in front of the GIT prompt
@ -154,18 +145,11 @@ function git_prompt_config()
# fetch remote revisions every other $GIT_PROMPT_FETCH_TIMEOUT (default 5) minutes # fetch remote revisions every other $GIT_PROMPT_FETCH_TIMEOUT (default 5) minutes
GIT_PROMPT_FETCH_TIMEOUT=${1-5} GIT_PROMPT_FETCH_TIMEOUT=${1-5}
if [ "x$__GIT_STATUS_CMD" == "x" ] if [[ -z "$__GIT_STATUS_CMD" ]] ; then # if GIT_STATUS_CMD not defined..
then
git_prompt_dir git_prompt_dir
local sfx file if ! gp_maybe_set_envar_to_path __GIT_STATUS_CMD "$__GIT_PROMPT_DIR/gitstatus.sh" "$__GIT_PROMPT_DIR/gitstatus.py" ; then
# look first for a '.sh' version, then use the python version echo 1>&2 "Cannot find gitstatus.sh or gitstatus.py!"
for sfx in sh py ; do fi
file="${__GIT_PROMPT_DIR}/gitstatus.$sfx"
if [[ -x "$file" ]]; then
__GIT_STATUS_CMD="$file"
break
fi
done
fi fi
} }
@ -217,17 +201,6 @@ function checkUpstream() {
} }
function updatePrompt() { function updatePrompt() {
local GIT_PROMPT_PREFIX
local GIT_PROMPT_SUFFIX
local GIT_PROMPT_SEPARATOR
local GIT_PROMPT_BRANCH
local GIT_PROMPT_STAGED
local GIT_PROMPT_CONFLICTS
local GIT_PROMPT_CHANGED
local GIT_PROMPT_REMOTE
local GIT_PROMPT_UNTRACKED
local GIT_PROMPT_STASHED
local GIT_PROMPT_CLEAN
local LAST_COMMAND_INDICATOR local LAST_COMMAND_INDICATOR
local PROMPT_LEADING_SPACE local PROMPT_LEADING_SPACE
local PROMPT_START local PROMPT_START
@ -257,37 +230,43 @@ function updatePrompt() {
if [[ -n "${GitStatus}" ]]; then if [[ -n "${GitStatus}" ]]; then
local STATUS="${PROMPT_LEADING_SPACE}${GIT_PROMPT_PREFIX}${GIT_PROMPT_BRANCH}${GIT_BRANCH}${ResetColor}" local STATUS="${PROMPT_LEADING_SPACE}${GIT_PROMPT_PREFIX}${GIT_PROMPT_BRANCH}${GIT_BRANCH}${ResetColor}"
if [[ -n "${GIT_REMOTE}" ]]; then # __add_status KIND VALEXPR INSERT
STATUS="${STATUS}${GIT_PROMPT_REMOTE}${GIT_REMOTE}${ResetColor}" # eg: __add_status 'STAGED' '-ne 0'
fi
STATUS="${STATUS}${GIT_PROMPT_SEPARATOR}"
if [ "${GIT_STAGED}" -ne "0" ]; then
STATUS="${STATUS}${GIT_PROMPT_STAGED}${GIT_STAGED}${ResetColor}"
fi
if [ "${GIT_CONFLICTS}" -ne "0" ]; then
STATUS="${STATUS}${GIT_PROMPT_CONFLICTS}${GIT_CONFLICTS}${ResetColor}"
fi
if [ "${GIT_CHANGED}" -ne "0" ]; then
STATUS="${STATUS}${GIT_PROMPT_CHANGED}${GIT_CHANGED}${ResetColor}"
fi
if [ "${GIT_UNTRACKED}" -ne "0" ]; then
STATUS="${STATUS}${GIT_PROMPT_UNTRACKED}${GIT_UNTRACKED}${ResetColor}"
fi
if [ "${GIT_STASHED}" -ne "0" ]; then
STATUS="${STATUS}${GIT_PROMPT_STASHED}${GIT_STASHED}${ResetColor}"
fi
if [ "${GIT_CLEAN}" -eq "1" ]; then
STATUS="${STATUS}${GIT_PROMPT_CLEAN}"
fi
STATUS="${STATUS}${ResetColor}${GIT_PROMPT_SUFFIX}"
__chk_gitvar_status() {
local v
if [[ "x$2" == "x-n" ]] ; then
v="$2 \"\${GIT_$1}\""
else
v="\${GIT_$1} $2"
fi
if eval "test $v" ; then
if [[ $# -lt 2 || "$3" != '-' ]]; then
__add_status "\${GIT_PROMPT_$1}\${GIT_$1}\${ResetColor}"
else
__add_status "\${GIT_PROMPT_$1}\${ResetColor}"
fi
fi
}
__add_gitvar_status() {
__add_status "\${GIT_PROMPT_$1}\${GIT_$1}\${ResetColor}"
}
# __add_status SOMETEXT
__add_status() {
eval "STATUS=\"${STATUS}$1\""
}
__chk_gitvar_status 'REMOTE' '-n'
__add_status "$GIT_PROMPT_SEPARATOR"
__chk_gitvar_status 'STAGED' '-ne 0'
__chk_gitvar_status 'CONFLICTS' '-ne 0'
__chk_gitvar_status 'CHANGED' '-ne 0'
__chk_gitvar_status 'UNTRACKED' '-ne 0'
__chk_gitvar_status 'STASHED' '-ne 0'
__chk_gitvar_status 'CLEAN' '-eq 1' -
__add_status "${ResetColor}$GIT_PROMPT_SUFFIX"
PS1="${LAST_COMMAND_INDICATOR}${PROMPT_START}$($prompt_callback)${STATUS}${PROMPT_END}" PS1="${LAST_COMMAND_INDICATOR}${PROMPT_START}$($prompt_callback)${STATUS}${PROMPT_END}"
if [[ -n "${VIRTUAL_ENV}" ]]; then if [[ -n "${VIRTUAL_ENV}" ]]; then

@ -0,0 +1,82 @@
# prompt-colors.sh
#
# source this file to get color definitions
# if $debug or $verbose is set, the definitions
# are also printed to STDERR.
define_color_names() {
ColorNames=( Black Red Green Yellow Blue Magneta Cyan White )
FgColors=( 30 31 32 33 34 35 36 37 )
BgColors=( 40 41 42 43 44 45 46 47 )
local AttrNorm=0
local AttrBright=1
local AttrDim=2
local AttrUnder=4
local AttrBlink=5
local AttrRev=7
local AttrHide=8
# define "BoldCOLOR", "BrightCOLOR", and "DimCOLOR" names
# _map_colors ATTRNAME ATTRVALUE
#
# Defines three names for every color, attribute combintaion:
# {ATTRNAME}{COLORNAME}
# {ATTRNAME}{COLORNAME}Fg
# {ATTRNAME}{COLORNAME}Bg
#
# Example: BoldRed, BoldRedFg, BoldRedBg
_map_colors() {
local x=0
local attrname="$1"
local attrcode=$2
while (( x < 8 )) ; do
local colorname=${ColorNames[x]}
local fgcolorcode=${FgColors[x]}
local bgcolorcode=${BgColors[x]}
longcolorname="${attrname}${colorname}"
_def_color $longcolorname $attrcode $fgcolorcode
_def_color ${longcolorname}Fg $attrcode $fgcolorcode
_def_color ${longcolorname}Bg $attrcode $bgcolorcode
(( x++ ))
done
}
# _term_color [ N | N M ]
_term_color() {
local cv
if (( $# > 1 )); then
cv="${1};${2}"
else
cv="${1}"
fi
echo "\[\033[${cv}m\]"
}
# def_color NAME ATTRCODE COLORCODE
_def_color() {
local def="$1=\"\`_term_color $2 $3\`\""
if [[ -n "$debug$verbose" ]]; then
echo 1>&2 "+ $def"
fi
eval "$def"
}
#ResetColor="`_term_color 0`" # Text reset
_map_colors Bold $AttrBright
_map_colors Bright $AttrBright
_map_colors Dim $AttrDim
_map_colors '' $AttrNorm
_def_color IntenseBlack 0 90
_def_color ResetColor 0 0
}
define_color_names
# end of prompt-colors.sh
# vim: set ai sw=2
Loading…
Cancel
Save