]> git.phdru.name Git - dotfiles.git/blobdiff - admin/prog/bash_prompt
Feat(bash-prompt): Switch back to `prompt_git`
[dotfiles.git] / admin / prog / bash_prompt
index a262e5e4bd32ce65a1a155ac9e6c7c2ff01ac0f5..eb152c933d7c369d68685166c8c5d26f5cf3da7d 100644 (file)
@@ -25,7 +25,7 @@ short_curdir() {
 
 # bash_prompt; adapted from
 # https://github.com/necolas/dotfiles/blob/master/shell/bash_prompt and
-# http://vitus-wagner.livejournal.com/1176589.html?thread=40146189#t40146189
+# https://github.com/git/git/blob/master/contrib/completion/git-prompt.sh
 
 prompt_git() {
     local s=""
@@ -40,19 +40,14 @@ prompt_git() {
             # ensure index is up to date
             #git update-index --really-refresh -q &>/dev/null
 
-            # check for uncommitted changes in the index
-            if ! $(git diff --quiet --ignore-submodules --cached); then
-                s="$s+";
-            fi
-
             # check for unstaged changes
             if [ -n "$(git ls-files --modified)" ]; then
-                s="$s!";
+                s="$s*";
             fi
 
-            # check for untracked files
-            if [ -n "$(git ls-files --others --exclude-standard)" ]; then
-                s="$s?";
+            # check for uncommitted changes in the index
+            if ! $(git diff --quiet --ignore-submodules --cached); then
+                s="$s+";
             fi
 
             # check for stashed files
@@ -60,6 +55,11 @@ prompt_git() {
                 s="$s$";
             fi
 
+            # check for untracked files
+            if [ -n "$(git ls-files --others --exclude-standard)" ]; then
+                s="$s%";
+            fi
+
         fi
 
         # get the short symbolic ref
@@ -69,11 +69,24 @@ prompt_git() {
                       git rev-parse --short HEAD 2> /dev/null || \
                       printf "(unknown)")"
 
-        [ -n "$s" ] && s=" [$s]"
-        printf "%s" "$branchName$s "
+        [ -n "$s" ] && s=" $s"
+        printf " (%s)" "$branchName$s"
     fi
 }
 
+#if test -x /usr/bin/git >/dev/null 2>&1; then
+#   if [ "`type -t __git_ps1`" != function ]; then
+#      git_sh_prompt=`git --exec-path`/git-sh-prompt
+#      test -r $git_sh_prompt && . $git_sh_prompt || :
+#   fi
+#   if [ "`type -t __git_ps1`" = function ]; then
+#      GIT_PS1_SHOWDIRTYSTATE=true
+#      GIT_PS1_SHOWSTASHSTATE=true
+#      GIT_PS1_SHOWUNTRACKEDFILES=true
+#      GIT_PS1_SHOWUPSTREAM=verbose
+#   fi
+#fi
+
 set_prompts() {
       OPS1=''
       # display the user, host and current working directory
@@ -95,10 +108,16 @@ set_prompts() {
       esac
 
    OPS1+="${debian_chroot:+($debian_chroot)}"
-   OPS1+="\`cgmem_which_prompt\`\u@\${HOSTNAME::5}:\`short_curdir\` "
-   OPS1+="\$(prompt_git)"
-   OPS1+="\\$"
+   OPS1+="\`cgmem_which_prompt\`\u@\${HOSTNAME::5}:\`short_curdir\`"
+   if test -x /usr/bin/git >/dev/null 2>&1; then
+      #if [ "`type -t __git_ps1`" = function ]; then
+      #   OPS1+="\$(__git_ps1)"
+      #else
+         OPS1+="\$(prompt_git)"
+      #fi
+   fi
+   # This is for .screenrc: shelltitle "\$ |$SHELL"
+   #OPS1+="\[\033k\033\\\\\]"
+   OPS1+=" \$SHLVL\\$ "
+   export OPS1
 }
-
-#set_prompts
-#unset set_prompts