diff options
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | Completion/Unix/Command/.distfiles | 2 | ||||
-rw-r--r-- | Completion/Unix/Command/_cdcd | 101 |
3 files changed, 107 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog index aab95f833..210d1dedf 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2002-02-14 Clint Adams <clint@zsh.org> + + * Gergely Nagy, 16644: Completion/Unix/Command/.distfiles, + Completion/Unix/Command/_cdcd: completion for cdcd. + 2002-02-14 Geoff Wing <gcw@zsh.org> * unposted: Doc/Zsh/metafaq.yo: update distribution sites - remove four diff --git a/Completion/Unix/Command/.distfiles b/Completion/Unix/Command/.distfiles index f8fe9aa73..9b9415f9f 100644 --- a/Completion/Unix/Command/.distfiles +++ b/Completion/Unix/Command/.distfiles @@ -16,5 +16,5 @@ _dict _grep _lzop _prcs _tiff _elm _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 ' diff --git a/Completion/Unix/Command/_cdcd b/Completion/Unix/Command/_cdcd new file mode 100644 index 000000000..de27724dc --- /dev/null +++ b/Completion/Unix/Command/_cdcd @@ -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 |