]> git.phdru.name Git - dotfiles.git/blobdiff - .shellrc
Feat(bash-prompt): Remove `[]`
[dotfiles.git] / .shellrc
index 8876507d44808c5d1e554b77df5f1449df804c28..7388d5a59743eb30f696805401708f4ed5f5c751 100644 (file)
--- a/.shellrc
+++ b/.shellrc
@@ -66,37 +66,41 @@ if test -n "$BASH_VERSION"; then
    functions() { typeset -f "$@"; }
    j() { jobs; }
 
-   has_completion() { return 0; }
    if [ -z "$BASH_COMPLETION_COMPAT_DIR" ]; then
       if [ -d /usr/share/bash-completion -a -r /usr/share/bash-completion/bash_completion ]; then
+         _BASH_COMPLETIONS_DIR=/usr/share/bash-completion/completions
          . /usr/share/bash-completion/bash_completion
-         has_completion() { [ -r /usr/share/bash-completion/completions/$1 ]; }
       elif [ -r /etc/bash_completion ]; then
+         _BASH_COMPLETIONS_DIR=/etc/bash_completion.d
          . /etc/bash_completion
-         has_completion() { [ -r /etc/bash_completion.d/$1 ]; }
       elif [ -d /etc/bash_completion.d ]; then
+         _BASH_COMPLETIONS_DIR=/etc/bash_completion.d
          for _compf in /etc/bash_completion.d/*; do
             . $_compf
          done
-         has_completion() { [ -r /etc/bash_completion.d/$1 ]; }
       elif [ -d /usr/local/etc/bash_completion.d ]; then
+         _BASH_COMPLETIONS_DIR=/usr/local/etc/bash_completion.d
          for _compf in /usr/local/etc/bash_completion.d/*; do
             . $_compf
          done
-         has_completion() { [ -r /usr/local/etc/bash_completion.d/$1 ]; }
       else
          echo "Unknown OS type, cannot source bash_completion" >&2
       fi
    fi
 
+   has_completion() {
+      [ -n "$_BASH_COMPLETIONS_DIR" -a -d "$_BASH_COMPLETIONS_DIR" -a -r "$_BASH_COMPLETIONS_DIR/$1" ] ||
+      complete -p $1 >/dev/null 2>&1
+   }
+
    for cmd in builtin cgmem_nice command dbus-launch exec \
          killall man nice nohup pidof pidOf KillAll pgrep pkill psg pswg \
-         run-all-hosts su sudo time whence whereis which xargs; do
+         run-hosts su sudo time whence whereis which xargs; do
       ! has_completion $cmd && complete -o default -A command $cmd
    done
 
-   for cmd in dig host mtr nslookup nc netcat nmap p ping ping6 socat \
-         telnet t tt \
+   for cmd in dig host mtr nslookup nc netcat nmap p ping ping6 \
+         ssh2 s2 socat telnet t tt \
          tcptraceroute tcptraceroute6 tracert tracert6 traceroute traceroute6 \
          whois wd wget wget-download wget-m wget-wrapper ww; do
       ! has_completion $cmd && complete -A hostname $cmd
@@ -107,6 +111,16 @@ if test -n "$BASH_VERSION"; then
       ! has_completion $cmd && complete -o default -A hostname $cmd
    done
 
+   for cmd in bg fg jobs; do
+      ! has_completion $cmd && complete -A job $cmd
+   done
+
+   complete -A job j wait
+
+   for cmd in unset; do
+      ! has_completion $cmd && complete -A function -A variable $cmd
+   done
+
    if [ -d "$HOME"/.bash_completion.d ]; then
       for _compf in "$HOME"/.bash_completion.d/*; do
          . $_compf
@@ -116,17 +130,16 @@ if test -n "$BASH_VERSION"; then
    delegate_completion() {
       local prog programs
       prog=$1
-      if has_completion $prog; then
-         shift
-         programs="$@"
-         eval "_${prog}_completion_loader() {
-            _completion_loader $prog
-            complete -o nospace -F _$prog $programs
-            unset _${prog}_completion_loader
-            return 124
-         }"
-         complete -F _${prog}_completion_loader $programs
-      fi
+      ! has_completion $prog && return
+      shift
+      programs="$@"
+      eval "_${prog}_completion_loader() {
+         _completion_loader $prog
+         complete -o nospace -F _$prog $programs
+         unset _${prog}_completion_loader
+         return 124
+      }"
+      complete -F _${prog}_completion_loader $programs
    }
 
    delegate_completion make m
@@ -135,10 +148,7 @@ if test -n "$BASH_VERSION"; then
    delegate_completion ssh s
    delegate_completion wget wget-m wget-wrapper ww
 
-   unset has_completion delegate_completion
-
-   complete -A job bg fg j jobs wait
-   complete -A variable -A function unset
+   unset _BASH_COMPLETIONS_DIR has_completion delegate_completion
 
    if [ -d "$HOME/lib/config" ]; then
       complete -W "`cd \"$HOME/lib/config\" && echo *`" include
@@ -320,12 +330,13 @@ fi
 
 include() {
    cfg="$1"
+   shift
    if [ -f "./$cfg" -a -r "./$cfg" ]; then
       echo "Reading config file \`$cfg'" 1>&2
-      . "./$cfg"
+      . "./$cfg" "$@"
    elif [ -f "$HOME/lib/config/$cfg" -a -r "$HOME/lib/config/$cfg" ]; then
       echo "Reading config file \`$HOME/lib/config/$cfg'" 1>&2
-      . "$HOME/lib/config/$cfg"
+      . "$HOME/lib/config/$cfg" "$@"
    else
       echo "Cannot find config file \`$cfg'" 1>&2
    fi
@@ -336,10 +347,17 @@ mc() {
    if test -n "$BASH_VERSION"; then
       MC_SAVE_OPS1="$OPS1"
       if [ "`type -t short_curdir`" = function ]; then
-         OPS1="\`cgmem_which_prompt\`\u@\${HOSTNAME::5}:\`short_curdir\` "
-         OPS1+="\$(prompt_git)\\$\$SHLVL "
+         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
+         OPS1+=" \$SHLVL\\$ "
       else
-         OPS1="\u@\h:\W \\$"
+         OPS1="\u@\h:\W \$SHLVL\\$ "
       fi
    fi