diff options
author | Daniel Shahaf <d.s@daniel.shahaf.name> | 2015-05-23 10:11:26 +0000 |
---|---|---|
committer | Daniel Shahaf <d.s@daniel.shahaf.name> | 2015-06-02 10:09:01 +0000 |
commit | 83ac36c14f3457f49b77bba9b806d2577a6128f3 (patch) | |
tree | 06b0b2861aa6ebada29de31ffc547dfb314afbf0 /Completion/Unix | |
parent | 9dc173efc3b4ae1e64d93dc5a60c17203035e66c (diff) | |
download | zsh-83ac36c14f3457f49b77bba9b806d2577a6128f3.tar.gz zsh-83ac36c14f3457f49b77bba9b806d2577a6128f3.tar.xz zsh-83ac36c14f3457f49b77bba9b806d2577a6128f3.zip |
35271: New completion: beep.
The new completion is mostly boilerplate except for the handling of $words/$CURRENT to support specifying the arguments multiple times separated by -n.
Diffstat (limited to 'Completion/Unix')
-rw-r--r-- | Completion/Unix/Command/_beep | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/Completion/Unix/Command/_beep b/Completion/Unix/Command/_beep new file mode 100644 index 000000000..c49c09726 --- /dev/null +++ b/Completion/Unix/Command/_beep @@ -0,0 +1,50 @@ +#compdef _beep + +# beep [--verbose | --debug] [-e device | --device device] [-f N] [-l N] +# [-r N] [-d N] [-D N] [-s] [-c] +# beep [ OPTIONS ] [-n] [--new] [ OPTIONS ] +# beep [-h] [--help] +# beep [-v] [-V] [--version] + +# We support the -n/--new restart flag, when it is in its own word, by +# stripping all words from the command line that are after the first -n +# following words[CURRENT] or before the first -n preceding it. As far as +# _arguments knows, the -n flag does not exist, and argv should specify +# a single beeping specification. + +## Strip $words[2] through the first -n preceding $words[CURRENT]. +integer specstart +while specstart=$words[(i)(-n|--new)] + (( specstart < CURRENT )) +do + words[2,specstart]=() + (( CURRENT -= specstart - 1)) +done +unset specstart + +## Strip everything in $words after the first -n following $words[CURRENT]. +integer specend +while specend=$words[(I)(-n|--new)] + (( specend > CURRENT )) +do + words[specend,$#words]=() +done +unset specend + +local -a args +args=( + "(--verbose --debug)"{--verbose,--debug}"[enable debug output]" + "(-e --device)"{-e+,--device=}"[specify device to use]:device (default /dev/tty0, /dev/vc/0)" + "-f+:frequency (Hz) as integer or float" + "-l+:duration (ms)" + "-r+:number of repetitions" + "(-D)-d+[delay between beeps]:delay (ms)" + "(-d)-D+[delay after each beep]:delay (ms)" + "(-n --new)"{-n,--new}"[start a new beeping specification]" + "-s[cat, and beep after each line]" + "-c[cat, and beep after each character]" + "(-)"{-h,--help}"[display usage info]" + "(-)"{-v,-V,--version}"[display version info]" +) + +_arguments -s -S -w : $args |