[Bash-completion-commits] [SCM] bash-completion branch, master, updated. 1.3-34-g0ae464e
Ville Skyttä
ville.skytta at iki.fi
Sun Mar 20 16:25:00 UTC 2011
The following commit has been merged in the master branch:
commit 4f4c7f2d1f5ddd94d3cde1d561b6cefe928d3ea8
Author: Ville Skyttä <ville.skytta at iki.fi>
Date: Sun Mar 20 18:05:54 2011 +0200
Add bunch of tar option completions.
diff --git a/completions/tar b/completions/tar
index f6592c9..02e2dec 100644
--- a/completions/tar
+++ b/completions/tar
@@ -3,17 +3,17 @@
have tar && {
_tar()
{
- local cur ext regex tar untar
+ local cur prev words ext regex tar untar
COMPREPLY=()
- _get_comp_words_by_ref cur
+ _get_comp_words_by_ref cur prev words
if [ $COMP_CWORD -eq 1 ]; then
COMPREPLY=( $( compgen -W 'c t x u r d A' -- "$cur" ) )
return 0
fi
- case ${COMP_WORDS[1]} in
+ case ${words[1]} in
?(-)[cr]*f)
_filedir
return 0
@@ -40,19 +40,74 @@ _tar()
;;
esac
- if [[ "$COMP_LINE" == *$ext' ' ]]; then
- # complete on files in tar file
- #
- # get name of tar file from command line
- tar=$( sed -e 's/^.* \([^ ]*'$regex'\) .*$/\1/' <<<"$COMP_LINE" )
- # devise how to untar and list it
- untar=t${COMP_WORDS[1]//[^IJzjyf]/}
+ local split=false
+ _split_longopt && split=true
- local IFS=$'\n'
- COMPREPLY=( $( compgen -W "$( printf '%s\n' $( tar $untar $tar \
- 2>/dev/null ) )" -- "$cur" ) )
- return 0
- fi
+ case $prev in
+ *$ext)
+ # complete on files in tar file
+ #
+ # get name of tar file from command line
+ tar=$( sed -e 's/^.* \([^ ]*'$regex'\) .*$/\1/' <<<"$COMP_LINE" )
+ # devise how to untar and list it
+ untar=t${words[1]//[^IJzjyf]/}
+
+ local IFS=$'\n'
+ COMPREPLY=( $( compgen -W "$( printf '%s\n' $( tar $untar $tar \
+ 2>/dev/null ) )" -- "$cur" ) )
+ return 0
+ ;;
+ -C|--directory)
+ _filedir -d
+ return 0
+ ;;
+ --atime-preserve)
+ COMPREPLY=( $( compgen -W 'replace system' -- "$cur" ) )
+ return 0
+ ;;
+ --group)
+ COMPREPLY=( $( compgen -g -- "$cur" ) )
+ return 0
+ ;;
+ --owner)
+ COMPREPLY=( $( compgen -u -- "$cur" ) )
+ return 0
+ ;;
+ -F|--info-script|--new-volume-script|--rmt-command|--rsh-command|\
+ -I|--use-compress-program)
+ _compopt_o_filenames
+ COMPREPLY=( $( compgen -c -- "$cur" ) )
+ return 0
+ ;;
+ --volno-file|--add-file|-T|--files-from|-X|--exclude-from|--index-file)
+ _filedir
+ return 0
+ ;;
+ -H|--format)
+ COMPREPLY=( $( compgen -W 'gnu oldgnu pax posix ustar v7' \
+ -- "$cur" ) )
+ return 0
+ ;;
+ --quoting-style)
+ COMPREPLY=( $( compgen -W 'literal shell shell-always c c-maybe
+ escape locale clocale' -- "$cur" ) )
+ return 0
+ ;;
+ --totals)
+ COMPREPLY=( $( compgen -W 'SIGHUP SIGQUIT SIGINT SIGUSR1 SIGUSR2' \
+ -- "$cur" ) )
+ return 0
+ ;;
+ --occurrence|--sparse-version|--to-command|--mode|--mtime|\
+ --tape-length|-b|--blocking-factor|--record-size|-V|--text|--backup|\
+ --exclude|--exclude-tag*|-K|--starting-file|-N|--newer|--after-date|\
+ --suffix|--strip-components|--transform|--xform|--checkpoint|\
+ --checkpoint-action|--no-quote-chars|--quote-chars|--warnings)
+ return 0
+ ;;
+ esac
+
+ $split && return 0
# file completion on relevant files
_filedir "$ext"
--
bash-completion
More information about the Bash-completion-commits
mailing list