mirror of
				git://git.code.sf.net/p/zsh/code
				synced 2025-10-31 06:00:54 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			211 lines
		
	
	
	
		
			5.3 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			211 lines
		
	
	
	
		
			5.3 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| #compdef xmms2
 | |
| 
 | |
| _xmms2_command() {
 | |
|     local xmms2_cmds
 | |
| 
 | |
|     xmms2_cmds=(
 | |
| 	add:"adds a URL to the playlist"
 | |
| 	addarg:"adds one URL with arguments to the playlist"
 | |
| 	addid:"adds a Medialib id to the playlist"
 | |
| 	insert:"inserts one URL at a specific position"
 | |
| 	insertid:"inserts one Medialib id at a specific position"
 | |
| 	radd:"adds a directory recursively to the playlist"
 | |
| 	clear:"clears the playlist"
 | |
| 	shuffle:"shuffles the playlist"
 | |
| 	sort:"sort the playlist; use a space delimiter for multiple properties"
 | |
| 	remove:"removes something from the playlist"
 | |
| 	list:"lists the playlist"
 | |
| 	addpls:"Adds the contents of a playlist file to the playlist"
 | |
| 	play:"starts playback"
 | |
| 	stop:"stops playback"
 | |
| 	toggleplay:"toggles playback status between play/pause"
 | |
| 	pause:"pause playback"
 | |
| 	next:"play next song"
 | |
| 	prev:"play previous song"
 | |
| 	seek:"seek to a specific place in current song"
 | |
| 	jump:"take a leap in the playlist"
 | |
| 	move:"move a entry in the playlist"
 | |
| 	volume:"set volume for a channel"
 | |
| 	volume_list:"list volume levels for each channel"
 | |
| 	mlib:"medialib manipulation - type 'xmms2 mlib' for more extensive help"
 | |
| 	playlist:"playlist manipulation - type 'xmms2 playlist' for more extensive help"
 | |
| 	coll:"collection manipulation - type 'xmms2 coll' for more extensive help"
 | |
| 	browse:"browse server file lists"
 | |
| 	status:"go into status mode"
 | |
| 	info:"information about current entry"
 | |
| 	current:"formatted information about the current entry"
 | |
| 	config:"set a config value"
 | |
| 	config_list:"list all config values"
 | |
| 	plugin_list:"list all plugins loaded in the server"
 | |
| 	stats:"get statistics from server"
 | |
| 	quit:"make the server quit"
 | |
| 	help:"print help about a command"
 | |
| 	)
 | |
| 
 | |
|     if (( CURRENT == 1 )); then
 | |
| 	_describe -t command "xmms2 commands" xmms2_cmds
 | |
|     else
 | |
| 	local curcontext="$curcontext"
 | |
|     fi
 | |
| 
 | |
|     local cmd=$words[1]
 | |
| 
 | |
|     local curcontext="${curcontext%:*}:xmms2-${cmd}"
 | |
|     _call_function ret _xmms2_$cmd
 | |
| }
 | |
| 
 | |
|  _xmms2_jump() {
 | |
|      songlist=(${"$(xmms2 list)"})
 | |
|      playlistitems=()
 | |
|      for song ($songlist); do 
 | |
| 	 if [[ $song = (#b)'  '\[(<->)/(<->)\]' '(*)' '\((*)\) ]]; then
 | |
| 		    playlistitems+=("$match[1][$match[3]]")
 | |
| 	 fi
 | |
|      done
 | |
|      
 | |
|      _values -s ' ' 'playlist items' ${(On)playlistitems}
 | |
| 
 | |
| }
 | |
| 
 | |
| _xmms2_mlib() {
 | |
|     local mlib_cmds
 | |
|     mlib_cmds=(
 | |
| 	add:"Add 'url' to medialib"
 | |
| 	loadall:"Load everything from the mlib to the playlist"
 | |
| 	searchadd:"Search for, and add songs to playlist"
 | |
| 	search:"Search for songs matching criteria"
 | |
| 	addpath:"Import metadata from all media files under 'path'"
 | |
| 	rehash:"Force the medialib to check whether its data is up to date"
 | |
| 	remove:"Remove an entry from medialib"
 | |
| 	setstr:"Set a string property together with a medialib entry."
 | |
| 	setint:"Set a int property together with a medialib entry."
 | |
| 	rmprop:"Remove a property from a medialib entry"
 | |
| 	addcover:"Add a cover image on id(s)."
 | |
| 
 | |
| 	)
 | |
|     if (( CURRENT == 2 )); then
 | |
| 	_describe -t command "xmms2 mlib commands" mlib_cmds
 | |
|     else
 | |
| 	local curcontext="$curcontext"
 | |
|     fi
 | |
| 
 | |
|     local cmd=$words[2]
 | |
| 
 | |
|     local curcontext="${curcontext%:*}:xmms2-${cmd}"
 | |
|     _call_function ret _xmms2_$cmd
 | |
| 
 | |
| }
 | |
| 
 | |
| 
 | |
| _xmms2_playlist() {
 | |
|     local playlist_cmds
 | |
|     playlist_cmds=(
 | |
| 	list:"List all available playlists"
 | |
| 	create:"Create a playlist"
 | |
| 	type:"Set the type of the playlist (list, queue, pshuffle)"
 | |
| 	load:"Load 'playlistname' stored in medialib"
 | |
| 	remove:"Remove a playlist"
 | |
| 	)
 | |
|     if (( CURRENT == 2 )); then
 | |
| 	_describe -t command "xmms2 playlist commands" playlist_cmds
 | |
|     else
 | |
| 	local curcontext="$curcontext"
 | |
|     fi
 | |
| 
 | |
|     local cmd=$words[2]
 | |
| 
 | |
|     local curcontext="${curcontext%:*}:xmms2-${cmd}"
 | |
|     _call_function ret _xmms2_playlist_$cmd
 | |
| }
 | |
| 
 | |
| _xmms2_playlist_load() {
 | |
|     local list
 | |
|     list=($(xmms2 playlist list))
 | |
|     _describe -t command "xmms2 playlists" list
 | |
| }
 | |
| 
 | |
| 
 | |
| _xmms2_playlist_remove() {
 | |
|     local list
 | |
|     list=($(xmms2 playlist list))
 | |
|     _describe -t command "xmms2 playlists" list
 | |
| }
 | |
| 
 | |
| 
 | |
| _xmms2_coll() {
 | |
|     local coll_cmds
 | |
|     coll_cmds=(
 | |
| 	save:"Save a pattern as a collection"
 | |
| 	rename:"Rename a collection"
 | |
| 	list:"List all collections in a given namespace"
 | |
| 	query:"Display all the media in a collection"
 | |
| 	queryadd:"Add all media in a collection to active playlist"
 | |
| 	find:"Find all collections that contain the given media"
 | |
| 	get:"Display the structure of a collection"
 | |
| 	remove:"Remove a saved collection"
 | |
| 	attr:"Get/set an attribute for a saved collection"
 | |
| 	)
 | |
|     if (( CURRENT == 2 )); then
 | |
| 	_describe -t command "xmms2 collection commands" coll_cmds
 | |
|     else
 | |
| 	local curcontext="$curcontext"
 | |
|     fi
 | |
| 
 | |
|     local cmd=$words[2]
 | |
| 
 | |
|     local curcontext="${curcontext%:*}:xmms2-${cmd}"
 | |
|     _call_function ret _xmms2_coll_$cmd
 | |
| }
 | |
| 
 | |
| _xmms2_coll_helper() {
 | |
|     local list
 | |
|     list=($(xmms2 coll list))
 | |
|     _describe -t command "xmms2 playlists" list
 | |
| }
 | |
| 
 | |
| _xmms2_coll_rename() {
 | |
|     _xmms2_coll_helper
 | |
| }
 | |
| 
 | |
| _xmms2_coll_remove() {
 | |
|     _xmms2_coll_helper
 | |
| }
 | |
| 
 | |
| _xmms2_coll_get() {
 | |
|     _xmms2_coll_helper
 | |
| }
 | |
| 
 | |
| _xmms2_coll_query() {
 | |
|     _xmms2_coll_helper
 | |
| }
 | |
| 
 | |
| _xmms2_coll_queryadd() {
 | |
|     _xmms2_coll_helper
 | |
| }
 | |
| 
 | |
| _xmms2_coll_attr() {
 | |
|     _xmms2_coll_helper
 | |
| }
 | |
| 
 | |
| _xmms2_add() {
 | |
|   _files
 | |
| }
 | |
| 
 | |
| _xmms2_radd() {
 | |
|   _dirs
 | |
| }
 | |
| 
 | |
| _xmms2_addpls() {
 | |
|   local expl
 | |
|   _description files expl 'playlist'
 | |
|   _files "$expl[@]" -g '*.([mM]3[uU]|[pP][lL][sS])(-.)'
 | |
| }
 | |
| 
 | |
| _xmms2() {
 | |
| _arguments \
 | |
|     '--format[specify the format of song display]:format string' \
 | |
|     '--no-status[prevent printing song status on completion]' \
 | |
|     '*::xmms2 command:_xmms2_command'
 | |
| }
 | |
| 
 | |
| _xmms2 "$@"
 |