Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
PATCH: _cdcd
- X-seq: zsh-workers 16644
- From: Clint Adams <clint@xxxxxxx>
- To: zsh-workers@xxxxxxxxxx
- Subject: PATCH: _cdcd
- Date: Thu, 14 Feb 2002 12:53:51 -0500
- Mailing-list: contact zsh-workers-help@xxxxxxxxxx; run by ezmlm
This was written by Gergely Nagy <algernon@xxxxxxxxxx>.
Index: Completion/Unix/Command/.distfiles
===================================================================
RCS file: /cvsroot/zsh/zsh/Completion/Unix/Command/.distfiles,v
retrieving revision 1.18
diff -u -r1.18 .distfiles
--- Completion/Unix/Command/.distfiles 18 Jan 2002 14:49:02 -0000 1.18
+++ Completion/Unix/Command/.distfiles 14 Feb 2002 17:50:15 -0000
@@ -16,5 +16,5 @@
_diff _gs _make _psutils _tin _apm _mail
_last _loadkeys _modutils _ruby _sysctl _links _samba
_user_admin _rsync _arping _spamassassin _mtools _ifconfig
-_fsh _chkconfig
+_fsh _chkconfig _cdcd
'
Index: Completion/Unix/Command/_cdcd
===================================================================
RCS file: Completion/Unix/Command/_cdcd
diff -N Completion/Unix/Command/_cdcd
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ Completion/Unix/Command/_cdcd 14 Feb 2002 17:50:15 -0000
@@ -0,0 +1,101 @@
+#compdef cdcd
+
+typeset -A opt_args
+
+_cdcd_tracks ()
+{
+ cdcd info | sed -e 1,2d -e 4d -e "s,Total tracks: *\([0-9]\+\).*,\1,"
+}
+
+_cdcd_track_list ()
+{
+ seq 1 $(_cdcd_tracks)
+}
+
+_cdcd_track_list_verbose ()
+{
+ cdcd tracks | grep "^[ 0-9]\+:" | sed -e 's,^ *\([0-9]\+\):[ >]*. *[^ ]* *\(.*\) \+,\1\\\:\"\2\",'
+}
+
+_cdcd_commands ()
+{
+ _arguments \
+ ':cdcd command:((
+ play\:"play a track"
+ stop\:"stop plating"
+ open\:"eject the CD-ROM tray"
+ 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"
+ ))'
+}
+
+if (( CURRENT == 2 )); then
+ _cdcd_commands
+else
+ shift words
+ (( --CURRENT ))
+ case "$words[1]" in
+ # sub-commands with no args
+ stop|open|eject|close|pause|resume|next|prev|getvol)
+ ;;
+ status|info|tracks|rndplay|list|slot|refresh)
+ ;;
+ # 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)
+ _arguments \
+ ':verbose subcommand:((
+ on\:"turn verbosity on"
+ off\:"turn verbosity off"))'
+ ;;
+ ext)
+ _arguments \
+ ":ext subcommand:((
+ disc\:\"extra information about the disc\"
+ $(_cdcd_track_list)))"
+ ;;
+ device)
+ compadd "$expl[@]" /dev/cd* /dev/cd*/*
+ ;;
+ play)
+ if (( CURRENT == 2 )); then
+ _arguments ":play subcommand:((
+ $(_cdcd_track_list_verbose)))"
+ else
+ shift words
+ (( --CURRENT ))
+ _arguments ":play subcommand2:((
+ $(_cdcd_track_list_verbose)))"
+ fi
+ ;;
+ help)
+ _cdcd_commands;;
+ esac
+fi
Messages sorted by:
Reverse Date,
Date,
Thread,
Author