Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
PATCH: add xprop and xlsatoms completions
- X-seq: zsh-workers 29409
- From: Mikael Magnusson <mikachu@xxxxxxxxx>
- To: zsh-workers@xxxxxxx
- Subject: PATCH: add xprop and xlsatoms completions
- Date: Tue, 31 May 2011 14:47:23 +0200
- 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=
- 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
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
Messages sorted by:
Reverse Date,
Date,
Thread,
Author