@@ -15,20 +15,17 @@ _comp_cmd_7z()
1515
1616 case $cur in
1717 -ao* )
18- _comp_compgen -c " ${cur : 3} " -- -P " ${cur : 0 : 3} " -W ' a s t u'
18+ _comp_compgen -P " -ao " -- -W ' a s t u'
1919 return
2020 ;;
2121 -? (a)[ix]* )
22- local opt
23- if [[ $cur == -a [ix]* ]]; then
24- opt=${cur: 0: 3} cur=${cur: 3}
25- else
26- opt=${cur: 0: 2} cur=${cur: 2}
27- fi
2822 if [[ $cur != * [@\! ]* ]]; then
29- _comp_compgen -- -P" $opt " -W ' @ ! r@ r-@ r0@ r! r-! r0!'
30- elif [[ $cur == ? (r@ (-| 0| ))@* ]]; then
31- _comp_compgen -c " ${cur#*@ } " -- -P" ${opt}${cur%%@* } @" -f
23+ [[ $cur =~ ^-a? [ix] ]]
24+ local prefix=${BASH_REMATCH-}
25+ _comp_compgen -P " $prefix " -- -W ' @ ! r@ r-@ r0@ r! r-! r0!'
26+ elif [[ $cur =~ ^-a? [ix](r| r-| r0)? @ ]]; then
27+ local prefix=${BASH_REMATCH-}
28+ _comp_compgen -P " $prefix " -- -f
3229 compopt -o filenames
3330 fi
3431 return
@@ -43,31 +40,30 @@ _comp_cmd_7z()
4340 ;;
4441 -o* | -w?* )
4542 compopt -o filenames
46- _comp_compgen -c " ${cur: 2} " -- -d -P " ${cur : 0 : 2} " -S/
43+ _comp_compgen -P " ${cur: 0 : 2} " -- -d -S/
4744 compopt -o nospace
4845 return
4946 ;;
5047 -r?* )
51- _comp_compgen -c " ${cur : 2} " -- -P " ${cur : 0 : 2} " -W ' - 0'
48+ _comp_compgen -P " -r " -- -W ' - 0'
5249 return
5350 ;;
5451 -scs* )
55- _comp_compgen -c " ${cur : 4} " -- -P " ${cur : 0 : 4} " -W ' UTF-8 WIN DOS'
52+ _comp_compgen -P " -scs " -- -W ' UTF-8 WIN DOS'
5653 return
5754 ;;
5855 -ssc?* )
59- _comp_compgen -c " ${cur : 4} " -- -P " ${cur : 0 : 4} " -W ' -'
56+ _comp_compgen -P " -ssc " -- -W ' -'
6057 return
6158 ;;
6259 -t* )
6360 if [[ $mode == w ]]; then
64- _comp_compgen -c " ${cur: 2} " -- -P" ${cur: 0: 2} " -W ' 7z bzip2 gzip
65- swfc tar wim xz zip'
61+ _comp_compgen -P " -t" -- -W ' 7z bzip2 gzip swfc tar wim xz zip'
6662 else
67- _comp_compgen -c " ${cur : 2} " -- -P " ${cur : 0 : 2} " - W ' 7z apm arj
68- bzip2 cab chm cpio cramfs deb dmg elf fat flv gzip hfs iso
69- lzh lzma lzma86 macho mbr mslz mub nsis ntfs pe ppmd rar
70- rpm squashfs swf swfc tar udf vhd wim xar xz z zip'
63+ _comp_compgen -P " -t " -- -W ' 7z apm arj bzip2 cab chm cpio
64+ cramfs deb dmg elf fat flv gzip hfs iso lzh lzma lzma86
65+ macho mbr mslz mub nsis ntfs pe ppmd rar rpm squashfs swf
66+ swfc tar udf vhd wim xar xz z zip'
7167 fi
7268 return
7369 ;;
0 commit comments