From 5aca244430309339943d4bd53936aa18e31493e7 Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Fri, 17 Feb 2012 15:20:55 -0600 Subject: rewrite my bash prompt in perl --- bashrc | 130 +---------------------------------------------------------------- 1 file changed, 1 insertion(+), 129 deletions(-) (limited to 'bashrc') diff --git a/bashrc b/bashrc index f7726e1..b11e20d 100644 --- a/bashrc +++ b/bashrc @@ -205,135 +205,7 @@ else export PROMPT_COMMAND="${PROMPT_COMMAND};history -a" fi # prompt {{{ -function _set_error { - __error=$(printf %03d $?) - if [[ "x${__error//0/}" != "x" ]]; then - __error_color=$HIRED - else - __error_color=$NORM - fi -} -function _set_vcs { - local vcs - local vcs_dirty - local vcs_branch - local vcs_dir - local vcs_state - local vcs_local_commits - __vcs='' - function _find_upwards { - local pwd - pwd=$(pwd) - while [[ -n "$pwd" ]]; do - if [[ -d "$pwd/$1" ]]; then - return 0 - fi - pwd=${pwd%/*} - done - return 1 - } - function _find_svn { - [[ -d '.svn' ]] || return 1 - vcs='svn' - } - function _find_darcs { - if _find_upwards '_darcs'; then - vcs='darcs' - return 0 - fi - return 1 - } - function _find_git { - if _find_upwards '.git'; then - vcs='git' - return 0 - fi - return 1 - } - - _find_svn || _find_darcs || _find_git - - case "$vcs" in - svn) - vcs_dirty=$([[ -n "$(svn status | grep -v '^?')" ]]; echo $?) - if [[ "$vcs_dirty" -eq 0 ]]; then - vcs_dirty='*' - else - vcs_dirty='' - fi - vcs_branch= - ;; - darcs) - vcs_dirty=$(darcs whatsnew > /dev/null 2>&1; echo $?) - if [[ "$vcs_dirty" -eq 0 ]]; then - vcs_dirty='*' - else - vcs_dirty='' - fi - vcs_branch= - ;; - git) - local git_dir - local git_base - git_dir=$(git rev-parse --git-dir) - vcs_branch=$(git symbolic-ref -q HEAD 2>/dev/null) - vcs_dirty='' - if git diff --no-ext-diff --ignore-submodules --quiet --exit-code; then - : - else - vcs_dirty="${vcs_dirty}*" - fi - if git diff-index --cached --quiet --ignore-submodules HEAD; then - : - else - vcs_dirty="${vcs_dirty}+" - fi - if [[ -z "${vcs_branch}" ]]; then - vcs_branch=$(git rev-parse --short HEAD) - else - vcs_branch=${vcs_branch#refs/heads/} - if git show-ref -q --verify "refs/remotes/origin/$vcs_branch"; then - git_base=$(git merge-base HEAD origin/$vcs_branch) - if [[ "${git_base}" == "$(git rev-parse HEAD)" ]]; then - vcs_local_commits="-$(git rev-list HEAD..origin/$vcs_branch | wc -l)" - elif [[ "${git_base}" == "$(git rev-parse origin/$vcs_branch)" ]]; then - vcs_local_commits="+$(git rev-list origin/${vcs_branch}..HEAD | wc -l)" - else - vcs_local_commits="+$(git rev-list ${git_base}..HEAD | wc -l)-$(git rev-list ${git_base}..origin/$vcs_branch | wc -l)" - fi - fi - fi - if [[ -e "${git_dir}/MERGE_HEAD" ]]; then - vcs_state='merge' - fi - if [[ -d "${git_dir}/rebase-apply" || -d "${git_dir}/rebase-merge" ]]; then - vcs_state='rebase' - fi - if [[ -e "${git_dir}/BISECT_START" ]]; then - vcs_state='bisect' - fi - if [[ "x$vcs_branch" == "xmaster" ]]; then - vcs_branch='' - fi - ;; - *) return 0 ;; - esac - if [[ -n "$vcs_branch" ]]; then - vcs_branch=":$vcs_branch" - fi - if [[ -n "$vcs_state" ]]; then - vcs_state="(${vcs_state:0:1})" - fi - if [[ "$vcs_local_commits" == "-0" ]]; then - vcs_local_commits='' - fi - if [[ -n "$vcs_local_commits" ]]; then - vcs_local_commits=":$vcs_local_commits" - fi - __vcs="(${vcs:0:1}${vcs_dirty}${vcs_branch}${vcs_local_commits}${vcs_state})" -} -export PROMPT_COMMAND="_set_error;_set_vcs;$PROMPT_COMMAND" -export PS1="\[\$__error_color\]\$__error \[${HIYELLOW}\][\t] \[${HIGREEN}\]\u@\h \[${HIBLUE}\]\W\[${CYAN}\]\$__vcs \[${HIBLUE}\]\\$\[${NORM}\] " +export PROMPT_COMMAND="__err=\$?;$PROMPT_COMMAND;PS1=\"\$(fancy-prompt "\$__err")\"" # }}} # set the correct perl {{{ if type -a perlbrew > /dev/null 2>&1; then -- cgit v1.2.3-54-g00ecf