mirror of
				git://git.code.sf.net/p/zsh/code
				synced 2025-10-31 06:00:54 +01:00 
			
		
		
		
	The new completion is mostly boilerplate except for the handling of $words/$CURRENT to support specifying the arguments multiple times separated by -n.
		
			
				
	
	
		
			50 lines
		
	
	
	
		
			1.6 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			50 lines
		
	
	
	
		
			1.6 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| #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
 |