#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 "$@"
Copyright 2K16 - 2K18 Indonesian Hacker Rulez