Move completions to separate file.
authorOleksandr Gavenko <gavenkoa@gmail.com>
Mon, 02 Jan 2012 18:34:55 +0200
changeset 283 eb383cf7ba80
parent 282 3710f0a122cd
child 284 3351fda649d5
Move completions to separate file.
.bash_completion
.bashrc
--- a/.bash_completion	Mon Jan 02 18:13:50 2012 +0200
+++ b/.bash_completion	Mon Jan 02 18:34:55 2012 +0200
@@ -1,10 +1,156 @@
 
-if [[ -s ~/.bash_completion.d ]]; then
-  for f in ~/.bash_completion.d/* ~/.bash_completion.d/.*; do
-    . $f
+# user commands see only users
+complete -u su passwd write chfn groups slay w sux
+
+# bg completes with stopped jobs
+complete -A stopped -P '"%' -S '"' bg
+
+# other job commands
+complete -j -P '"%' -S '"' fg jobs disown
+
+# readonly and unset complete with shell variables
+complete -v readonly unset
+
+# set completes with set options
+complete -A setopt set
+
+# shopt completes with shopt options
+complete -A shopt shopt
+
+# helptopics
+complete -A helptopic help
+
+# unalias completes with aliases
+complete -a unalias
+
+# bind completes with readline bindings (make this more intelligent)
+complete -A binding bind
+
+# type and which complete on commands
+complete -c command type which
+
+# builtin completes on builtins
+complete -b builtin
+
+_hgsyncew() {
+  local cur=${COMP_WORDS[COMP_CWORD]}
+  COMPREPLY=( $(compgen -W "--push" -- $cur) )
+  return 0
+}
+complete -F _hgsyncew -o nospace hgsyncew
+
+_pathsearch() {
+  local prev cur=${COMP_WORDS[COMP_CWORD]}
+  [[ $COMP_CWORD > 0 ]] && prev=${COMP_WORDS[COMP_CWORD-1]}
+  if [[ $prev = -d ]]; then
+    COMPREPLY=()
+    return 0
+  fi
+  case "$cur" in
+    -*) COMPREPLY=( $(compgen -W "-d --delimiter= -h --help" -- $cur ) ) ;;
+    *) COMPREPLY=() ;;
+  esac
+  return 0
+}
+complete -F _pathsearch -o nospace pathsearch
+
+_mycd() {
+  local cur
+  cur=${COMP_WORDS[COMP_CWORD]}
+  if [[ -z "${CDPATH:-}" || "$cur" == ?(.)?(.)/* ]]; then
+    COMPREPLY=( $(compgen -d -- "$cur") )
+    return 0
+  fi
+  local i j k
+  for i in ${CDPATH//:/$'\n'}; do
+    k="${#COMPREPLY[@]}"
+    for j in $( compgen -d -- $i/$cur ); do
+      COMPREPLY[k++]=${j#$i/}
+    done
   done
-fi
+  return 0
+}
+complete -F _mycd -o nospace cd
+
+_man() {
+  local p
+  local cur=${COMP_WORDS[COMP_CWORD]}
+  if [[ $cur = /* || $cur = ./* ]]; then
+    COMPREPLY=( $(compgen -f -- $cur) )
+  fi
+  local IFS=':
+'
+  for p in /usr/share/man $MANPATH; do
+    [[ -n $p ]] || continue
+    p=( $p/man*/* )
+    p=( ${p[@]##*/} )
+    p=( ${p[@]%.gz} )
+    p=( ${p[@]%.*} )
+    p=( $(compgen -W '${p[@]}' -- $cur ) )
+    COMPREPLY=( ${COMPREPLY[@]} ${p[@]} )
+  done
+}
+complete -F _man man
 
-# Local variables:
-# mode: shell-script
-# End:
+_make() {
+  local i mk
+  local dir=.
+  local cur=${COMP_WORDS[COMP_CWORD]}
+  if [[ $cur = -* ]]; then
+    COMPREPLY=( $(compgen -W "-C -f" -- "$cur") )
+    return 0
+  fi
+  [[ $COMP_CWORD > 0 ]] && prev=${COMP_WORDS[COMP_CWORD-1]}
+  for (( i=1; i < ${#COMP_WORDS[@]}-1; i++ )); do
+    case ${COMP_WORDS[i]} in
+      -f) mk=${COMP_WORDS[i+1]} ;;
+      -C) dir=${COMP_WORDS[i+1]} ;;
+    esac
+  done
+  if [[ $prev = -C ]]; then
+    COMPREPLY=( $(compgen -d -- "$cur") )
+    return 0
+  fi
+  if [[ $prev = -f ]]; then
+    COMPREPLY=( $(cd $dir >/dev/null 2>&1; compgen -f -- "$cur") )
+    return 0
+  fi
+  mk=$dir/$mk
+  [[ -f $mk ]] || mk=$(eval echo $dir/[Mm]akefile)
+  [[ -f $mk ]] || return 1
+  COMPREPLY=( $(compgen -W "$(sed -n -e '/^[[:alnum:]_-]*:/{s=^\([^:]*\):.*=\1=;p;}' $mk)" -- $cur) )
+  return 0
+}
+complete -F _make make gmake pmake
+
+_cygcheck() {
+  local opt
+  local cur=${COMP_WORDS[COMP_CWORD]}
+  case $COMP_CWORD in
+    1)
+      case $cur in
+        -*)
+          COMPREPLY=( $(compgen -W "-v --verbose -h --help -V --version -c --check-setup -s --sysinfo
+            -k --keycheck -f --find-package -l --list-package -p --package-query" -- "$cur") )
+          return 0 ;;
+        *)
+          COMPREPLY=( $(compgen -c -- "$cur") )
+          return 0 ;;
+      esac
+      ;;
+    2)
+      opt=${COMP_WORDS[1]}
+      case $opt in
+        -c|--check-setup|-l|--list-package)
+          pkgs=( /etc/setup/*.lst.gz )
+          pkgs=( ${pkgs[@]##*/} )
+          pkgs=( ${pkgs[@]%.lst.gz} )
+          COMPREPLY=( $(compgen -W '${pkgs[@]}' -- $cur ) )
+          return 0;;
+      esac
+      return 0;;
+  esac
+  return 0
+}
+complete -F _cygcheck cygcheck.exe cygcheck
+
--- a/.bashrc	Mon Jan 02 18:13:50 2012 +0200
+++ b/.bashrc	Mon Jan 02 18:34:55 2012 +0200
@@ -131,173 +131,22 @@
 ################################################################
 # Completion.
 
-# user commands see only users
-complete -u su passwd write chfn groups slay w sux
-
-# bg completes with stopped jobs
-complete -A stopped -P '"%' -S '"' bg
-
-# other job commands
-complete -j -P '"%' -S '"' fg jobs disown
-
-# readonly and unset complete with shell variables
-complete -v readonly unset
-
-# set completes with set options
-complete -A setopt set
-
-# shopt completes with shopt options
-complete -A shopt shopt
-
-# helptopics
-complete -A helptopic help
-
-# unalias completes with aliases
-complete -a unalias
-
-# bind completes with readline bindings (make this more intelligent)
-complete -A binding bind
-
-# type and which complete on commands
-complete -c command type which
-
-# builtin completes on builtins
-complete -b builtin
-
-_hgsyncew() {
-  local cur=${COMP_WORDS[COMP_CWORD]}
-  COMPREPLY=( $(compgen -W "--push" -- $cur) )
-  return 0
-}
-complete -F _hgsyncew -o nospace hgsyncew
-
-_pathsearch() {
-  local prev cur=${COMP_WORDS[COMP_CWORD]}
-  [[ $COMP_CWORD > 0 ]] && prev=${COMP_WORDS[COMP_CWORD-1]}
-  if [[ $prev = -d ]]; then
-    COMPREPLY=()
-    return 0
-  fi
-  case "$cur" in
-    -*) COMPREPLY=( $(compgen -W "-d --delimiter= -h --help" -- $cur ) ) ;;
-    *) COMPREPLY=() ;;
-  esac
-  return 0
-}
-complete -F _pathsearch -o nospace pathsearch
-
-_mycd() {
-  local cur
-  cur=${COMP_WORDS[COMP_CWORD]}
-  if [[ -z "${CDPATH:-}" || "$cur" == ?(.)?(.)/* ]]; then
-    COMPREPLY=( $(compgen -d -- "$cur") )
-    return 0
-  fi
-  local i j k
-  for i in ${CDPATH//:/$'\n'}; do
-    k="${#COMPREPLY[@]}"
-    for j in $( compgen -d -- $i/$cur ); do
-      COMPREPLY[k++]=${j#$i/}
-    done
-  done
-  return 0
-}
-complete -F _mycd -o nospace cd
-
-_man() {
-  local p
-  local cur=${COMP_WORDS[COMP_CWORD]}
-  if [[ $cur = /* || $cur = ./* ]]; then
-    COMPREPLY=( $(compgen -f -- $cur) )
-  fi
-  local IFS=':
-'
-  for p in /usr/share/man $MANPATH; do
-    [[ -n $p ]] || continue
-    p=( $p/man*/* )
-    p=( ${p[@]##*/} )
-    p=( ${p[@]%.gz} )
-    p=( ${p[@]%.*} )
-    p=( $(compgen -W '${p[@]}' -- $cur ) )
-    COMPREPLY=( ${COMPREPLY[@]} ${p[@]} )
-  done
-}
-complete -F _man man
-
-_make() {
-  local i mk
-  local dir=.
-  local cur=${COMP_WORDS[COMP_CWORD]}
-  if [[ $cur = -* ]]; then
-    COMPREPLY=( $(compgen -W "-C -f" -- "$cur") )
-    return 0
-  fi
-  [[ $COMP_CWORD > 0 ]] && prev=${COMP_WORDS[COMP_CWORD-1]}
-  for (( i=1; i < ${#COMP_WORDS[@]}-1; i++ )); do
-    case ${COMP_WORDS[i]} in
-      -f) mk=${COMP_WORDS[i+1]} ;;
-      -C) dir=${COMP_WORDS[i+1]} ;;
-    esac
-  done
-  if [[ $prev = -C ]]; then
-    COMPREPLY=( $(compgen -d -- "$cur") )
-    return 0
-  fi
-  if [[ $prev = -f ]]; then
-    COMPREPLY=( $(cd $dir >/dev/null 2>&1; compgen -f -- "$cur") )
-    return 0
-  fi
-  mk=$dir/$mk
-  [[ -f $mk ]] || mk=$(eval echo $dir/[Mm]akefile)
-  [[ -f $mk ]] || return 1
-  COMPREPLY=( $(compgen -W "$(sed -n -e '/^[[:alnum:]_-]*:/{s=^\([^:]*\):.*=\1=;p;}' $mk)" -- $cur) )
-  return 0
-}
-complete -F _make make gmake pmake
-
-_cygcheck() {
-  local opt
-  local cur=${COMP_WORDS[COMP_CWORD]}
-  case $COMP_CWORD in
-    1)
-      case $cur in
-        -*)
-          COMPREPLY=( $(compgen -W "-v --verbose -h --help -V --version -c --check-setup -s --sysinfo
-            -k --keycheck -f --find-package -l --list-package -p --package-query" -- "$cur") )
-          return 0 ;;
-        *)
-          COMPREPLY=( $(compgen -c -- "$cur") )
-          return 0 ;;
-      esac
-      ;;
-    2)
-      opt=${COMP_WORDS[1]}
-      case $opt in
-        -c|--check-setup|-l|--list-package)
-          pkgs=( /etc/setup/*.lst.gz )
-          pkgs=( ${pkgs[@]##*/} )
-          pkgs=( ${pkgs[@]%.lst.gz} )
-          COMPREPLY=( $(compgen -W '${pkgs[@]}' -- $cur ) )
-          return 0;;
-      esac
-      return 0;;
-  esac
-  return 0
-}
-complete -F _cygcheck cygcheck.exe cygcheck
-
-# Use bash-completion, if available.
+# Use system wide completion, if available.
 if [ -f /etc/bash_completion ]; then
-  # Under Cygwin bash completition start a long time.
+  # Under Cygwin bash completition take a long time for starting.
   if [ ! "$OSTYPE" = cygwin ]; then
     . /etc/bash_completion
-  else
-    # But load local completion anyway.
-    if [ -f ~/.bash_completion ]; then
-      . ~/.bash_completion
-    fi
   fi
-fi
-if [ -f $HOME/usr/etc/bash_completion ]; then
+elif [ -f $HOME/usr/etc/bash_completion ]; then
   . $HOME/usr/etc/bash_completion
 fi
+# Load local completions.
+if [ -f ~/.bash_completion ]; then
+  . ~/.bash_completion
+fi
+if [ -d ~/.bash_completion.d ]; then
+  for f in ~/.bash_completion.d/* ~/.bash_completion.d/.*; do
+    . $f
+  done
+fi
+