]> git.phdru.name Git - dotfiles.git/blobdiff - .shellrc
.shellrc: uncomment and refactor function chlo
[dotfiles.git] / .shellrc
index e43c215913f3778b697c0804991596ffb8d6a761..6e2fa0532e4fd55ade495f8137b556b25e1dc78a 100644 (file)
--- a/.shellrc
+++ b/.shellrc
@@ -9,11 +9,11 @@
 # If not running interactively, don't do anything
 case $- in
     *i*) ;;
-      *) return;;
+      *) return ;;
 esac
 
 # Stop if non-interactive shell
-[ -z "$PS1" ] && return
+[ -z "$PS1" ] && return
 
 if test -n "$BASH_VERSION"; then
    # append to the history file, don't overwrite it
@@ -68,7 +68,6 @@ if test -n "$BASH_VERSION"; then
    [ "`type -t mc`" = alias ] && unalias mc
 
    back() { cd - "$@"; }
-   clo() { clear; logout; }
    functions() { typeset -f "$@"; }
    j() { jobs; }
 
@@ -112,45 +111,37 @@ if test -n "$BASH_VERSION"; then
          ! 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
@@ -164,40 +155,12 @@ if test -n "$BASH_VERSION"; then
 
 elif test -n "$KSH_VERSION" -o -n "$FCEDIT"; then
    back() { cd - "$@"; }
-   clo() { clear; exit; }
    j() { jobs; }
-
-else
-   clo() { clear; exit; }
 fi
 
 
-# clear history, clear screen and logout
-#chlo() { cd; unset HISTFILE; rm -f .sh_history; history -c; clo; }
-
-
-#Pwd() { pwd | sed "s/.*\/\(.*\)\/\(.*\)\/\(.*\)\/\(.*\)/...\/\2\/\3\/\4/"; }
-#PWd() { pwd | sed "s/.*\/\(.*\)\/\(.*\)/...\/\2/"; }
-
-
-psg()   { ps auxw   | grep -i "$@" | grep -v '\(ps auxw\|grep\)'; }
-pswg()  { ps auxwww | grep -i "$@" | grep -v '\(ps auxw\|grep\)'; }
-
-# Like pgrep -f
-pidOf() { ps auxwww | grep -i "$@" | grep -v '\(ps auxw\|grep\|pidOf\|KillAll\)' | awk '{print $2}'; }
-
-# 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
-      kill "$1" `pidOf "$2"`
-   fi
-}
+# clear screen and history, logout
+chlo() { clear; cd; >$HISTFILE; unset HISTFILE; history -c; logout || exit; }
 
 
 if test -x /usr/bin/git >/dev/null 2>&1; then