Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Re: Bug#512610: zsh: please add completion for xmms2 (URL included)
- X-seq: zsh-workers 26405
- From: Clint Adams <schizo@xxxxxxxxxx>
- To: Louis-David Mitterrand <ldm@xxxxxxxxxx>, 512610@xxxxxxxxxxxxxxx
- Subject: Re: Bug#512610: zsh: please add completion for xmms2 (URL included)
- Date: Thu, 22 Jan 2009 15:08:40 +0000
- Cc: zsh-workers@xxxxxxxxxx
- In-reply-to: <20090122083016.27867.93873.reportbug@xxxxxxxxxxxxxxxx>
- Mail-followup-to: Louis-David Mitterrand <ldm@xxxxxxxxxx>, 512610@xxxxxxxxxxxxxxx, zsh-workers@xxxxxxxxxx
- Mailing-list: contact zsh-workers-help@xxxxxxxxxx; run by ezmlm
- References: <20090122083016.27867.93873.reportbug@xxxxxxxxxxxxxxxx>
On Thu, Jan 22, 2009 at 09:30:16AM +0100, Louis-David Mitterrand wrote:
> xmms2 is a command-line intensive music player with many options.
> A zsh completion would be really nice.
>
> Fortunately someone has written one:
Thanks.
Index: Completion/Unix/Command/_xmms2
===================================================================
RCS file: Completion/Unix/Command/_xmms2
diff -N Completion/Unix/Command/_xmms2
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ Completion/Unix/Command/_xmms2 22 Jan 2009 15:07:46 -0000
@@ -0,0 +1,200 @@
+#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() {
+ oldIFS=$IFS
+ IFS=$'\n'
+ songlist=($(xmms2 list))
+ IFS=oldIFS
+ playlistitems=""
+ for song ($songlist); do
+ if [[ $song = (#b)' '\[(<->)/(<->)\]' '(*)' '\((*)\) ]]; then
+ playlistitems=($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() {
+_arguments \
+ '--format[specify the format of song display]:format string' \
+ '--no-status[prevent printing song status on completion]' \
+ '*::xmms2 command:_xmms2_command'
+}
+
+_xmms2 "$@"
Messages sorted by:
Reverse Date,
Date,
Thread,
Author