! has_completion $cmd && complete -A hostname $cmd
done
- if has_completion wget; then
- _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
+ delegate_completion() {
+ local prog completion_f programs
+ prog="$1"
+ completion_f="$2"
+ shift; shift
+ programs="$@"
+ if has_completion "$prog"; then
+ eval "_${prog}_completion_loader() {
+ _completion_loader $prog
+ complete -F $completion_f $programs
+ unset _${prog}_completion_loader
+ return 124
+ }"
+ complete -F _"$prog"_completion_loader $programs
+ 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
+ delegate_completion make _make m
+ delegate_completion rsync _rsync r
+ delegate_completion ssh _ssh s
+ delegate_completion wget _wget wget-m wget-wrapper ww
- unset has_completion
+ unset has_completion delegate_completion
complete -A job bg fg j jobs wait
- complete -A variable unset
+ complete -A variable -A function unset
if [ -d "$HOME/lib/config" ]; then
complete -W "`cd \"$HOME/lib/config\" && echo *`" include
# 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
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