Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
PATCH: new xz completion function
- X-seq: zsh-workers 30795
- From: Oliver Kiddle <okiddle@xxxxxxxxxxx>
- To: Zsh workers <zsh-workers@xxxxxxx>
- Subject: PATCH: new xz completion function
- Date: Mon, 12 Nov 2012 09:26:00 +0100
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.co.uk; s=s1024; t=1352708761; bh=r0KybTHRpLrnaxhvcSFmnLmZhbDkmihZcpa9Trg8bjc=; h=X-Yahoo-Newman-Id:X-Yahoo-Newman-Property:X-YMail-OSG:X-Yahoo-SMTP:Received:Received:From:To:Subject:Date:Message-ID; b=yX6si4VIPhLmbP1o2uKoet2nbPoCcU9SuOF//GqfjnxWcA5dkPw4m27/ObbFzHes5jxfGyhUIRrVMgVCGuKL6msB8LNKHKtUl/3ANHWSY10TJTpWS4JDt4meLDKEAGW3SNb8mKzwf6Fe6erqU3SXo+qVy+dRoXq+jgBbGg8+KKY=
- List-help: <mailto:zsh-workers-help@zsh.org>
- List-id: Zsh Workers List <zsh-workers.zsh.org>
- List-post: <mailto:zsh-workers@zsh.org>
- Mailing-list: contact zsh-workers-help@xxxxxxx; run by ezmlm
This adds a new completion function for xz modelled on the bzip2
function. I made some minor changes to _bzip2 in the process such as
adding the --fast and --best options.
Oliver
Index: Completion/Unix/Command/_bzip2
===================================================================
RCS file: /cvsroot/zsh/zsh/Completion/Unix/Command/_bzip2,v
retrieving revision 1.5
diff -u -r1.5 _bzip2
--- Completion/Unix/Command/_bzip2 21 Jan 2004 13:53:29 -0000 1.5
+++ Completion/Unix/Command/_bzip2 12 Nov 2012 08:23:27 -0000
@@ -7,38 +7,29 @@
bzip2recover) [[ $CURRENT = 2 ]] && state=files;;
bzip2) decompress=no;&
bunzip2) _arguments -C -s -S \
- '(--help)-h[display help message]' \
- '(-h)--help[display help message]' \
- '(--decompress --compress -z --test -t)-d[decompress]' \
- '(-d --compress -z --test -t)--decompress[decompress]' \
- '(--compress --decompress -d --test -t)-z[compress]' \
- '(-z --decompress -d --test -t)--compress[compress]' \
- "(--keep)-k[keep (don't delete) input files]" \
- "(-k)--keep[keep (don't delete) input files]" \
- '(--force)-f[force overwrite]' \
- '(-f)--force[force overwrite]' \
- '(--test --decompress -d --compress -z )-t[test compressed file integrity]' \
- '(-t --decompress -d --compress -z )--test[test compressed file integrity]' \
- '(--stdout)-c[write on standard output]' \
- '(-c)--stdout[write on standard output]' \
- '(--quiet)-q[suppress all warnings]' \
- '(-q)--quiet[suppress all warnings]' \
- '*-v[verbose mode]' \
- '*--verbose[verbose mode]' \
- '(--license)-L[display software license]' \
- '(-L)--license[display software license]' \
- '(--version)-V[display version number]' \
- '(-V)--version[display version number]' \
- '(--small)-s[use less memory (at most 2500k)]' \
- '( -2 -3 -4 -5 -6 -7 -8 -9)-1' \
- '(-1 -3 -4 -5 -6 -7 -8 -9)-2' \
- '(-1 -2 -4 -5 -6 -7 -8 -9)-3' \
- '(-1 -2 -3 -5 -6 -7 -8 -9)-4' \
- '(-1 -2 -3 -4 -6 -7 -8 -9)-5' \
- '(-1 -2 -3 -4 -5 -7 -8 -9)-6' \
- '(-1 -2 -3 -4 -5 -6 -8 -9)-7' \
- '(-1 -2 -3 -4 -5 -6 -7 -9)-8' \
- '(-1 -2 -3 -4 -5 -6 -7 -8 )-9' \
+ '(- *)'{-h,--help}'[display help message]' \
+ '(-d --decompress --compress -z --test -t)'{-d,--decompress}'[decompress]' \
+ '(-z --compress --decompress -d --test -t)'{-z,--compress}'[compress]' \
+ '(-k --keep)'{-k,--keep}"[keep (don't delete) input files]" \
+ '(-f --force)'{-f,--force}'[force overwrite]' \
+ '(-t --test --decompress -d --compress -z)'{-t,--test}'[test compressed file integrity]' \
+ '(-c --stdout)'{-c,--stdout}'[write on standard output]' \
+ '(-q --quiet)'{-q,--quiet}'[suppress all warnings]' \
+ \*{-v,--verbose}'[verbose mode]' \
+ '(- *)'{-L,--license}'[display software license]' \
+ '(- *)'{-V,--version}'[display version number]' \
+ '(--small -s)'{-s,--small}'[reduce memory usage (at most 2500k)]' \
+ '(-1 -2 -3 -4 -5 -6 -7 -8 -9 --fast )--best' \
+ '(-1 -2 -3 -4 -5 -6 -7 -8 -9 --best)--fast' \
+ '( -2 -3 -4 -5 -6 -7 -8 -9 --fast --best)-1' \
+ '(-1 -3 -4 -5 -6 -7 -8 -9 --fast --best)-2' \
+ '(-1 -2 -4 -5 -6 -7 -8 -9 --fast --best)-3' \
+ '(-1 -2 -3 -5 -6 -7 -8 -9 --fast --best)-4' \
+ '(-1 -2 -3 -4 -6 -7 -8 -9 --fast --best)-5' \
+ '(-1 -2 -3 -4 -5 -7 -8 -9 --fast --best)-6' \
+ '(-1 -2 -3 -4 -5 -6 -8 -9 --fast --best)-7' \
+ '(-1 -2 -3 -4 -5 -6 -7 -9 --fast --best)-8' \
+ '(-1 -2 -3 -4 -5 -6 -7 -8 --fast --best)-9' \
'*:files:->files' && ret=0
;;
esac
Index: Completion/Unix/Command/_xz
===================================================================
RCS file: Completion/Unix/Command/_xz
diff -N Completion/Unix/Command/_xz
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ Completion/Unix/Command/_xz 12 Nov 2012 08:23:27 -0000
@@ -0,0 +1,85 @@
+#compdef xz unxz xzcat=unxz lzma=xz unlzma=unxz lzcat=unxz -redirect-,<,unxz=unxz -redirect-,>,xz=unxz -redirect-,<,xz=xz -value-,XZ_OPT,-default- -value-,XZ_DEFAULTS,-default-
+
+local decompress files expl state line curcontext="$curcontext" ret=1
+typeset -A opt_args
+local decomp="(-z --compress --decompress -d --test -t --list -l --single-stream --no-sparse)"
+
+files=( '(--files --files0)*:files:->files' )
+case "$service" in
+ *XZ_*)
+ compset -q
+ words=( fake "$words[@]" )
+ (( CURRENT++ ))
+ files=()
+ ;&
+ xz) decompress=no;&
+ unxz) _arguments -C -s -S "$files[@]" \
+ '(- *)'{-h,--help}'[display help message]' \
+ '(- *)'{-H,--long-help}'[display the long help (lists also the advanced options)]' \
+ '(-d --decompress --compress -z --test -t --list -l)'{-d,--decompress}'[decompress]' \
+ "${decomp}"{-z,--compress}'[compress]' \
+ '(-k --keep)'{-k,--keep}"[keep (don't delete) input files]" \
+ '(-f --force)'{-f,--force}'[force overwrite]' \
+ '(-t --test --decompress -d --compress -z --list -l)'{-t,--test}'[test compressed file integrity]' \
+ '(-t --test --decompress -d --compress -z --list -l)'{-l,--list}'[list information about .xz files]' \
+ '(-c --stdout)'{-c,--stdout}'[write on standard output]' \
+ \*{-q,--quiet}'[suppress all warnings]' \
+ \*{-v,--verbose}'[verbose mode]' \
+ '(- *)'{-V,--version}'[display version number]' \
+ '(-e --extreme)'{-e,--extreme}'[try to improve compression ratio by using more CPU time]' \
+ '(-1 -2 -3 -4 -5 -6 -7 -8 -9 --fast )--best' \
+ '(-1 -2 -3 -4 -5 -6 -7 -8 -9 --best)--fast' \
+ '( -2 -3 -4 -5 -6 -7 -8 -9 --fast --best)-1' \
+ '(-1 -3 -4 -5 -6 -7 -8 -9 --fast --best)-2' \
+ '(-1 -2 -4 -5 -6 -7 -8 -9 --fast --best)-3' \
+ '(-1 -2 -3 -5 -6 -7 -8 -9 --fast --best)-4' \
+ '(-1 -2 -3 -4 -6 -7 -8 -9 --fast --best)-5' \
+ '(-1 -2 -3 -4 -5 -7 -8 -9 --fast --best)-6' \
+ '(-1 -2 -3 -4 -5 -6 -8 -9 --fast --best)-7' \
+ '(-1 -2 -3 -4 -5 -6 -7 -9 --fast --best)-8' \
+ '(-1 -2 -3 -4 -5 -6 -7 -8 --fast --best)-9' \
+ "${decomp}--single-stream[decompress only the first stream]" \
+ "${decomp}--no-sparse[do not create sparse files when decompressing]" \
+ '(* --files --files0)--files=-[read list of files to process from file]::file:_files' \
+ '(* --files --files0)--files0=-[read null terminated list of files to process from file]::file:_files' \
+ '(-F --format)'{-F,--format}'=[specify file format]:format;(auto xz lzma raw)' \
+ '(-C --check)'{-C,--check}'=[integrity check type]:check type:(none crc32 crc64 sha256)' \
+ '--memlimit-compress=[set memory usage limit for compression]:memory usage' \
+ '--memlimit-decompress=[set memory usage limit for decompression]:memory usage' \
+ '(-M --memlimit --memory)'{-M+,--memlimit=,--memory=}'[set memory usage limit]:memory usage' \
+ '--no-adjust[give error if settings exceed memory limit]' \
+ '(-Q --no-warn)'{-Q,--no-warn}'[make warnings not affect exit status]' \
+ '--robot[use machine-parsable messages]' \
+ --{x86,powerpc,ia64,arm,armthumb,sparc}=-'[add a branch/call/jump filter]::option:->bcj-options' \
+ --lzma{1,2}=-'[add lzma filter]::option:->lzma-options' \
+ '--delta=-[add delta filter]::option:->delta-options' \
+ '(- *)--info-memory[display amount of RAM and memory usage limits]' && ret=0
+ ;;
+esac
+
+case $state in
+ files)
+ (( $+opt_args[-z] || $+opt_args[--compress] )) && decompress=no
+ [[ -n $opt_args[(i)-([dtl]|-decompress|-test|-list)] ]] && unset decompress
+ if [[ -z "$decompress" ]]; then
+ _description files expl 'compressed file'
+ _files "$expl[@]" -g '*.(xz|txz|lzma|tlz)(-.)' && return
+ else
+ _description files expl 'file to compress'
+ _files "$expl[@]" -g '^*.(xz|txz|lzma|tlz)(-.)' && return
+ fi
+ ;;
+ lzma-options)
+ _values -s , options 'preset:preset' 'dict:size' 'lc:context bits' \
+ 'lp:position bits' 'mf:matchfinder:(hc3 hc4 bt2 bt3 bt4)' \
+ 'mode:mode:(fast normal)' 'nice:length' 'depth:depth' && ret=0
+ ;;
+ bcj-options)
+ _values options 'start:offset' && return
+ ;;
+ delta-options)
+ _values options 'dist:distance' && return
+ ;;
+esac
+
+return ret
Messages sorted by:
Reverse Date,
Date,
Thread,
Author