mirror of
				git://git.code.sf.net/p/zsh/code
				synced 2025-10-27 04:40:59 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			28 lines
		
	
	
	
		
			978 B
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			28 lines
		
	
	
	
		
			978 B
		
	
	
	
		
			Text
		
	
	
	
	
	
| #compdef -p */(init|rc[0-9S]#).d/*
 | |
| 
 | |
| local magic cmds what script
 | |
| 
 | |
| _compskip=all
 | |
| 
 | |
| # This should probably be system specific...
 | |
| 
 | |
| script=$words[1]
 | |
| [[ $script = */* ]] || script=/etc/init.d/$script
 | |
| 
 | |
| # If the file starts with `#!' we hope that this is a shell script
 | |
| # and get lines looking like <space>foo|bar) with the words in $what.
 | |
| 
 | |
| what='(st(art|op|atus)|(force-|)re(start|load)|debug_(up|down)|dump(|_stats)|add|delete|clean|list)'
 | |
| 
 | |
| read -u0 -k2 magic < $script && [[ $magic = '#!' ]] &&
 | |
|     cmds=( ${${(j:|:s:|:)${(M)${(f)"$(< $script)"}:#[[:blank:]]#(\'|)${~what}([[:blank:]]#\|[[:blank:]]#${~what})#(\'|)\)}}//[^-a-z_]} )
 | |
| 
 | |
| # This would be the pattern to use every line of the form <space>foo).
 | |
| # Some people say this might match too many lines...
 | |
| #
 | |
| #    cmds=( ${${(j:|:s:|:)${(M)${(f)"$(< $script)"}:#[[:blank:]]#(\'|)[a-z_|]##\'|)\)}}//[^a-z_]} )
 | |
| 
 | |
| (( $#cmds )) || zstyle -a ":completion:${curcontext}:commands" commands cmds ||
 | |
|     cmds=(start stop)
 | |
| 
 | |
| _sub_commands $cmds
 |