From 0227691ca9722a46704e6befba5cb3281664d0e1 Mon Sep 17 00:00:00 2001 From: Eduardo Bellido Bellido Date: Tue, 11 Feb 2014 22:00:29 +0100 Subject: [PATCH 1/4] More info about Git repository added Now, staged, unstaged and untracked files count can be shown in themes --- themes/base.theme.bash | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/themes/base.theme.bash b/themes/base.theme.bash index 06c7e3cc..8b63189e 100644 --- a/themes/base.theme.bash +++ b/themes/base.theme.bash @@ -78,9 +78,18 @@ function git_prompt_vars { SCM_GIT_AHEAD='' SCM_GIT_BEHIND='' SCM_GIT_STASH='' + SCM_GIT_UNTRACKED='' + SCM_GIT_UNSTAGED='' + SCM_GIT_STAGED='' if [[ "$(git config --get bash-it.hide-status)" != "1" ]]; then local status="$(git status -b --porcelain 2> /dev/null || git status --porcelain 2> /dev/null)" if [[ -n "${status}" ]] && [[ "${status}" != "\n" ]] && [[ -n "$(grep -v ^# <<< "${status}")" ]]; then + local untracked_count="$(egrep -c '^\?\? .+' <<< "${status}")" + local unstaged_count="$(egrep -c '^.[^ ?#] .+' <<< "${status}")" + local staged_count="$(egrep -c '^[^ ?#]. .+' <<< "${status}")" + [[ "${untracked_count}" -gt 0 ]] && SCM_GIT_UNTRACKED="${SCM_GIT_UNTRACKED_CHAR}${untracked_count}" + [[ "${unstaged_count}" -gt 0 ]] && SCM_GIT_UNSTAGED="${SCM_GIT_UNSTAGED_CHAR}${unstaged_count}" + [[ "${staged_count}" -gt 0 ]] && SCM_GIT_STAGED="${SCM_GIT_STAGED_CHAR}${staged_count}" SCM_DIRTY=1 SCM_STATE=${GIT_THEME_PROMPT_DIRTY:-$SCM_THEME_PROMPT_DIRTY} else @@ -107,10 +116,10 @@ function git_prompt_vars { SCM_CHANGE=$(git rev-parse HEAD 2>/dev/null) local ahead_re='.+ahead ([0-9]+).+' local behind_re='.+behind ([0-9]+).+' - [[ "${status}" =~ ${ahead_re} ]] && SCM_GIT_AHEAD=" ${SCM_GIT_AHEAD_CHAR}${BASH_REMATCH[1]}" - [[ "${status}" =~ ${behind_re} ]] && SCM_GIT_BEHIND=" ${SCM_GIT_BEHIND_CHAR}${BASH_REMATCH[1]}" + [[ "${status}" =~ ${ahead_re} ]] && SCM_GIT_AHEAD="${SCM_GIT_AHEAD_CHAR}${BASH_REMATCH[1]}" + [[ "${status}" =~ ${behind_re} ]] && SCM_GIT_BEHIND="${SCM_GIT_BEHIND_CHAR}${BASH_REMATCH[1]}" local stash_count="$(git stash list 2> /dev/null | wc -l | tr -d ' ')" - [[ "${stash_count}" -gt 0 ]] && SCM_GIT_STASH=" {${stash_count}}" + [[ "${stash_count}" -gt 0 ]] && SCM_GIT_STASH="{${stash_count}}" } function svn_prompt_vars { From 3e17b1784623b4c51dff69ef11f749fd27207820 Mon Sep 17 00:00:00 2001 From: Eduardo Bellido Bellido Date: Tue, 11 Feb 2014 22:29:30 +0100 Subject: [PATCH 2/4] Added more Git repository info to Powerline theme --- themes/powerline/powerline.theme.bash | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/themes/powerline/powerline.theme.bash b/themes/powerline/powerline.theme.bash index 012f9333..bf7e33b3 100644 --- a/themes/powerline/powerline.theme.bash +++ b/themes/powerline/powerline.theme.bash @@ -13,6 +13,10 @@ SCM_NONE_CHAR="" SCM_GIT_CHAR=" " SCM_GIT_BEHIND_CHAR="↓" SCM_GIT_AHEAD_CHAR="↑" +SCM_GIT_UNTRACKED_CHAR="?:" +SCM_GIT_UNSTAGED_CHAR="U:" +SCM_GIT_STAGED_CHAR="S:" + if [[ -z "$THEME_SCM_TAG_PREFIX" ]]; then SCM_TAG_PREFIX="tag > " else @@ -21,11 +25,12 @@ fi SCM_THEME_PROMPT_CLEAN="" SCM_THEME_PROMPT_DIRTY="" + SCM_THEME_PROMPT_COLOR=238 SCM_THEME_PROMPT_CLEAN_COLOR=231 SCM_THEME_PROMPT_DIRTY_COLOR=196 SCM_THEME_PROMPT_STAGED_COLOR=220 -SCM_THEME_PROMPT_UNTRACKED_COLOR=033 +SCM_THEME_PROMPT_UNSTAGED_COLOR=166 CWD_THEME_PROMPT_COLOR=240 @@ -71,17 +76,13 @@ function powerline_virtualenv_prompt { function powerline_scm_prompt { scm_prompt_vars - local git_status_output - git_status_output=$(git status 2> /dev/null ) if [[ "${SCM_NONE_CHAR}" != "${SCM_CHAR}" ]]; then if [[ "${SCM_DIRTY}" -eq 1 ]]; then - if [ -n "$(echo $git_status_output | grep 'Changes not staged')" ]; then - SCM_PROMPT="$(set_rgb_color ${SCM_THEME_PROMPT_DIRTY_COLOR} ${SCM_THEME_PROMPT_COLOR})" - elif [ -n "$(echo $git_status_output | grep 'Changes to be committed')" ]; then + if [[ -n "${SCM_GIT_STAGED}" ]]; then SCM_PROMPT="$(set_rgb_color ${SCM_THEME_PROMPT_STAGED_COLOR} ${SCM_THEME_PROMPT_COLOR})" - elif [ -n "$(echo $git_status_output | grep 'Untracked files')" ]; then - SCM_PROMPT="$(set_rgb_color ${SCM_THEME_PROMPT_UNTRACKED_COLOR} ${SCM_THEME_PROMPT_COLOR})" + elif [[ -n "${SCM_GIT_UNSTAGED}" ]]; then + SCM_PROMPT="$(set_rgb_color ${SCM_THEME_PROMPT_UNSTAGED_COLOR} ${SCM_THEME_PROMPT_COLOR})" else SCM_PROMPT="$(set_rgb_color ${SCM_THEME_PROMPT_DIRTY_COLOR} ${SCM_THEME_PROMPT_COLOR})" fi @@ -93,9 +94,15 @@ function powerline_scm_prompt { if [[ $SCM_IS_TAG -eq "1" ]]; then tag=$SCM_TAG_PREFIX fi - SCM_PROMPT+=" ${SCM_CHAR}${tag}${SCM_BRANCH}${SCM_STATE}${SCM_GIT_BEHIND}${SCM_GIT_AHEAD}${SCM_GIT_STASH}" + SCM_PROMPT+=" ${SCM_CHAR}${tag}${SCM_BRANCH}${SCM_STATE} " + [[ -n "${SCM_GIT_AHEAD}" ]] && SCM_PROMPT+="${SCM_GIT_AHEAD} " + [[ -n "${SCM_GIT_BEHIND}" ]] && SCM_PROMPT+="${SCM_GIT_BEHIND} " + [[ -n "${SCM_GIT_STAGED}" ]] && SCM_PROMPT+="${SCM_GIT_STAGED} " + [[ -n "${SCM_GIT_UNSTAGED}" ]] && SCM_PROMPT+="${SCM_GIT_UNSTAGED} " + [[ -n "${SCM_GIT_UNTRACKED}" ]] && SCM_PROMPT+="${SCM_GIT_UNTRACKED} " + [[ -n "${SCM_GIT_STASH}" ]] && SCM_PROMPT+="${SCM_GIT_STASH} " fi - SCM_PROMPT="$(set_rgb_color ${LAST_THEME_COLOR} ${SCM_THEME_PROMPT_COLOR})${THEME_PROMPT_SEPARATOR}${normal}${SCM_PROMPT} ${normal}" + SCM_PROMPT="$(set_rgb_color ${LAST_THEME_COLOR} ${SCM_THEME_PROMPT_COLOR})${THEME_PROMPT_SEPARATOR}${normal}${SCM_PROMPT}${normal}" LAST_THEME_COLOR=${SCM_THEME_PROMPT_COLOR} else SCM_PROMPT="" From 78e0dedb0bd44bc21f80d7423d8f8828ee175497 Mon Sep 17 00:00:00 2001 From: Eduardo Bellido Bellido Date: Tue, 11 Feb 2014 22:40:44 +0100 Subject: [PATCH 3/4] Added more Git repository info to Powerline Plain theme --- .../powerline-plain.theme.bash | 29 ++++++++++++++++--- 1 file changed, 25 insertions(+), 4 deletions(-) diff --git a/themes/powerline-plain/powerline-plain.theme.bash b/themes/powerline-plain/powerline-plain.theme.bash index 4a83513b..d15f995c 100644 --- a/themes/powerline-plain/powerline-plain.theme.bash +++ b/themes/powerline-plain/powerline-plain.theme.bash @@ -11,11 +11,18 @@ SCM_NONE_CHAR="" SCM_GIT_CHAR="⎇ " SCM_GIT_BEHIND_CHAR="↓" SCM_GIT_AHEAD_CHAR="↑" +SCM_GIT_UNTRACKED_CHAR="?:" +SCM_GIT_UNSTAGED_CHAR="U:" +SCM_GIT_STAGED_CHAR="S:" + SCM_THEME_PROMPT_CLEAN="" SCM_THEME_PROMPT_DIRTY="" + SCM_THEME_PROMPT_COLOR=238 SCM_THEME_PROMPT_CLEAN_COLOR=231 -SCM_THEME_PROMPT_DIRTY_COLOR=220 +SCM_THEME_PROMPT_DIRTY_COLOR=160 +SCM_THEME_PROMPT_STAGED_COLOR=220 +SCM_THEME_PROMPT_UNSTAGED_COLOR=220 CWD_THEME_PROMPT_COLOR=240 @@ -54,12 +61,26 @@ function powerline_scm_prompt { if [[ "${SCM_NONE_CHAR}" != "${SCM_CHAR}" ]]; then if [[ "${SCM_DIRTY}" -eq 1 ]]; then - SCM_PROMPT="$(set_rgb_color ${SCM_THEME_PROMPT_DIRTY_COLOR} ${SCM_THEME_PROMPT_COLOR})" + if [[ -n "${SCM_GIT_STAGED}" ]]; then + SCM_PROMPT="$(set_rgb_color ${SCM_THEME_PROMPT_STAGED_COLOR} ${SCM_THEME_PROMPT_COLOR})" + elif [[ -n "${SCM_GIT_UNSTAGED}" ]]; then + SCM_PROMPT="$(set_rgb_color ${SCM_THEME_PROMPT_UNSTAGED_COLOR} ${SCM_THEME_PROMPT_COLOR})" + else + SCM_PROMPT="$(set_rgb_color ${SCM_THEME_PROMPT_DIRTY_COLOR} ${SCM_THEME_PROMPT_COLOR})" + fi else SCM_PROMPT="$(set_rgb_color ${SCM_THEME_PROMPT_CLEAN_COLOR} ${SCM_THEME_PROMPT_COLOR})" fi - [[ "${SCM_GIT_CHAR}" == "${SCM_CHAR}" ]] && SCM_PROMPT+=" ${SCM_CHAR}${SCM_BRANCH}${SCM_STATE}${SCM_GIT_BEHIND}${SCM_GIT_AHEAD}${SCM_GIT_STASH}" - SCM_PROMPT="${SCM_PROMPT} ${normal}" + if [[ "${SCM_GIT_CHAR}" == "${SCM_CHAR}" ]]; then + SCM_PROMPT+=" ${SCM_CHAR}${SCM_BRANCH}${SCM_STATE} " + [[ -n "${SCM_GIT_AHEAD}" ]] && SCM_PROMPT+="${SCM_GIT_AHEAD} " + [[ -n "${SCM_GIT_BEHIND}" ]] && SCM_PROMPT+="${SCM_GIT_BEHIND} " + [[ -n "${SCM_GIT_STAGED}" ]] && SCM_PROMPT+="${SCM_GIT_STAGED} " + [[ -n "${SCM_GIT_UNSTAGED}" ]] && SCM_PROMPT+="${SCM_GIT_UNSTAGED} " + [[ -n "${SCM_GIT_UNTRACKED}" ]] && SCM_PROMPT+="${SCM_GIT_UNTRACKED} " + [[ -n "${SCM_GIT_STASH}" ]] && SCM_PROMPT+="${SCM_GIT_STASH} " + fi + SCM_PROMPT="${SCM_PROMPT}${normal}" else SCM_PROMPT="" fi From 2e7a14ee3b4a4dd56e6b43015707b78b19b6422b Mon Sep 17 00:00:00 2001 From: Eduardo Bellido Bellido Date: Wed, 24 Dec 2014 01:35:54 +0100 Subject: [PATCH 4/4] Include latest changes from powerline into powerline-plain --- .../powerline-plain.theme.bash | 42 +++++++++++++------ 1 file changed, 30 insertions(+), 12 deletions(-) diff --git a/themes/powerline-plain/powerline-plain.theme.bash b/themes/powerline-plain/powerline-plain.theme.bash index d15f995c..63606658 100644 --- a/themes/powerline-plain/powerline-plain.theme.bash +++ b/themes/powerline-plain/powerline-plain.theme.bash @@ -15,14 +15,20 @@ SCM_GIT_UNTRACKED_CHAR="?:" SCM_GIT_UNSTAGED_CHAR="U:" SCM_GIT_STAGED_CHAR="S:" +if [[ -z "$THEME_SCM_TAG_PREFIX" ]]; then + SCM_TAG_PREFIX="tag > " +else + SCM_TAG_PREFIX="$THEME_SCM_TAG_PREFIX" +fi + SCM_THEME_PROMPT_CLEAN="" SCM_THEME_PROMPT_DIRTY="" SCM_THEME_PROMPT_COLOR=238 SCM_THEME_PROMPT_CLEAN_COLOR=231 -SCM_THEME_PROMPT_DIRTY_COLOR=160 +SCM_THEME_PROMPT_DIRTY_COLOR=196 SCM_THEME_PROMPT_STAGED_COLOR=220 -SCM_THEME_PROMPT_UNSTAGED_COLOR=220 +SCM_THEME_PROMPT_UNSTAGED_COLOR=166 CWD_THEME_PROMPT_COLOR=240 @@ -48,9 +54,17 @@ function powerline_shell_prompt { } function powerline_virtualenv_prompt { - if [[ -n "$VIRTUAL_ENV" ]]; then - virtualenv=$(basename "$VIRTUAL_ENV") - VIRTUALENV_PROMPT="$(set_rgb_color - ${VIRTUALENV_THEME_PROMPT_COLOR}) ${VIRTUALENV_CHAR}$virtualenv ${normal}" + local environ="" + + if [[ -n "$CONDA_DEFAULT_ENV" ]]; then + environ="conda: $CONDA_DEFAULT_ENV" + elif [[ -n "$VIRTUAL_ENV" ]]; then + environ=$(basename "$VIRTUAL_ENV") + fi + + if [[ -n "$environ" ]]; then + VIRTUALENV_PROMPT="$(set_rgb_color ${LAST_THEME_COLOR} ${VIRTUALENV_THEME_PROMPT_COLOR})${THEME_PROMPT_SEPARATOR}${normal}$(set_rgb_color - ${VIRTUALENV_THEME_PROMPT_COLOR}) ${VIRTUALENV_CHAR}$environ ${normal}" + LAST_THEME_COLOR=${VIRTUALENV_THEME_PROMPT_COLOR} else VIRTUALENV_PROMPT="" fi @@ -72,13 +86,17 @@ function powerline_scm_prompt { SCM_PROMPT="$(set_rgb_color ${SCM_THEME_PROMPT_CLEAN_COLOR} ${SCM_THEME_PROMPT_COLOR})" fi if [[ "${SCM_GIT_CHAR}" == "${SCM_CHAR}" ]]; then - SCM_PROMPT+=" ${SCM_CHAR}${SCM_BRANCH}${SCM_STATE} " - [[ -n "${SCM_GIT_AHEAD}" ]] && SCM_PROMPT+="${SCM_GIT_AHEAD} " - [[ -n "${SCM_GIT_BEHIND}" ]] && SCM_PROMPT+="${SCM_GIT_BEHIND} " - [[ -n "${SCM_GIT_STAGED}" ]] && SCM_PROMPT+="${SCM_GIT_STAGED} " - [[ -n "${SCM_GIT_UNSTAGED}" ]] && SCM_PROMPT+="${SCM_GIT_UNSTAGED} " - [[ -n "${SCM_GIT_UNTRACKED}" ]] && SCM_PROMPT+="${SCM_GIT_UNTRACKED} " - [[ -n "${SCM_GIT_STASH}" ]] && SCM_PROMPT+="${SCM_GIT_STASH} " + local tag="" + if [[ $SCM_IS_TAG -eq "1" ]]; then + tag=$SCM_TAG_PREFIX + fi + SCM_PROMPT+=" ${SCM_CHAR}${tag}${SCM_BRANCH}${SCM_STATE} " + [[ -n "${SCM_GIT_AHEAD}" ]] && SCM_PROMPT+="${SCM_GIT_AHEAD} " + [[ -n "${SCM_GIT_BEHIND}" ]] && SCM_PROMPT+="${SCM_GIT_BEHIND} " + [[ -n "${SCM_GIT_STAGED}" ]] && SCM_PROMPT+="${SCM_GIT_STAGED} " + [[ -n "${SCM_GIT_UNSTAGED}" ]] && SCM_PROMPT+="${SCM_GIT_UNSTAGED} " + [[ -n "${SCM_GIT_UNTRACKED}" ]] && SCM_PROMPT+="${SCM_GIT_UNTRACKED} " + [[ -n "${SCM_GIT_STASH}" ]] && SCM_PROMPT+="${SCM_GIT_STASH} " fi SCM_PROMPT="${SCM_PROMPT}${normal}" else