]> git.phdru.name Git - dotfiles.git/blobdiff - .shellrc
.profile: use xhost to allow root to run X apps
[dotfiles.git] / .shellrc
index 0b880623b992fb2d89e7809b3eeb6b2a29274002..e43c215913f3778b697c0804991596ffb8d6a761 100644 (file)
--- a/.shellrc
+++ b/.shellrc
@@ -113,13 +113,40 @@ if test -n "$BASH_VERSION"; then
    done
 
    if has_completion wget; then
-      complete -F _wget wget-m wget-wrapper ww
+      _wget_completion_loader() {
+         _completion_loader wget
+         complete -F _wget wget-m wget-wrapper ww
+         unset _wget_completion_loader
+         return 124
+      }
+      complete -F _wget_completion_loader wget-m wget-wrapper ww
    fi
 
    for cmd in distribute ftp lftp r rsync \
       s scp ssh smbclient tcpdump tshark wireshark; do
          ! has_completion $cmd && complete -o default -A hostname $cmd;
    done
+
+   if has_completion rsync; then
+      _rsync_completion_loader() {
+         _completion_loader rsync
+         complete -F _rsync r
+         unset _rsync_completion_loader
+         return 124
+      }
+      complete -F _rsync_completion_loader r
+   fi
+
+   if has_completion ssh; then
+      _ssh_completion_loader() {
+         _completion_loader ssh
+         complete -F _ssh s
+         unset _ssh_completion_loader
+         return 124
+      }
+      complete -F _ssh_completion_loader s
+   fi
+
    unset has_completion
 
    complete -A job bg fg j jobs wait
@@ -161,6 +188,10 @@ pidOf() { ps auxwww | grep -i "$@" | grep -v '\(ps auxw\|grep\|pidOf\|KillAll\)'
 
 # A kind of pkill/killall
 KillAll() {
+   if [ -z "$1" -o -n "$3" ]; then
+      echo "Usage: KillAll [-signal] proc_regexp" >&2
+      return 1
+   fi
    if [ -z "$2" ]; then
       kill `pidOf "$1"`
    else
@@ -172,21 +203,32 @@ KillAll() {
 if test -x /usr/bin/git >/dev/null 2>&1; then
    # chdir to a remote's directory (if the remote is on the local FS)
    cdremote() {
+      if [ -z "$1" -o -n "$2" ]; then
+         echo "Usage: cdremote remote_name" >&2
+         return 1
+      fi
       cd "`git config --get remote.$1.url`"
    }
 
    if test -n "$BASH_VERSION"; then
       # completion for global aliases in .gitconfig
-      # fixup rbi rbia rbiap rbip - delegate to git-rebase completion
 
-      _git_fixup() { _git_rebase ; }
-      _git_rbi() { _git_rebase ; }
-      _git_rbia() { _git_rebase ; }
-      _git_rbiap() { _git_rebase ; }
-      _git_rbip() { _git_rebase ; }
+      # fixup rbi rbia rbiap rbip - do refs name completion
+      _git_fixup() { __gitcomp_nl "$(__git_refs)" ; }
+      _git_rbi() { __gitcomp_nl "$(__git_refs)" ; }
+      _git_rbia() { __gitcomp_nl "$(__git_refs)" ; }
+      _git_rbiap() { __gitcomp_nl "$(__git_refs)" ; }
+      _git_rbip() { __gitcomp_nl "$(__git_refs)" ; }
+      #
+      # push-to-all-remotes - do branch name completion
+      _git_push_to_all_remotes() { __gitcomp_nl "$(__git_heads)" ; }
 
       # list remotes with URLs matching a regexp
       _list_remotes() {
+         if [ -z "$1" -o -n "$2" ]; then
+            echo "Usage: _list_remotes remote_regexp" >&2
+            return 1
+         fi
          GIT_REMOTES=""
          local remote
          for remote in `git remote`; do
@@ -196,22 +238,24 @@ if test -x /usr/bin/git >/dev/null 2>&1; then
          done
       }
 
-      # completion for cdremote - list remotes with directories as URLs
-      _cdremote_complete() {
+      # completion for cdremote and git-open - list remotes with a pattern
+      _list_remotes_completion() {
          local cur="${COMP_WORDS[COMP_CWORD]}";
-         _list_remotes '^\(/\|\.\./\)' # (/ or ../ at the beginning)
+         _list_remotes "$1"
          COMPREPLY=(`compgen -W "$GIT_REMOTES" -- "$cur"`)
          unset GIT_REMOTES
       }
 
+      # completion for cdremote - list remotes with directories as URLs
+      _cdremote_complete() {
+         _list_remotes_completion '^\(/\|\.\./\)' # (/ or ../ at the beginning)
+      }
+
       complete -F _cdremote_complete cdremote
 
       # completion for git-open - list remotes with http(s) URLs
       _git_open() {
-         local cur="${COMP_WORDS[COMP_CWORD]}";
-         _list_remotes '^http\(s\)\?://'
-         COMPREPLY=(`compgen -W "$GIT_REMOTES" -- "$cur"`)
-         unset GIT_REMOTES
+         _list_remotes_completion '^http\(s\)\?://'
       }
 
       complete -F _git_open git-open