From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 18518 invoked by alias); 31 May 2011 13:16:47 -0000 Mailing-List: contact zsh-workers-help@zsh.org; run by ezmlm Precedence: bulk X-No-Archive: yes List-Id: Zsh Workers List List-Post: List-Help: X-Seq: 29409 Received: (qmail 16354 invoked from network); 31 May 2011 13:16:45 -0000 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on f.primenet.com.au X-Spam-Level: X-Spam-Status: No, score=-2.7 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW, T_TO_NO_BRKTS_FREEMAIL autolearn=ham version=3.3.1 Received-SPF: pass (ns1.primenet.com.au: SPF record at _spf.google.com designates 74.125.82.43 as permitted sender) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:from:to:subject:date:message-id:x-mailer; bh=DYwu8jQ5+OCXnIDAjO4GUYcz0hRnFDcd/qL4kAKjHTA=; b=ZS1f63QzVBq33A7jwv3YBpj7kH8ZCvCPkwi/NlMiMD5L7Ow9YXTWVp2bTIE5fF4E5p nqMcOrBRo0rwuE6DLozBgJ40so247+geENlK4pYj/clBV3DU8udGCpUB9SINL9/RyQ2N NMIxUiIZSETlKc87KKqEJQO1sHo5YNb3kTwPg= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=from:to:subject:date:message-id:x-mailer; b=X7BNVkrzVxm/5QS3l4H7aBHqgW4ZSrzbP4wLvf574hWfnjlJ9Qh/L4BizDpg1h1zVz YARKoi4VtvUhHqRpJmfv2LT1SjeMVT8WZm/kwQeV59Rw2Dc6i5ZnwS5tUGhmApTTu6Hh YFqTjo06E9ZDY+QPausXKeiDosEaPj0enuff0= From: Mikael Magnusson To: zsh-workers@zsh.org Subject: PATCH: add xprop and xlsatoms completions Date: Tue, 31 May 2011 14:47:23 +0200 Message-Id: <1306846043-9406-1-git-send-email-mikachu@gmail.com> X-Mailer: git-send-email 1.7.4-rc1 How do I use foo from '*-f:foo:->foo' to describe the argument to the option in the $state handler? I lightly perused the _arguments docs but nothing jumped out, I'll admit I didn't check too closely though. Ie, the "atoms" I pass to _wanted overrides the 'atom' for -name. For xprop I want to say 'property' instead of 'atom' too. I'm also not sure if my creative return code handling is the best way to handle this. Do I need to add any other locals because of the -> things? --- Completion/X/Command/_x_utils | 33 ++++++++++++++++++++++++++++++++- Completion/X/Type/_x_font | 2 +- 2 files changed, 33 insertions(+), 2 deletions(-) diff --git a/Completion/X/Command/_x_utils b/Completion/X/Command/_x_utils index 2e672fd..807e9a4 100644 --- a/Completion/X/Command/_x_utils +++ b/Completion/X/Command/_x_utils @@ -1,4 +1,6 @@ -#compdef xdpyinfo xwininfo xkill xfontsel xfd xev xhost xon xsetroot xwd xwud xrdb +#compdef xdpyinfo xwininfo xkill xfontsel xfd xev xhost xon xsetroot xwd xwud xrdb xprop xlsatoms + +local ret=1 oret expl case "$service" in xdpyinfo) @@ -13,6 +15,27 @@ xwininfo) '(-id -root)-name:name: _x_window -n' \ '(-name -root)-id:id: _x_window' ;; +xprop) + _x_arguments \ + -{help,frame,notype,spy} \ + '-grammar[show grammar for command line options]' \ + '(-id -name)-root[use the root window as the target window]' \ + '(-id -root)-name[specify target window by name]:name: _x_window -n' \ + '(-name -root)-id[specify target window by window id]:id: _x_window' \ + '-font[display the properties of a font]:font: _x_font' \ + '-len[show at most n bytes of any property]:n' \ + '*-fs[read more property formats from file]:file: _files' \ + '*-remove[specify an atom to remove from the target window]:atoms:->atoms' \ + '*-set[specify an atom and a value to set on the target window]:atoms:->atoms:value' \ + '*-f:atoms:->atoms:format: ::dformat' \ + '*:atoms:->atoms' && ret=0 + ;; +xlsatoms) + _x_arguments \ + '*-format[printf-style format to use]:format' \ + '*-range[atom values to list]:[num]-[num]' \ + '*-name[name of single atom to print]:atom:->atoms' + ;; xkill) _x_arguments \ -frame \ @@ -163,3 +186,11 @@ xrdb) '*:defaults file:_files' ;; esac + +oret=$? +if [[ $state == atoms ]]; then + _wanted atoms expl atoms compadd ${${(f)"$(_call_program atoms xlsatoms 2> /dev/null)"}#*$'\t'} && ret=0 +else + ret=$oret +fi +return ret diff --git a/Completion/X/Type/_x_font b/Completion/X/Type/_x_font index 134cfdf..a363b27 100644 --- a/Completion/X/Type/_x_font +++ b/Completion/X/Type/_x_font @@ -9,7 +9,7 @@ _tags fonts || return 1 if (( ! $+_font_cache )); then typeset -gU _font_cache - _font_cache=( "${(@)^${(@f)$(_call_program fonts xlsfonts)}%%--*}--" ) + _font_cache=( "${(@)^${(@f)$(_call_program fonts xlsfonts 2> /dev/null)}%%--*}--" ) fi _wanted fonts expl font \ -- 1.7.4-rc1