;ELC ;;; Compiled by heimdall@baldur on Fri Feb 1 18:34:58 2008 ;;; from file /home/heimdall/repos/emms/emms-source-playlist.el ;;; in Emacs version 23.0.60.1 ;;; with all optimizations. ;;; This file uses dynamic docstrings, first added in Emacs 19.29. (if (and (boundp 'emacs-version) (< (aref emacs-version (1- (length emacs-version))) ?A) (or (and (boundp 'epoch::version) epoch::version) (string-lessp emacs-version "19.29"))) (error "`emms-source-playlist.el' was compiled for Emacs 19.29 or later")) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; #@40 emms-source-playlist.el version string (defvar emms-source-playlist-version "0.5 $Revision: 1.30 $" (#$ . 603)) (byte-code "\300\301!\210\300\302!\207" [require emms emms-source-file] 2) #@767 *A list of playlist formats. Each entry must have at least three corresponding functions. First, a function named `emms-source-playlist-FORMAT-p' which returns non-nil if the current buffer is of the type FORMAT. It is called with no arguments. Second, a function named `emms-source-playlist-parse-FORMAT' which parses the current buffer into tracks. It is called with no arguments. Third, a function named `emms-source-playlist-unparse-FORMAT' which creates an output file in the type FORMAT that contains the tracks of a playlist buffer. It is called with two arguments: The playlist buffer and the file buffer. It is also recommended to have a function named `emms-source-playlist-FORMAT-files' which returns a list of the files contained in the playlist. (custom-declare-variable 'emms-source-playlist-formats ''(native pls m3u) '(#$ . -797) :type '(repeat (symbol :tag "Format")) :group 'emms) #@108 *The default format to use for saving playlists. If this is nil, you will be prompted for a format to use. (custom-declare-variable 'emms-source-playlist-default-format 'nil '(#$ . -1710) :type '(choice (const :tag "Prompt each time" nil) (const :tag "Native" native) (const :tag "m3u" m3u) (const :tag "pls" pls) (symbol :tag "Other")) :group 'emms) (defalias 'emms-source-playlist-p-sym #[(format) "\301\302\303!\304Q!\207" [format intern "emms-source-playlist-" symbol-name "-p"] 4]) (put 'emms-source-playlist-p-sym 'byte-optimizer 'byte-compile-inline-expand) (defalias 'emms-source-playlist-parse-sym #[(format) "\301\302\303!P!\207" [format intern "emms-source-playlist-parse-" symbol-name] 4]) (put 'emms-source-playlist-parse-sym 'byte-optimizer 'byte-compile-inline-expand) (defalias 'emms-source-playlist-unparse-sym #[(format) "\301\302\303!P!\207" [format intern "emms-source-playlist-unparse-" symbol-name] 4]) (put 'emms-source-playlist-unparse-sym 'byte-optimizer 'byte-compile-inline-expand) (defalias 'emms-source-playlist-files-sym #[(format) "\301\302\303!\304Q!\207" [format intern "emms-source-playlist-" symbol-name "-files"] 4]) (put 'emms-source-playlist-files-sym 'byte-optimizer 'byte-compile-inline-expand) (defalias 'emms-source-playlist-p #[(format &optional parse-files) "\303\304\305!\306Q!)\307 !\205(\n\203&\307\303\304\305!\310Q!)!\205( )\207" [format sym parse-files intern "emms-source-playlist-" symbol-name "-p" functionp "-files"] 5]) (defalias 'emms-source-playlist-parse #[(format) "\301\302\303!P!) \207" [format intern "emms-source-playlist-parse-" symbol-name] 4]) (defalias 'emms-source-playlist-unparse #[(format playlist file) "\303\304\305!P!) \n\"\207" [format playlist file intern "emms-source-playlist-unparse-" symbol-name] 4]) (defalias 'emms-source-playlist-files #[(format) "\302\303\304!\305Q!)\306 !\203 \202\307\310\")\207" [format sym intern "emms-source-playlist-" symbol-name "-files" functionp error "The `%s' format cannot parse files from a playlist"] 4]) #@65 List of recently-entered formats; used by `emms-playlist-save'. (defvar emms-source-playlist-format-history nil (#$ . 3768)) #@130 Read a playlist format from the user. If `emms-source-playlist-default-format' is non-nil, use it instead of prompting the user. (defalias 'emms-source-playlist-read-format #[nil "\206(\303\304\305 \203 @\202\306\307Q\310\311\n\"\312\211\211\301 \203$ @\202%\306&!\207" [emms-source-playlist-default-format emms-source-playlist-format-history emms-source-playlist-formats intern completing-read "Playlist format: (default: " "native" ") " mapcar symbol-name nil] 9 (#$ . 3900)]) #@130 Store the current playlist to FILE as the type FORMAT. The default format is specified by `emms-source-playlist-default-format'. (defalias 'emms-playlist-save #[(format file) "\306\307!\310\216rq\210\311 \n\203\312\n!\204\313 \210 \206pr\nq\210\314p+p#\210\314\315!,\207" [#1=#:temp-buffer format emms-playlist-buffer emms-source-old-buffer inhibit-read-only backup-inhibited generate-new-buffer " *temp*" ((byte-code "\301!\203\n\302!\210\301\207" [#1# buffer-name kill-buffer] 2)) emms-source-playlist-unparse buffer-live-p emms-playlist-current-clear t write-file file] 4 (#$ . 4395) (list (emms-source-playlist-read-format) (read-file-name "Store as: " emms-source-file-default-directory emms-source-file-default-directory nil))]) #@170 Determine the playlist format of the current buffer. If PARSE-FILES is specified, the given format must be able to return a list of the files contained in the playlist. (defalias 'emms-source-playlist-determine-format #[(&optional parse-files) "\300\301\215\207" [return (byte-code "\211\205\303 @\n\"\203\304\305 @\"\210 A\211\204\306)\207" [emms-source-playlist-formats formats parse-files emms-source-playlist-p throw return nil] 4)] 2 (#$ . 5153)]) #@99 An EMMS source for playlists. See `emms-source-playlist-formats' for a list of supported formats. (defalias 'emms-source-playlist #[(file) "\303\304\305\306!\307\216rq\210\310 !\210eb\210\311 \211\203 \312\n!\202#\313\314!,\"\207" [#1=#:temp-buffer file format mapc emms-playlist-insert-track generate-new-buffer " *temp*" ((byte-code "\301!\203\n\302!\210\301\207" [#1# buffer-name kill-buffer] 2)) insert-file-contents emms-source-playlist-determine-format emms-source-playlist-parse error "Not a recognized playlist format"] 5 (#$ . 5621)]) #@99 An EMMS source for playlists. See `emms-source-playlist-formats' for a list of supported formats. (defalias 'emms-play-playlist #[(file) "\203\f\302\303\304 \")\207\305\304 \"\207" [current-prefix-arg file nil emms-source-add emms-source-playlist emms-source-play] 3 (#$ . 6179) (list (read-file-name "Playlist file: " emms-source-file-default-directory emms-source-file-default-directory t))]) #@99 An EMMS source for playlists. See `emms-source-playlist-formats' for a list of supported formats. (defalias 'emms-add-playlist #[(file) "\203\f\302\303\304 \")\207\305\304 \"\207" [current-prefix-arg file nil emms-source-play emms-source-playlist emms-source-add] 3 (#$ . 6583) (list (read-file-name "Playlist file: " emms-source-file-default-directory emms-source-file-default-directory t))]) #@99 An EMMS source for playlists. See `emms-source-playlist-formats' for a list of supported formats. (defalias 'emms-insert-playlist #[(file) "\301\302\"\207" [file emms-source-insert emms-source-playlist] 3 (#$ . 6986) (list (read-file-name "Playlist file: " emms-source-file-default-directory emms-source-file-default-directory t))]) #@71 Return non-nil if the current buffer contains a native EMMS playlist. (defalias 'emms-source-playlist-native-p #[nil "\212eb\210\300\301!)\207" [looking-at "^;;; This is an EMMS playlist file"] 2 (#$ . 7326)]) #@55 Parse the native EMMS playlist in the current buffer. (defalias 'emms-source-playlist-parse-native #[nil "\212eb\210\300p!)\207" [read] 2 (#$ . 7542)]) #@169 Unparse a native playlist from IN to OUT. IN should be a buffer with a EMMS playlist in it. OUT should be the buffer where tracks are stored in the native EMMS format. (defalias 'emms-source-playlist-unparse-native #[(in out) "rq\210\212r q\210\304\305\261\210\306c\210\307!\310\211\2034\n\204%\311c\210\202'\312\313 p\"\210\314!\211\204*\315c+\207" [in out firstp track ";;; This is an EMMS playlist file." " Play it with M-x emms-play-playlist\n" "(" emms-source-playlist-first t "\n " nil prin1 emms-source-playlist-next ")\n"] 4 (#$ . 7701)]) #@49 An EMMS source for a native EMMS playlist file. (defalias 'emms-source-native-playlist #[(file) "\302\303\304\305!\306\216rq\210\307 !\210eb\210\310 \204\311\312!\210\313 +\"\207" [#1=#:temp-buffer file mapc emms-playlist-insert-track generate-new-buffer " *temp*" ((byte-code "\301!\203\n\302!\210\301\207" [#1# buffer-name kill-buffer] 2)) insert-file-contents emms-source-playlist-native-p error "Not a native EMMS playlist file." emms-source-playlist-parse-native] 4 (#$ . 8267)]) #@49 An EMMS source for a native EMMS playlist file. (defalias 'emms-play-native-playlist #[(file) "\203\f\302\303\304 \")\207\305\304 \"\207" [current-prefix-arg file nil emms-source-add emms-source-native-playlist emms-source-play] 3 (#$ . 8765) (list (read-file-name "Playlist file: " emms-source-file-default-directory emms-source-file-default-directory t))]) #@49 An EMMS source for a native EMMS playlist file. (defalias 'emms-add-native-playlist #[(file) "\203\f\302\303\304 \")\207\305\304 \"\207" [current-prefix-arg file nil emms-source-play emms-source-native-playlist emms-source-add] 3 (#$ . 9133) (list (read-file-name "Playlist file: " emms-source-file-default-directory emms-source-file-default-directory t))]) #@49 An EMMS source for a native EMMS playlist file. (defalias 'emms-insert-native-playlist #[(file) "\301\302\"\207" [file emms-source-insert emms-source-native-playlist] 3 (#$ . 9500) (list (read-file-name "Playlist file: " emms-source-file-default-directory emms-source-file-default-directory t))]) #@292 Return non-nil if the current buffer contains an m3u playlist. We currently have no metric for determining whether a buffer is an .m3u playlist based on its contents alone, so we assume that the more restrictive playlist formats have already been detected and simply return non-nil always. (defalias 'emms-source-playlist-m3u-p #[nil "\300\207" [t] 1 (#$ . 9805)]) #@47 Parse the m3u playlist in the current buffer. (defalias 'emms-source-playlist-parse-m3u #[nil "\300\301\302 \"\207" [mapcar #[(file) "\301\302\"\203\f\303\304\"\207\303\300\"\207" [file string-match "\\`http://\\|\\`mms://" emms-track url] 3] emms-source-playlist-m3u-files] 3 (#$ . 10177)]) #@112 Extract a list of filenames from the given m3u playlist. Empty lines and lines starting with '#' are ignored. (defalias 'emms-source-playlist-m3u-files #[nil "\301\212eb\210\302\303\301\304#\203\305\306!B\202)\237)\207" [files nil re-search-forward "^[^# \n].*$" t match-string 0] 4 (#$ . 10480)]) #@155 Unparse an m3u playlist from IN to OUT. IN should be a buffer containing an m3u playlist. OUT should be the buffer where tracks are stored in m3u format. (defalias 'emms-source-playlist-unparse-m3u #[(in out) "rq\210\212r q\210\303!\211\205!\304\n!\305\261\210\306!\211\204\307,\207" [in out track emms-source-playlist-first emms-track-name 10 emms-source-playlist-next nil] 3 (#$ . 10794)]) #@42 An EMMS source for an m3u playlist file. (defalias 'emms-source-m3u-playlist #[(file) "\302\303\304\305!\306\216rq\210\307 !\210eb\210\310 \204\311\312!\210\313 +\"\207" [#1=#:temp-buffer file mapc emms-playlist-insert-track generate-new-buffer " *temp*" ((byte-code "\301!\203\n\302!\210\301\207" [#1# buffer-name kill-buffer] 2)) insert-file-contents emms-source-playlist-m3u-p error "Not an m3u playlist file." emms-source-playlist-parse-m3u] 4 (#$ . 11201)]) #@42 An EMMS source for an m3u playlist file. (defalias 'emms-play-m3u-playlist #[(file) "\203\f\302\303\304 \")\207\305\304 \"\207" [current-prefix-arg file nil emms-source-add emms-source-m3u-playlist emms-source-play] 3 (#$ . 11677) (list (read-file-name "Playlist file: " emms-source-file-default-directory emms-source-file-default-directory t))]) #@42 An EMMS source for an m3u playlist file. (defalias 'emms-add-m3u-playlist #[(file) "\203\f\302\303\304 \")\207\305\304 \"\207" [current-prefix-arg file nil emms-source-play emms-source-m3u-playlist emms-source-add] 3 (#$ . 12033) (list (read-file-name "Playlist file: " emms-source-file-default-directory emms-source-file-default-directory t))]) #@42 An EMMS source for an m3u playlist file. (defalias 'emms-insert-m3u-playlist #[(file) "\301\302\"\207" [file emms-source-insert emms-source-m3u-playlist] 3 (#$ . 12388) (list (read-file-name "Playlist file: " emms-source-file-default-directory emms-source-file-default-directory t))]) #@63 Return non-nil if the current buffer contains a pls playlist. (defalias 'emms-source-playlist-pls-p #[nil "\212eb\210\300\301\302\303#\205 \303)\207" [re-search-forward "^File[0-9]*=.+$" nil t] 4 (#$ . 12680)]) #@47 Parse the pls playlist in the current buffer. (defalias 'emms-source-playlist-parse-pls #[nil "\300\301\302 \"\207" [mapcar #[(file) "\301\302\"\203\f\303\304\"\207\303\300\"\207" [file string-match "\\`http://\\|\\`mms://" emms-track url] 3] emms-source-playlist-pls-files] 3 (#$ . 12898)]) #@112 Extract a list of filenames from the given pls playlist. Empty lines and lines starting with '#' are ignored. (defalias 'emms-source-playlist-pls-files #[nil "\301\212eb\210\302\303\301\304#\203\305\306!B\202)\237)\207" [files nil re-search-forward "^File[0-9]*=\\(.+\\)$" t match-string 1] 4 (#$ . 13201)]) #@153 Unparse a pls playlist from IN to OUT. IN should be a buffer conatining a pls playlist. OUT should be the buffer where tracks are stored in pls format. (defalias 'emms-source-playlist-unparse-pls #[(in out) "rq\210\212r q\210\304\305c\210\214``}\210\306!\211\2032\nT\307\310\n!\311\312 !\313\261\210\314!\211\204)eb\210\315\310\n!\313\261-\207" [in out pos track 0 "[playlist]\n" emms-source-playlist-first "File" number-to-string "=" emms-track-name 10 emms-source-playlist-next "NumberOfEntries="] 6 (#$ . 13525)]) #@41 An EMMS source for a pls playlist file. (defalias 'emms-source-pls-playlist #[(file) "\302\303\304\305!\306\216rq\210\307 !\210eb\210\310 \204\311\312!\210\313 +\"\207" [#1=#:temp-buffer file mapc emms-playlist-insert-track generate-new-buffer " *temp*" ((byte-code "\301!\203\n\302!\210\301\207" [#1# buffer-name kill-buffer] 2)) insert-file-contents emms-source-playlist-pls-p error "Not a pls playlist file." emms-source-playlist-parse-pls] 4 (#$ . 14060)]) #@41 An EMMS source for a pls playlist file. (defalias 'emms-play-pls-playlist #[(file) "\203\f\302\303\304 \")\207\305\304 \"\207" [current-prefix-arg file nil emms-source-add emms-source-pls-playlist emms-source-play] 3 (#$ . 14534) (list (read-file-name "Playlist file: " emms-source-file-default-directory emms-source-file-default-directory t))]) #@41 An EMMS source for a pls playlist file. (defalias 'emms-add-pls-playlist #[(file) "\203\f\302\303\304 \")\207\305\304 \"\207" [current-prefix-arg file nil emms-source-play emms-source-pls-playlist emms-source-add] 3 (#$ . 14889) (list (read-file-name "Playlist file: " emms-source-file-default-directory emms-source-file-default-directory t))]) #@41 An EMMS source for a pls playlist file. (defalias 'emms-insert-pls-playlist #[(file) "\301\302\"\207" [file emms-source-insert emms-source-pls-playlist] 3 (#$ . 15243) (list (read-file-name "Playlist file: " emms-source-file-default-directory emms-source-file-default-directory t))]) #@50 Return the first track in BUF. This moves point. (defalias 'emms-source-playlist-first #[(buf) "rq\210\301\302\303\217)\207" [buf nil (byte-code "\300 \210\301`!\207" [emms-playlist-first emms-playlist-track-at] 2) ((error))] 3 (#$ . 15534)]) #@49 Return the next track in BUF. This moves point. (defalias 'emms-source-playlist-next #[(buf) "rq\210\301\302\303\217)\207" [buf nil (byte-code "\300 \210\301`!\207" [emms-playlist-next emms-playlist-track-at] 2) ((error))] 3 (#$ . 15784)]) #@196 An EMMS source for playlist files. This adds the given file to the current EMMS playlist buffer, without adding its contents. See `emms-source-playlist-formats' for a list of supported formats. (defalias 'emms-source-playlist-file #[(file) "\301\302\303\304!\"!\207" [file emms-playlist-insert-track emms-track playlist expand-file-name] 5 (#$ . 16032)]) #@196 An EMMS source for playlist files. This adds the given file to the current EMMS playlist buffer, without adding its contents. See `emms-source-playlist-formats' for a list of supported formats. (defalias 'emms-play-playlist-file #[(file) "\203\f\302\303\304 \")\207\305\304 \"\207" [current-prefix-arg file nil emms-source-add emms-source-playlist-file emms-source-play] 3 (#$ . 16396) (list (read-file-name "Playlist file: " emms-source-file-default-directory emms-source-file-default-directory t))]) #@196 An EMMS source for playlist files. This adds the given file to the current EMMS playlist buffer, without adding its contents. See `emms-source-playlist-formats' for a list of supported formats. (defalias 'emms-add-playlist-file #[(file) "\203\f\302\303\304 \")\207\305\304 \"\207" [current-prefix-arg file nil emms-source-play emms-source-playlist-file emms-source-add] 3 (#$ . 16909) (list (read-file-name "Playlist file: " emms-source-file-default-directory emms-source-file-default-directory t))]) #@196 An EMMS source for playlist files. This adds the given file to the current EMMS playlist buffer, without adding its contents. See `emms-source-playlist-formats' for a list of supported formats. (defalias 'emms-insert-playlist-file #[(file) "\301\302\"\207" [file emms-source-insert emms-source-playlist-file] 3 (#$ . 17421) (list (read-file-name "Playlist file: " emms-source-file-default-directory emms-source-file-default-directory t))]) #@116 An EMMS source for a whole directory tree of playlist files. If DIR is not specified, it is queried from the user. (defalias 'emms-source-playlist-directory #[(dir) "\301\302\303\304\305#\"\207" [dir mapc #[(file) "\303\304 \n\")\206 \305\n!?\205\306\307\310\311\n!\"!\207" [case-fold-search emms-source-file-exclude-regexp file nil string-match file-directory-p emms-playlist-insert-track emms-track playlist expand-file-name] 5] directory-files t "^[^.]"] 6 (#$ . 17870)]) #@116 An EMMS source for a whole directory tree of playlist files. If DIR is not specified, it is queried from the user. (defalias 'emms-play-playlist-directory #[(dir) "\203\f\302\303\304 \")\207\305\304 \"\207" [current-prefix-arg dir nil emms-source-add emms-source-playlist-directory emms-source-play] 3 (#$ . 18357) (list (emms-read-directory-name "Play directory: " emms-source-file-default-directory emms-source-file-default-directory t))]) #@116 An EMMS source for a whole directory tree of playlist files. If DIR is not specified, it is queried from the user. (defalias 'emms-add-playlist-directory #[(dir) "\203\f\302\303\304 \")\207\305\304 \"\207" [current-prefix-arg dir nil emms-source-play emms-source-playlist-directory emms-source-add] 3 (#$ . 18809) (list (emms-read-directory-name "Play directory: " emms-source-file-default-directory emms-source-file-default-directory t))]) #@116 An EMMS source for a whole directory tree of playlist files. If DIR is not specified, it is queried from the user. (defalias 'emms-insert-playlist-directory #[(dir) "\301\302\"\207" [dir emms-source-insert emms-source-playlist-directory] 3 (#$ . 19260) (list (emms-read-directory-name "Play directory: " emms-source-file-default-directory emms-source-file-default-directory t))]) #@118 An EMMS source for multiple directory trees of playlist files. If DIR is not specified, it is queried from the user. (defalias 'emms-source-playlist-directory-tree #[(dir) "\301\302\303\304!\305\"\"\207" [dir mapc #[(file) "\303\304 \n\")?\205\305\306\307\n\"!\207" [case-fold-search emms-source-file-exclude-regexp file nil string-match emms-playlist-insert-track emms-track playlist] 4] emms-source-file-directory-tree expand-file-name "^[^.]"] 5 (#$ . 19648)]) #@118 An EMMS source for multiple directory trees of playlist files. If DIR is not specified, it is queried from the user. (defalias 'emms-play-playlist-directory-tree #[(dir) "\203\f\302\303\304 \")\207\305\304 \"\207" [current-prefix-arg dir nil emms-source-add emms-source-playlist-directory-tree emms-source-play] 3 (#$ . 20123) (list (emms-read-directory-name "Play directory tree: " emms-source-file-default-directory emms-source-file-default-directory t))]) #@118 An EMMS source for multiple directory trees of playlist files. If DIR is not specified, it is queried from the user. (defalias 'emms-add-playlist-directory-tree #[(dir) "\203\f\302\303\304 \")\207\305\304 \"\207" [current-prefix-arg dir nil emms-source-play emms-source-playlist-directory-tree emms-source-add] 3 (#$ . 20592) (list (emms-read-directory-name "Play directory tree: " emms-source-file-default-directory emms-source-file-default-directory t))]) #@118 An EMMS source for multiple directory trees of playlist files. If DIR is not specified, it is queried from the user. (defalias 'emms-insert-playlist-directory-tree #[(dir) "\301\302\"\207" [dir emms-source-insert emms-source-playlist-directory-tree] 3 (#$ . 21060) (list (emms-read-directory-name "Play directory tree: " emms-source-file-default-directory emms-source-file-default-directory t))]) (provide 'emms-source-playlist)