Package: zsh
Version: 4.3.2-17
Severity: wishlist
Tags: patch

Hi!

Made a completion function for acpitool. Hope you find it useful :)

Regards,
Ramkumar.

#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
-- System Information:
Debian Release: testing/unstable
  APT prefers testing
  APT policy: (101, 'testing')
Architecture: i386 (i686)
Shell:  /bin/sh linked to /bin/dash
Kernel: Linux 2.6.16-beyond2
Locale: LANG=en_IN, LC_CTYPE=en_IN (charmap=UTF-8)

Versions of packages zsh depends on:
ii  debconf [debconf-2.0]        1.5.4       Debian configuration management sy
ii  libc6                        2.3.6.ds1-4 GNU C Library: Shared libraries
ii  libncurses5                  5.5-3       Shared libraries for terminal hand

Versions of packages zsh recommends:
ii  libcap1                       1:1.10-14  support for getting/setting POSIX.
ii  libpcre3                      6.4-2      Perl 5 Compatible Regular Expressi

-- no debconf information

-- 
WARN_(accel)("msg null; should hang here to be win compatible\n");
                                   -- WINE source code

Reply via email to