summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog6
-rw-r--r--Completion/Linux/Command/_acpitool69
-rw-r--r--Completion/Linux/Type/_wakeup_capable_devices15
3 files changed, 90 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index b20d3e23b..89f121521 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2006-09-30 Clint Adams <clint@zsh.org>
+
+ * 22794: R. Ramkumar: Completion/Linux/Command/_acpitool,
+ Completion/Linux/Type/_wakeup_capable_devices: completion for
+ acpitool.
+
2006-09-30 Andrey Borzenkov <bor@zsh.org>
* unposted: Src/Zle/compmatch.c: fix thinko in 22787 that changed
diff --git a/Completion/Linux/Command/_acpitool b/Completion/Linux/Command/_acpitool
new file mode 100644
index 000000000..e7dcb4ea1
--- /dev/null
+++ b/Completion/Linux/Command/_acpitool
@@ -0,0 +1,69 @@
+#compdef acpitool
+
+local ret=1 selbrands disambig
+typeset -a brands args
+
+if ! zstyle -a ":completion:${curcontext}:" acpi-extensions brands || \
+ (( $brands[(I)detect] )); then
+ [[ -d /proc/acpi/toshiba ]] && brands+=toshiba
+ [[ -d /proc/acpi/asus ]] && brands+=asus
+ [[ -d /proc/acpi/ibm ]] && brands+=thinkpad
+elif (( $brands[(I)all] )); then
+ brands=(toshiba asus thinkpad)
+fi
+
+args=(
+ '(-a --ac_adapter)'{-a,--ac_adapter}'[show AC adapter presence]'
+ '-b[show battery status for available batteries]'
+ '(-B --battery)'{-B,--battery}'[show detailed battery status for all batteries found]'
+ '(-c --cpu)'{-c,--cpu}'[show CPU information]'
+ '(-a --ac_adapter -A -b -B --battery -c --cpu -e -f --fan -t --thermal -w)-e[show just about everything]'
+ '(-f --fan)'{-f,--fan}'[show fan status]'
+ '(-h --help)'{-h,--help}'[display help]'
+ '(-s --suspend)'{-s,--suspend}'[suspend machine to memory (sleep state S3)]'
+ '-S[suspend machine to disk (sleep state S4)]'
+ '(-t --thermal)'{-t,--thermal}'[show thermal zone(s) information and trip points]'
+ '-v[show more verbose output]'
+ '(-V --version)'{-V,--version}'[output version information and exit]'
+ '-w[show the wakeup capable devices]'
+ '-W+[toggle enable/disable wakeup capable device]: :_wakeup_capable_devices'
+)
+
+if (( $brands[(I)asus] )); then
+ disambig=
+ (( $brands[(I)(toshiba|thinkpad)] )) && disambig='Asus '
+ args+=(
+ '(-A --Asus)'{-A,--Asus}'[show supported Asus ACPI extensions]'
+ '-m+[set mail LED status]:mail LED status:((1\:on 0\:off))'
+ '-n+[set wireless LED status]:wireless LED status:((1\:on 0\:off))'
+ '-o+[set LCD panel status]:LCD panel status:((1\:on 0\:off))'
+ "-z+[set ${disambig}LCD brightness level]:${disambig}LCD brightness level:(0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15)"
+ )
+fi
+
+selbrands=
+if (( $brands[(I)toshiba] )); then
+ selbrands=Toshiba
+ args+=(
+ '-F+[force fan on or switch back to auto mode]:fan status:((1\:on 0\:auto))'
+ '(-T --Toshiba)'{-T,--Toshiba}'[show supported Toshiba ACPI extensions]'
+ )
+fi
+
+if (( $brands[(I)thinkpad] )); then
+ [[ -n $selbrands ]] && selbrands+=/
+ selbrands=${selbrands}Thinkpad
+ args+=('-j[eject ultrabay device]')
+fi
+
+if [[ -n $selbrands ]]; then
+ disambig=
+ (( $brands[(I)asus] )) && disambig="$selbrands "
+ args+=(
+ "-l+[set ${disambig}LCD brightness level]:${disambig}LCD brightness level:(0 1 2 3 4 5 6 7)"
+ )
+fi
+
+_arguments -s $args && ret=0
+
+return ret
diff --git a/Completion/Linux/Type/_wakeup_capable_devices b/Completion/Linux/Type/_wakeup_capable_devices
new file mode 100644
index 000000000..dd79d2d0d
--- /dev/null
+++ b/Completion/Linux/Type/_wakeup_capable_devices
@@ -0,0 +1,15 @@
+#autoload
+
+local ret=1 item devline expl
+typeset -a desc
+
+_call_program wakeup-capable-devices acpitool -w 2> /dev/null |
+while read devline; do
+ [[ -n ${devline:#(#b)([0-9]#).[[:space:]]#([^[:space:]]#)[[:space:]]#[0-9]#[[:space:]]#(*)} ]] && continue
+ zformat -f item "${match[1]}:%8d (currently ${match[3]})" d:${match[2]}
+ desc+=$item
+done
+
+_describe -t wakeup-capable-devices 'wakeup capable device' desc $@ && ret=0
+
+return ret