mirror of
				git://git.code.sf.net/p/zsh/code
				synced 2025-10-31 18:10:56 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			80 lines
		
	
	
	
		
			2.1 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			80 lines
		
	
	
	
		
			2.1 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| #compdef cdcd
 | |
| 
 | |
| local expl
 | |
| 
 | |
| _cdcd_tracks ()
 | |
| {
 | |
|   local -a tracks
 | |
|   tracks=( ${${(M)${(f)"$(cdcd tracks)"}:#(#s) #[0-9]##:*}/(#s) #(#b)([0-9]##):[ >]#? #[^ ]# #(*) ##/$match[1]:${match[2]}} )
 | |
|   _describe tracks tracks -V tracks
 | |
| }
 | |
| 
 | |
| _cdcd_commands ()
 | |
| {
 | |
|   local -a commands
 | |
|   commands=(
 | |
|     'play:play a track'
 | |
|     'stop:stop playing'
 | |
|     {open,eject}':eject the CD-ROM tray'
 | |
|     'close:close the CD-ROM tray'
 | |
|     'pause:pause playing'
 | |
|     'resume:resume playing'
 | |
|     'ff:fast forward'
 | |
|     'rew:rewind'
 | |
|     'next:advance one track'
 | |
|     'prev:return to previous track'
 | |
|     'getvol:get current volume settings'
 | |
|     'setvol:set volume settings'
 | |
|     'status:get numerical data regarding the CD status'
 | |
|     'info:short information about the CD'
 | |
|     'tracks:list all tracks on the CD'
 | |
|     'rndplay:play a random track'
 | |
|     'list:list all CDs in a CD-ROM changer'
 | |
|     'slot:changes the current CD in the CD-ROM changer'
 | |
|     'edit:edit information about the disc'
 | |
|     'ext:extended information about the disc'
 | |
|     'refresh:refresh the information about the CD from a CDDB server'
 | |
|     'device:change the CD-ROM device cdcd will use'
 | |
|     'verbose:toggle verbosity'
 | |
|     'sites:edit the server list'
 | |
|     'access:configure cddb access method'
 | |
|     'help:display a help message'
 | |
|   )
 | |
|   _describe -t commands 'cdcd command' commands
 | |
| }
 | |
| 
 | |
| if (( CURRENT == 2 )); then
 | |
|     _cdcd_commands
 | |
| else
 | |
|     case "$words[2]" in
 | |
| 	# sub-commands with no args
 | |
| 	stop|open|eject|close|pause|resume|next|prev|getvol)
 | |
| 	    ;&
 | |
| 	status|info|tracks|rndplay|list|slot|refresh)
 | |
| 	    _message 'no more arguments'
 | |
| 	    ;;
 | |
| 	# sub-commands with args that cannot be completed
 | |
| 	ff|rew|setvol)
 | |
| 	    ;;
 | |
| 	# sub-commands that do not work as expected
 | |
| 	access|edit|sites)
 | |
| 	    ;;
 | |
| 	# completeable sub-commands
 | |
| 	verbose)
 | |
| 	    _wanted subcommand expl 'verbose subcommand' compadd on off
 | |
| 	    ;;
 | |
| 	ext)
 | |
| 	    _values 'ext subcommand' \
 | |
| 	      'disc[extra information about the disc]' \
 | |
| 	      {1..${${(z)${${(f)"$(cdcd info)"}[3]}}[3]}}
 | |
| 	    ;;
 | |
| 	device)
 | |
| 	    _wanted device expl 'cdrom device' compadd /dev/cd* /dev/cd*/*
 | |
| 	    ;;
 | |
| 	play)
 | |
|             _cdcd_tracks
 | |
| 	    ;;
 | |
| 	help)
 | |
| 	    _cdcd_commands;;
 | |
|     esac
 | |
| fi
 |