;ELC ;;; Compiled ;;; in Emacs version 28.0.50 ;;; with all optimizations. (byte-code "\300\301!\210\300\302!\210\300\303!\210\300\304!\210\305\306\307\310\311\312%\210\313\314\315\316\317DD\320\321\322%\210\313\323\315\316\324DD\325\321\326%\210\313\327\315\316\330DD\331\321\332%\210\313\333\315\316\334DD\335\321\336%\210\313\337\315\316\340DD\341\321\342%\210\313\343\315\316\344DD\345\321\346\311\306&\210\313\347\315\316\350DD\351\321\346\311\306&\210\313\352\315\316\353DD\354\321\346\311\306&\210\313\355\315\316\356DD\357\321\346\311\306&\207" [require time-stamp tq cl-lib subr-x custom-declare-group libmpdel nil "Communication with an MPD server." :group comm custom-declare-variable libmpdel-hostname funcall function #[0 "\300\207" [#1="localhost"] 1 #1#] "MPD server location to connect to. Also see `libmpdel-port'.\nIf this string starts with a slash, it means connect to a local\nUnix socket with such absolute filename. Please see the MPD\nserver documentation for server configuration info.\n\nThe advantage of such a setup is that file and/or directory\npermission modes can be used to enforce access control,\nwithout the need for a password." :type string libmpdel-port #[0 "\300\207" [6600] 1] "MPD server port to connect to. Also see `libmpdel-hostname'." integer libmpdel-family #[0 "\300\207" [ipv4] 1] "MPD address family when connecting via TCP connections.\n\nFor more information see `libmpdel-hostname'." (choice (const :tag "IPv4" ipv4) (const :tag "IPv6" ipv6)) libmpdel-profiles #[0 "\303 \nFC\207" [libmpdel-hostname libmpdel-port libmpdel-family "Local server"] 4] "List of (NAME HOST PORT . FAMILY) when using several MPD servers." (repeat (list :tag "Profile" :value ("Local server" "localhost" 6600) (string :tag "name") (string :tag "host") (integer :tag "port") (choice (const :tag "IPv4" ipv4) (const :tag "IPv6" ipv6)))) libmpdel-music-directory #[0 "\300\207" [#2="~/Music"] 1 #2#] "MPD `music_directory' variable's value.\n\nThis is used to map MPD's music files to the file-system." directory libmpdel-current-playlist-changed-hook #[0 "\300\207" [nil] 1] "Functions to call when the current playlist is modified." hook libmpdel-stored-playlist-changed-hook #[0 "\300\207" [nil] 1] "Functions to call when a stored playlist is modified." libmpdel-player-changed-hook #[0 "\300\207" [nil] 1] "Functions to call when the player status changes.\nThis includes starting, stopping and seeking music." libmpdel-current-song-changed-hook #[0 "\300\207" [nil] 1] "Functions to call when the current song changes.\nSee `libmpdel-current-song-id'."] 8) #@105 Current connection to the MPD server. The logs of this connection are accessible in the `*mpd*' buffer. (defvar libmpdel--connection nil (#$ . 2611)) #@55 Regexp matching the responses sent by the MPD server. (defconst libmpdel--response-regexp "^\\(?:OK\\(?: MPD .+\\)?\\|ACK \\[[[:digit:]]+@[[:digit:]]+] .+\\)\n" (#$ . 2767)) #@112 Regexp matching a line consisting of a key and a value. The key is stored in group 1 and the value in group 2. (defconst libmpdel--msgfield-regexp "^\\([^:]+?\\): \\(.*\\)$" (#$ . 2948)) #@1323 Current commands sent to the server. Each element in the list is of the form (COMMAND HANDLER BUFFER). COMMAND is the query sent to the server. Even though this information is not necessary, it is useful to better understand the log. HANDLER is a function executed when the answers to COMMAND comes back. The function must accept one parameter (usually named MESSAGE) that will contain the answer. BUFFER is a buffer that was active when COMMAND was sent. This buffer is made active again while executing HANDLER. An invariant of this MPD client is that there is always an IDLE command sent to the server (and its corresponding handler in this variable). This means our client is always registered to notifications in the server. When we want to send a command to the server (for example to change the current song), we always have to (1) cancel the IDLE first (with a "noidle" command), (2) send the command we want, and (3) send the IDLE command again. Canceling the current "idle" command is done in `mpdel-send-command'. Sending "idle" again is done in the handler for "idle" that will be triggered when the empty answer for the canceled "idle" arrives. Because MPD answers in the order the commands are sent, we know that the first handler is the one to execute when we receive a message from the server. (defvar libmpdel--msghandlers nil (#$ . 3143)) #@74 compiler-macro for inlining `libmpdel-artist-p'. (fn CL-WHOLE-ARG CL-X) (defalias 'libmpdel-artist-p--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block libmpdel-artist-p (and (memq (type-of cl-x) cl-struct-libmpdel-artist-tags) t)) nil] 9 (#$ . 4518)]) (put 'libmpdel-artist-p 'compiler-macro 'libmpdel-artist-p--cmacro) #@13 (fn CL-X) (defalias 'libmpdel-artist-p #[257 "\301!>\205 \302\207" [cl-struct-libmpdel-artist-tags type-of t] 3 (#$ . 4882)]) (byte-code "\300\301\302\303#\304\305\306\301#\207" [function-put libmpdel-artist-p side-effect-free error-free put libmpdel-artist cl-deftype-satisfies] 5) #@78 compiler-macro for inlining `libmpdel--artist-name'. (fn CL-WHOLE-ARG CL-X) (defalias 'libmpdel--artist-name--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block libmpdel--artist-name (progn (or (libmpdel-artist-p cl-x) (signal 'wrong-type-argument (list 'libmpdel-artist cl-x))) (aref cl-x 1))) nil] 9 (#$ . 5176)]) (put 'libmpdel--artist-name 'compiler-macro 'libmpdel--artist-name--cmacro) #@65 Access slot "name" of `libmpdel-artist' struct CL-X. (fn CL-X) (defalias 'libmpdel--artist-name #[257 "\301!>\204\302\303\304D\"\210\211\305H\207" [cl-struct-libmpdel-artist-tags type-of signal wrong-type-argument libmpdel-artist 1] 5 (#$ . 5610)]) (byte-code "\300\301\302\303#\300\301\304\305#\306\307\310\"\207" [function-put libmpdel--artist-name side-effect-free t gv-expander #[514 "\300\301\302\"\207" [error "%s is a read-only slot" libmpdel--artist-name] 5 "\n\n(fn CL-DO CL-X)"] defalias copy-libmpdel-artist copy-sequence] 5) #@91 compiler-macro for inlining `libmpdel--artist-create'. (fn CL-WHOLE &cl-quote &key NAME) (defalias 'libmpdel--artist-create--cmacro #[385 "\300\301\"A@\211\2031\211@\302>\203\211AA\262\202\303>A@\203(\304\262\202\305\306@\"\210\202\210\307\310\311\304\304&\207" [plist-member :name (:name :allow-other-keys) :allow-other-keys nil error "Keyword argument %s not one of (:name)" cl--defsubst-expand (name) (cl-block libmpdel--artist-create (record 'libmpdel-artist name))] 10 (#$ . 6159)]) (put 'libmpdel--artist-create 'compiler-macro 'libmpdel--artist-create--cmacro) #@68 Constructor for objects of type `libmpdel-artist'. (fn &key NAME) (defalias 'libmpdel--artist-create #[128 "\300\301\"A@\211\2031\211@\302>\203\211AA\262\202\303>A@\203(\304\262\202\305\306@\"\210\202\210\307\310\"\207" [plist-member :name (:name :allow-other-keys) :allow-other-keys nil error "Keyword argument %s not one of (:name)" record libmpdel-artist] 6 (#$ . 6755)]) (byte-code "\300\301\302\303#\304\305\306\307\310\306\311\312\305\303& \207" [function-put libmpdel--artist-create side-effect-free t cl-struct-define libmpdel-artist nil cl-structure-object record ((cl-tag-slot) (name nil :read-only t)) cl-struct-libmpdel-artist-tags] 11) #@73 compiler-macro for inlining `libmpdel-album-p'. (fn CL-WHOLE-ARG CL-X) (defalias 'libmpdel-album-p--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block libmpdel-album-p (and (memq (type-of cl-x) cl-struct-libmpdel-album-tags) t)) nil] 9 (#$ . 7428)]) (put 'libmpdel-album-p 'compiler-macro 'libmpdel-album-p--cmacro) #@13 (fn CL-X) (defalias 'libmpdel-album-p #[257 "\301!>\205 \302\207" [cl-struct-libmpdel-album-tags type-of t] 3 (#$ . 7786)]) (byte-code "\300\301\302\303#\304\305\306\301#\207" [function-put libmpdel-album-p side-effect-free error-free put libmpdel-album cl-deftype-satisfies] 5) #@77 compiler-macro for inlining `libmpdel--album-name'. (fn CL-WHOLE-ARG CL-X) (defalias 'libmpdel--album-name--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block libmpdel--album-name (progn (or (libmpdel-album-p cl-x) (signal 'wrong-type-argument (list 'libmpdel-album cl-x))) (aref cl-x 1))) nil] 9 (#$ . 8076)]) (put 'libmpdel--album-name 'compiler-macro 'libmpdel--album-name--cmacro) #@64 Access slot "name" of `libmpdel-album' struct CL-X. (fn CL-X) (defalias 'libmpdel--album-name #[257 "\301!>\204\302\303\304D\"\210\211\305H\207" [cl-struct-libmpdel-album-tags type-of signal wrong-type-argument libmpdel-album 1] 5 (#$ . 8503)]) (byte-code "\300\301\302\303#\300\301\304\305#\300\207" [function-put libmpdel--album-name side-effect-free t gv-expander #[514 "\300\301\302\"\207" [error "%s is a read-only slot" libmpdel--album-name] 5 "\n\n(fn CL-DO CL-X)"]] 5) #@79 compiler-macro for inlining `libmpdel--album-artist'. (fn CL-WHOLE-ARG CL-X) (defalias 'libmpdel--album-artist--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block libmpdel--album-artist (progn (or (libmpdel-album-p cl-x) (signal 'wrong-type-argument (list 'libmpdel-album cl-x))) (aref cl-x 2))) nil] 9 (#$ . 8992)]) (put 'libmpdel--album-artist 'compiler-macro 'libmpdel--album-artist--cmacro) #@66 Access slot "artist" of `libmpdel-album' struct CL-X. (fn CL-X) (defalias 'libmpdel--album-artist #[257 "\301!>\204\302\303\304D\"\210\211\305H\207" [cl-struct-libmpdel-album-tags type-of signal wrong-type-argument libmpdel-album 2] 5 (#$ . 9429)]) (byte-code "\300\301\302\303#\300\301\304\305#\306\307\310\"\207" [function-put libmpdel--album-artist side-effect-free t gv-expander #[514 "\300\301\302\"\207" [error "%s is a read-only slot" libmpdel--album-artist] 5 "\n\n(fn CL-DO CL-X)"] defalias copy-libmpdel-album copy-sequence] 5) #@97 compiler-macro for inlining `libmpdel--album-create'. (fn CL-WHOLE &cl-quote &key NAME ARTIST) (defalias 'libmpdel--album-create--cmacro #[385 "\300\301\"A@\300\302\"A@\211\2037\211@\303>\203 \211AA\262\202 \304>A@\203.\305\262\202 \306\307@\"\210\202 \210\310\311\312\305\305&\207" [plist-member :name :artist (:name :artist :allow-other-keys) :allow-other-keys nil error "Keyword argument %s not one of (:name :artist)" cl--defsubst-expand (name artist) (cl-block libmpdel--album-create (record 'libmpdel-album name artist))] 12 (#$ . 9979)]) (put 'libmpdel--album-create 'compiler-macro 'libmpdel--album-create--cmacro) #@74 Constructor for objects of type `libmpdel-album'. (fn &key NAME ARTIST) (defalias 'libmpdel--album-create #[128 "\300\301\"A@\300\302\"A@\211\2037\211@\303>\203 \211AA\262\202 \304>A@\203.\305\262\202 \306\307@\"\210\202 \210\310\311#\207" [plist-member :name :artist (:name :artist :allow-other-keys) :allow-other-keys nil error "Keyword argument %s not one of (:name :artist)" record libmpdel-album] 7 (#$ . 10629)]) (byte-code "\300\301\302\303#\304\305\306\307\310\306\311\312\305\303& \207" [function-put libmpdel--album-create side-effect-free t cl-struct-define libmpdel-album nil cl-structure-object record ((cl-tag-slot) (name nil :read-only t) (artist nil :read-only t)) cl-struct-libmpdel-album-tags] 11) #@72 compiler-macro for inlining `libmpdel-song-p'. (fn CL-WHOLE-ARG CL-X) (defalias 'libmpdel-song-p--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block libmpdel-song-p (and (memq (type-of cl-x) cl-struct-libmpdel-song-tags) t)) nil] 9 (#$ . 11367)]) (put 'libmpdel-song-p 'compiler-macro 'libmpdel-song-p--cmacro) #@13 (fn CL-X) (defalias 'libmpdel-song-p #[257 "\301!>\205 \302\207" [cl-struct-libmpdel-song-tags type-of t] 3 (#$ . 11720)]) (byte-code "\300\301\302\303#\304\305\306\301#\207" [function-put libmpdel-song-p side-effect-free error-free put libmpdel-song cl-deftype-satisfies] 5) #@76 compiler-macro for inlining `libmpdel--song-name'. (fn CL-WHOLE-ARG CL-X) (defalias 'libmpdel--song-name--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block libmpdel--song-name (progn (or (libmpdel-song-p cl-x) (signal 'wrong-type-argument (list 'libmpdel-song cl-x))) (aref cl-x 1))) nil] 9 (#$ . 12007)]) (put 'libmpdel--song-name 'compiler-macro 'libmpdel--song-name--cmacro) #@63 Access slot "name" of `libmpdel-song' struct CL-X. (fn CL-X) (defalias 'libmpdel--song-name #[257 "\301!>\204\302\303\304D\"\210\211\305H\207" [cl-struct-libmpdel-song-tags type-of signal wrong-type-argument libmpdel-song 1] 5 (#$ . 12428)]) (byte-code "\300\301\302\303#\300\301\304\305#\300\207" [function-put libmpdel--song-name side-effect-free t gv-expander #[514 "\300\301\302\"\207" [error "%s is a read-only slot" libmpdel--song-name] 5 "\n\n(fn CL-DO CL-X)"]] 5) #@77 compiler-macro for inlining `libmpdel--song-track'. (fn CL-WHOLE-ARG CL-X) (defalias 'libmpdel--song-track--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block libmpdel--song-track (progn (or (libmpdel-song-p cl-x) (signal 'wrong-type-argument (list 'libmpdel-song cl-x))) (aref cl-x 2))) nil] 9 (#$ . 12912)]) (put 'libmpdel--song-track 'compiler-macro 'libmpdel--song-track--cmacro) #@64 Access slot "track" of `libmpdel-song' struct CL-X. (fn CL-X) (defalias 'libmpdel--song-track #[257 "\301!>\204\302\303\304D\"\210\211\305H\207" [cl-struct-libmpdel-song-tags type-of signal wrong-type-argument libmpdel-song 2] 5 (#$ . 13338)]) (byte-code "\300\301\302\303#\300\301\304\305#\300\207" [function-put libmpdel--song-track side-effect-free t gv-expander #[514 "\300\301\302\"\207" [error "%s is a read-only slot" libmpdel--song-track] 5 "\n\n(fn CL-DO CL-X)"]] 5) #@76 compiler-macro for inlining `libmpdel--song-file'. (fn CL-WHOLE-ARG CL-X) (defalias 'libmpdel--song-file--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block libmpdel--song-file (progn (or (libmpdel-song-p cl-x) (signal 'wrong-type-argument (list 'libmpdel-song cl-x))) (aref cl-x 3))) nil] 9 (#$ . 13826)]) (put 'libmpdel--song-file 'compiler-macro 'libmpdel--song-file--cmacro) #@63 Access slot "file" of `libmpdel-song' struct CL-X. (fn CL-X) (defalias 'libmpdel--song-file #[257 "\301!>\204\302\303\304D\"\210\211\305H\207" [cl-struct-libmpdel-song-tags type-of signal wrong-type-argument libmpdel-song 3] 5 (#$ . 14247)]) (byte-code "\300\301\302\303#\300\301\304\305#\300\207" [function-put libmpdel--song-file side-effect-free t gv-expander #[514 "\300\301\302\"\207" [error "%s is a read-only slot" libmpdel--song-file] 5 "\n\n(fn CL-DO CL-X)"]] 5) #@77 compiler-macro for inlining `libmpdel--song-album'. (fn CL-WHOLE-ARG CL-X) (defalias 'libmpdel--song-album--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block libmpdel--song-album (progn (or (libmpdel-song-p cl-x) (signal 'wrong-type-argument (list 'libmpdel-song cl-x))) (aref cl-x 4))) nil] 9 (#$ . 14731)]) (put 'libmpdel--song-album 'compiler-macro 'libmpdel--song-album--cmacro) #@64 Access slot "album" of `libmpdel-song' struct CL-X. (fn CL-X) (defalias 'libmpdel--song-album #[257 "\301!>\204\302\303\304D\"\210\211\305H\207" [cl-struct-libmpdel-song-tags type-of signal wrong-type-argument libmpdel-song 4] 5 (#$ . 15157)]) (byte-code "\300\301\302\303#\300\301\304\305#\300\207" [function-put libmpdel--song-album side-effect-free t gv-expander #[514 "\300\301\302\"\207" [error "%s is a read-only slot" libmpdel--song-album] 5 "\n\n(fn CL-DO CL-X)"]] 5) #@76 compiler-macro for inlining `libmpdel--song-disc'. (fn CL-WHOLE-ARG CL-X) (defalias 'libmpdel--song-disc--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block libmpdel--song-disc (progn (or (libmpdel-song-p cl-x) (signal 'wrong-type-argument (list 'libmpdel-song cl-x))) (aref cl-x 5))) nil] 9 (#$ . 15645)]) (put 'libmpdel--song-disc 'compiler-macro 'libmpdel--song-disc--cmacro) #@63 Access slot "disc" of `libmpdel-song' struct CL-X. (fn CL-X) (defalias 'libmpdel--song-disc #[257 "\301!>\204\302\303\304D\"\210\211\305H\207" [cl-struct-libmpdel-song-tags type-of signal wrong-type-argument libmpdel-song 5] 5 (#$ . 16066)]) (byte-code "\300\301\302\303#\300\301\304\305#\300\207" [function-put libmpdel--song-disc side-effect-free t gv-expander #[514 "\300\301\302\"\207" [error "%s is a read-only slot" libmpdel--song-disc] 5 "\n\n(fn CL-DO CL-X)"]] 5) #@76 compiler-macro for inlining `libmpdel--song-date'. (fn CL-WHOLE-ARG CL-X) (defalias 'libmpdel--song-date--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block libmpdel--song-date (progn (or (libmpdel-song-p cl-x) (signal 'wrong-type-argument (list 'libmpdel-song cl-x))) (aref cl-x 6))) nil] 9 (#$ . 16550)]) (put 'libmpdel--song-date 'compiler-macro 'libmpdel--song-date--cmacro) #@63 Access slot "date" of `libmpdel-song' struct CL-X. (fn CL-X) (defalias 'libmpdel--song-date #[257 "\301!>\204\302\303\304D\"\210\211\305H\207" [cl-struct-libmpdel-song-tags type-of signal wrong-type-argument libmpdel-song 6] 5 (#$ . 16971)]) (byte-code "\300\301\302\303#\300\301\304\305#\300\207" [function-put libmpdel--song-date side-effect-free t gv-expander #[514 "\300\301\302\"\207" [error "%s is a read-only slot" libmpdel--song-date] 5 "\n\n(fn CL-DO CL-X)"]] 5) #@74 compiler-macro for inlining `libmpdel--song-id'. (fn CL-WHOLE-ARG CL-X) (defalias 'libmpdel--song-id--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block libmpdel--song-id (progn (or (libmpdel-song-p cl-x) (signal 'wrong-type-argument (list 'libmpdel-song cl-x))) (aref cl-x 7))) nil] 9 (#$ . 17455)]) (put 'libmpdel--song-id 'compiler-macro 'libmpdel--song-id--cmacro) #@61 Access slot "id" of `libmpdel-song' struct CL-X. (fn CL-X) (defalias 'libmpdel--song-id #[257 "\301!>\204\302\303\304D\"\210\211\305H\207" [cl-struct-libmpdel-song-tags type-of signal wrong-type-argument libmpdel-song 7] 5 (#$ . 17866)]) (byte-code "\300\301\302\303#\300\301\304\305#\300\207" [function-put libmpdel--song-id side-effect-free t gv-expander #[514 "\300\301\302\"\207" [error "%s is a read-only slot" libmpdel--song-id] 5 "\n\n(fn CL-DO CL-X)"]] 5) #@75 compiler-macro for inlining `libmpdel--song-pos'. (fn CL-WHOLE-ARG CL-X) (defalias 'libmpdel--song-pos--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block libmpdel--song-pos (progn (or (libmpdel-song-p cl-x) (signal 'wrong-type-argument (list 'libmpdel-song cl-x))) (aref cl-x 8))) nil] 9 (#$ . 18342)]) (put 'libmpdel--song-pos 'compiler-macro 'libmpdel--song-pos--cmacro) #@62 Access slot "pos" of `libmpdel-song' struct CL-X. (fn CL-X) (defalias 'libmpdel--song-pos #[257 "\301!>\204\302\303\304D\"\210\211\305H\207" [cl-struct-libmpdel-song-tags type-of signal wrong-type-argument libmpdel-song 8] 5 (#$ . 18758)]) (byte-code "\300\301\302\303#\300\301\304\305#\306\307\310\"\207" [function-put libmpdel--song-pos side-effect-free t gv-expander #[514 "\300\301\302\"\207" [error "%s is a read-only slot" libmpdel--song-pos] 5 "\n\n(fn CL-DO CL-X)"] defalias copy-libmpdel-song copy-sequence] 5) #@123 compiler-macro for inlining `libmpdel--song-create'. (fn CL-WHOLE &cl-quote &key NAME TRACK FILE ALBUM DISC DATE ID POS) (defalias 'libmpdel--song-create--cmacro #[385 "\300\301\"A@\300\302\"A@\300\303\"A@\300\304\"A@\300\305\"A@\300\306\"A@\300\307\"A@\300\310\"A@\211\203`\211@\311>\203H\211AA\262\2025\312\n>A@\203W\313\262\2025\314\315@\"\210\2025\210\316\317\320\313 \313        & \207" [plist-member :name :track :file :album :disc :date :id :pos (:name :track :file :album :disc :date :id :pos :allow-other-keys) :allow-other-keys nil error "Keyword argument %s not one of (:name :track :file :album :disc :date :id :pos)" cl--defsubst-expand (name track file album disc date id pos) (cl-block libmpdel--song-create (record 'libmpdel-song name track file album disc date id pos))] 24 (#$ . 19291)]) (put 'libmpdel--song-create 'compiler-macro 'libmpdel--song-create--cmacro) #@100 Constructor for objects of type `libmpdel-song'. (fn &key NAME TRACK FILE ALBUM DISC DATE ID POS) (defalias 'libmpdel--song-create #[128 "\300\301\"A@\300\302\"A@\300\303\"A@\300\304\"A@\300\305\"A@\300\306\"A@\300\307\"A@\300\310\"A@\211\203`\211@\311>\203H\211AA\262\2025\312\n>A@\203W\313\262\2025\314\315@\"\210\2025\210\316\317        & \207" [plist-member :name :track :file :album :disc :date :id :pos (:name :track :file :album :disc :date :id :pos :allow-other-keys) :allow-other-keys nil error "Keyword argument %s not one of (:name :track :file :album :disc :date :id :pos)" record libmpdel-song] 19 (#$ . 20213)]) (byte-code "\300\301\302\303#\304\305\306\307\310\306\311\312\305\303& \207" [function-put libmpdel--song-create side-effect-free t cl-struct-define libmpdel-song nil cl-structure-object record ((cl-tag-slot) (name nil :read-only t) (track nil :read-only t) (file nil :read-only t) (album nil :read-only t) (disc nil :read-only t) (date nil :read-only t) (id nil :read-only t) (pos nil :read-only t)) cl-struct-libmpdel-song-tags] 11) #@83 compiler-macro for inlining `libmpdel-stored-playlist-p'. (fn CL-WHOLE-ARG CL-X) (defalias 'libmpdel-stored-playlist-p--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block libmpdel-stored-playlist-p (and (memq (type-of cl-x) cl-struct-libmpdel-stored-playlist-tags) t)) nil] 9 (#$ . 21312)]) (put 'libmpdel-stored-playlist-p 'compiler-macro 'libmpdel-stored-playlist-p--cmacro) #@13 (fn CL-X) (defalias 'libmpdel-stored-playlist-p #[257 "\301!>\205 \302\207" [cl-struct-libmpdel-stored-playlist-tags type-of t] 3 (#$ . 21731)]) (byte-code "\300\301\302\303#\304\305\306\301#\207" [function-put libmpdel-stored-playlist-p side-effect-free error-free put libmpdel-stored-playlist cl-deftype-satisfies] 5) #@87 compiler-macro for inlining `libmpdel--stored-playlist-name'. (fn CL-WHOLE-ARG CL-X) (defalias 'libmpdel--stored-playlist-name--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block libmpdel--stored-playlist-name (progn (or (libmpdel-stored-playlist-p cl-x) (signal 'wrong-type-argument (list 'libmpdel-stored-playlist cl-x))) (aref cl-x 1))) nil] 9 (#$ . 22062)]) (put 'libmpdel--stored-playlist-name 'compiler-macro 'libmpdel--stored-playlist-name--cmacro) #@74 Access slot "name" of `libmpdel-stored-playlist' struct CL-X. (fn CL-X) (defalias 'libmpdel--stored-playlist-name #[257 "\301!>\204\302\303\304D\"\210\211\305H\207" [cl-struct-libmpdel-stored-playlist-tags type-of signal wrong-type-argument libmpdel-stored-playlist 1] 5 (#$ . 22560)]) (byte-code "\300\301\302\303#\300\301\304\305#\306\307\310\"\207" [function-put libmpdel--stored-playlist-name side-effect-free t gv-expander #[514 "\300\301\302\"\207" [error "%s is a read-only slot" libmpdel--stored-playlist-name] 5 "\n\n(fn CL-DO CL-X)"] defalias copy-libmpdel-stored-playlist copy-sequence] 5) #@100 compiler-macro for inlining `libmpdel--stored-playlist-create'. (fn CL-WHOLE &cl-quote &key NAME) (defalias 'libmpdel--stored-playlist-create--cmacro #[385 "\300\301\"A@\211\2031\211@\302>\203\211AA\262\202\303>A@\203(\304\262\202\305\306@\"\210\202\210\307\310\311\304\304&\207" [plist-member :name (:name :allow-other-keys) :allow-other-keys nil error "Keyword argument %s not one of (:name)" cl--defsubst-expand (name) (cl-block libmpdel--stored-playlist-create (record 'libmpdel-stored-playlist name))] 10 (#$ . 23174)]) (put 'libmpdel--stored-playlist-create 'compiler-macro 'libmpdel--stored-playlist-create--cmacro) #@77 Constructor for objects of type `libmpdel-stored-playlist'. (fn &key NAME) (defalias 'libmpdel--stored-playlist-create #[128 "\300\301\"A@\211\2031\211@\302>\203\211AA\262\202\303>A@\203(\304\262\202\305\306@\"\210\202\210\307\310\"\207" [plist-member :name (:name :allow-other-keys) :allow-other-keys nil error "Keyword argument %s not one of (:name)" record libmpdel-stored-playlist] 6 (#$ . 23825)]) (byte-code "\300\301\302\303#\304\305\306\307\310\306\311\312\305\303& \207" [function-put libmpdel--stored-playlist-create side-effect-free t cl-struct-define libmpdel-stored-playlist nil cl-structure-object record ((cl-tag-slot) (name nil :read-only t)) cl-struct-libmpdel-stored-playlist-tags] 11) #@83 compiler-macro for inlining `libmpdel-search-criteria-p'. (fn CL-WHOLE-ARG CL-X) (defalias 'libmpdel-search-criteria-p--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block libmpdel-search-criteria-p (and (memq (type-of cl-x) cl-struct-libmpdel-search-criteria-tags) t)) nil] 9 (#$ . 24553)]) (put 'libmpdel-search-criteria-p 'compiler-macro 'libmpdel-search-criteria-p--cmacro) #@13 (fn CL-X) (defalias 'libmpdel-search-criteria-p #[257 "\301!>\205 \302\207" [cl-struct-libmpdel-search-criteria-tags type-of t] 3 (#$ . 24972)]) (byte-code "\300\301\302\303#\304\305\306\301#\207" [function-put libmpdel-search-criteria-p side-effect-free error-free put libmpdel-search-criteria cl-deftype-satisfies] 5) #@87 compiler-macro for inlining `libmpdel--search-criteria-type'. (fn CL-WHOLE-ARG CL-X) (defalias 'libmpdel--search-criteria-type--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block libmpdel--search-criteria-type (progn (or (libmpdel-search-criteria-p cl-x) (signal 'wrong-type-argument (list 'libmpdel-search-criteria cl-x))) (aref cl-x 1))) nil] 9 (#$ . 25303)]) (put 'libmpdel--search-criteria-type 'compiler-macro 'libmpdel--search-criteria-type--cmacro) #@74 Access slot "type" of `libmpdel-search-criteria' struct CL-X. (fn CL-X) (defalias 'libmpdel--search-criteria-type #[257 "\301!>\204\302\303\304D\"\210\211\305H\207" [cl-struct-libmpdel-search-criteria-tags type-of signal wrong-type-argument libmpdel-search-criteria 1] 5 (#$ . 25801)]) (byte-code "\300\301\302\303#\300\301\304\305#\300\207" [function-put libmpdel--search-criteria-type side-effect-free t gv-expander #[514 "\300\301\302\"\207" [error "%s is a read-only slot" libmpdel--search-criteria-type] 5 "\n\n(fn CL-DO CL-X)"]] 5) #@87 compiler-macro for inlining `libmpdel--search-criteria-what'. (fn CL-WHOLE-ARG CL-X) (defalias 'libmpdel--search-criteria-what--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block libmpdel--search-criteria-what (progn (or (libmpdel-search-criteria-p cl-x) (signal 'wrong-type-argument (list 'libmpdel-search-criteria cl-x))) (aref cl-x 2))) nil] 9 (#$ . 26351)]) (put 'libmpdel--search-criteria-what 'compiler-macro 'libmpdel--search-criteria-what--cmacro) #@74 Access slot "what" of `libmpdel-search-criteria' struct CL-X. (fn CL-X) (defalias 'libmpdel--search-criteria-what #[257 "\301!>\204\302\303\304D\"\210\211\305H\207" [cl-struct-libmpdel-search-criteria-tags type-of signal wrong-type-argument libmpdel-search-criteria 2] 5 (#$ . 26849)]) (byte-code "\300\301\302\303#\300\301\304\305#\306\307\310\"\207" [function-put libmpdel--search-criteria-what side-effect-free t gv-expander #[514 "\300\301\302\"\207" [error "%s is a read-only slot" libmpdel--search-criteria-what] 5 "\n\n(fn CL-DO CL-X)"] defalias copy-libmpdel-search-criteria copy-sequence] 5) #@104 compiler-macro for inlining `libmpdel-search-criteria-create'. (fn CL-WHOLE &cl-quote &key TYPE WHAT) (defalias 'libmpdel-search-criteria-create--cmacro #[385 "\300\301\"A@\300\302\"A@\211\2037\211@\303>\203 \211AA\262\202 \304>A@\203.\305\262\202 \306\307@\"\210\202 \210\310\311\312\305\305&\207" [plist-member :type :what (:type :what :allow-other-keys) :allow-other-keys nil error "Keyword argument %s not one of (:type :what)" cl--defsubst-expand (type what) (cl-block libmpdel-search-criteria-create (record 'libmpdel-search-criteria type what))] 12 (#$ . 27463)]) (put 'libmpdel-search-criteria-create 'compiler-macro 'libmpdel-search-criteria-create--cmacro) #@82 Constructor for objects of type `libmpdel-search-criteria'. (fn &key TYPE WHAT) (defalias 'libmpdel-search-criteria-create #[128 "\300\301\"A@\300\302\"A@\211\2037\211@\303>\203 \211AA\262\202 \304>A@\203.\305\262\202 \306\307@\"\210\202 \210\310\311#\207" [plist-member :type :what (:type :what :allow-other-keys) :allow-other-keys nil error "Keyword argument %s not one of (:type :what)" record libmpdel-search-criteria] 7 (#$ . 28157)]) (byte-code "\300\301\302\303#\304\305\306\307\310\306\311\312\305\303& \207" [function-put libmpdel-search-criteria-create side-effect-free t cl-struct-define libmpdel-search-criteria nil cl-structure-object record ((cl-tag-slot) (type nil :read-only t) (what nil :read-only t)) cl-struct-libmpdel-search-criteria-tags] 11) #@74 compiler-macro for inlining `libmpdel-filter-p'. (fn CL-WHOLE-ARG CL-X) (defalias 'libmpdel-filter-p--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block libmpdel-filter-p (and (memq (type-of cl-x) cl-struct-libmpdel-filter-tags) t)) nil] 9 (#$ . 28943)]) (put 'libmpdel-filter-p 'compiler-macro 'libmpdel-filter-p--cmacro) #@13 (fn CL-X) (defalias 'libmpdel-filter-p #[257 "\301!>\205 \302\207" [cl-struct-libmpdel-filter-tags type-of t] 3 (#$ . 29308)]) (byte-code "\300\301\302\303#\304\305\306\301#\207" [function-put libmpdel-filter-p side-effect-free error-free put libmpdel-filter cl-deftype-satisfies] 5) #@78 compiler-macro for inlining `libmpdel--filter-text'. (fn CL-WHOLE-ARG CL-X) (defalias 'libmpdel--filter-text--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block libmpdel--filter-text (progn (or (libmpdel-filter-p cl-x) (signal 'wrong-type-argument (list 'libmpdel-filter cl-x))) (aref cl-x 1))) nil] 9 (#$ . 29603)]) (put 'libmpdel--filter-text 'compiler-macro 'libmpdel--filter-text--cmacro) #@65 Access slot "text" of `libmpdel-filter' struct CL-X. (fn CL-X) (defalias 'libmpdel--filter-text #[257 "\301!>\204\302\303\304D\"\210\211\305H\207" [cl-struct-libmpdel-filter-tags type-of signal wrong-type-argument libmpdel-filter 1] 5 (#$ . 30038)]) (byte-code "\300\301\302\303#\300\301\304\305#\306\307\310\"\207" [function-put libmpdel--filter-text side-effect-free t gv-expander #[514 "\300\301\302\"\207" [error "%s is a read-only slot" libmpdel--filter-text] 5 "\n\n(fn CL-DO CL-X)"] defalias copy-libmpdel-filter copy-sequence] 5) #@90 compiler-macro for inlining `libmpdel-filter-create'. (fn CL-WHOLE &cl-quote &key TEXT) (defalias 'libmpdel-filter-create--cmacro #[385 "\300\301\"A@\211\2031\211@\302>\203\211AA\262\202\303>A@\203(\304\262\202\305\306@\"\210\202\210\307\310\311\304\304&\207" [plist-member :text (:text :allow-other-keys) :allow-other-keys nil error "Keyword argument %s not one of (:text)" cl--defsubst-expand (text) (cl-block libmpdel-filter-create (record 'libmpdel-filter text))] 10 (#$ . 30588)]) (put 'libmpdel-filter-create 'compiler-macro 'libmpdel-filter-create--cmacro) #@68 Constructor for objects of type `libmpdel-filter'. (fn &key TEXT) (defalias 'libmpdel-filter-create #[128 "\300\301\"A@\211\2031\211@\302>\203\211AA\262\202\303>A@\203(\304\262\202\305\306@\"\210\202\210\307\310\"\207" [plist-member :text (:text :allow-other-keys) :allow-other-keys nil error "Keyword argument %s not one of (:text)" record libmpdel-filter] 6 (#$ . 31180)]) (byte-code "\300\301\302\303#\304\305\306\307\310\306\311\312\305\303& \207" [function-put libmpdel-filter-create side-effect-free t cl-struct-define libmpdel-filter nil cl-structure-object record ((cl-tag-slot) (text nil :read-only t)) cl-struct-libmpdel-filter-tags] 11) #@44 Return artist name of ENTITY. (fn ENTITY) (defalias 'libmpdel-artist-name #[257 "\301!\302!>\204\303\304\301D\"\210\211\305H\207" [cl-struct-libmpdel-artist-tags libmpdel-artist type-of signal wrong-type-argument 1] 6 (#$ . 31852)]) (byte-code "\300\301\302\301\303\304#\305#\210\306\301\304\307\304\310%\210\306\301\304\311\304\312%\210\306\301\304\313\304\314%\207" [defalias libmpdel-artist cl-generic-define (entity) nil "Return artist of ENTITY.\n\n(fn ENTITY)" cl-generic-define-method ((artist libmpdel-artist)) #[257 "\207" [] 2 "Return ARTIST.\n\n(fn ARTIST)"] ((album libmpdel-album)) #[257 "\301!>\204\302\303\304D\"\210\211\305H\207" [cl-struct-libmpdel-album-tags type-of signal wrong-type-argument libmpdel-album 2] 5 "Return the ALBUM's artist.\n\n(fn ALBUM)"] ((song libmpdel-song)) #[257 "\301\302!>\204\303\304\305D\"\210\306H!\207" [cl-struct-libmpdel-song-tags libmpdel-artist type-of signal wrong-type-argument libmpdel-song 4] 6 "Return the SONG's artist.\n\n(fn SONG)"]] 6) #@43 Return album name of ENTITY. (fn ENTITY) (defalias 'libmpdel-album-name #[257 "\301!\302!>\204\303\304\301D\"\210\211\305H\207" [cl-struct-libmpdel-album-tags libmpdel-album type-of signal wrong-type-argument 1] 6 (#$ . 32873)]) (byte-code "\300\301\302\301\303\304#\305#\210\306\301\304\307\304\310%\210\306\301\304\311\304\312%\210\300\313\302\313\314\304#\315#\210\306\313\304\316\304\317%\210\306\313\304\320\304\321%\210\306\313\304\322\304\323%\210\306\313\304\324\304\325%\210\306\313\304\326\304\327%\210\306\313\304\330\304\331%\210\306\313\304\332\304\333%\210\306\313\304\334\304\335%\210\306\313\304\336\304\337%\210\306\313\304\340\304\341%\210\300\342\302\342\343\304#\344#\210\306\342\304\343\304\345%\210\306\342\304\346\304\347%\210\306\342\304\350\304\351%\210\306\342\304\352\304\353%\210\306\342\304\354\304\355%\210\300\356\302\356\357\304#\360#\210\306\356\304\357\304\361%\210\306\356\304\362\304\363%\207" [defalias libmpdel-album cl-generic-define (entity) nil "Return album of ENTITY.\n\n(fn ENTITY)" cl-generic-define-method ((album libmpdel-album)) #[257 "\207" #1=[] 2 "Return ALBUM.\n\n(fn ALBUM)"] ((song libmpdel-song)) #[257 "\301!>\204\302\303\304D\"\210\211\305H\207" [cl-struct-libmpdel-song-tags type-of signal wrong-type-argument libmpdel-song 4] 5 "Return SONG's album.\n\n(fn SONG)"] libmpdel-entity-name (entity) "Return the name of ENTITY.\n\n(fn ENTITY)" ((artist libmpdel-artist)) #[257 "\301!>\204\302\303\304D\"\210\211\305H\207" [cl-struct-libmpdel-artist-tags type-of signal wrong-type-argument libmpdel-artist 1] 5 "Return ARTIST's name.\n\n(fn ARTIST)"] ((album libmpdel-album)) #[257 "\301!>\204\302\303\304D\"\210\211\305H\207" [cl-struct-libmpdel-album-tags type-of signal wrong-type-argument libmpdel-album 1] 5 "Return ALBUM's name.\n\n(fn ALBUM)"] ((song libmpdel-song)) #[257 "\301!>\204\302\303\304D\"\210\211\305H\206'\301!>\204$\302\303\304D\"\210\211\306H\207" [cl-struct-libmpdel-song-tags type-of signal wrong-type-argument libmpdel-song 1 3] 5 "Return SONG's name.\n\nIf the SONG's name is nil, return the filename instead.\n\n(fn SONG)"] ((_entity (eql stored-playlists))) #[257 "\300\207" ["Stored playlists"] 2 "Return a string describing the `stored-playlists' entity.\n\n(fn ENTITY)"] ((_entity (eql artists))) #[257 "\300\207" ["All artists"] 2 "Return a string describing the `artists' entity.\n\n(fn ENTITY)"] ((_entity (eql albums))) #[257 "\300\207" ["All albums"] 2 "Return a string describing the `albums' entity.\n\n(fn ENTITY)"] ((_entity (eql current-playlist))) #[257 "\300\207" ["Current playlist"] 2 "Return a string describing the `current-playlist' entity.\n\n(fn ENTITY)"] ((stored-playlist libmpdel-stored-playlist)) #[257 "\301!>\204\302\303\304D\"\210\211\305H\207" [cl-struct-libmpdel-stored-playlist-tags type-of signal wrong-type-argument libmpdel-stored-playlist 1] 5 "Return STORED-PLAYLIST's name.\n\n(fn STORED-PLAYLIST)"] ((search-criteria libmpdel-search-criteria)) #[257 "\301\302\303!>\204\304\305\306D\"\210\307H\303!>\204$\304\305\306D\"\210\310H#\207" [cl-struct-libmpdel-search-criteria-tags format "search %s: \"%s\"" type-of signal wrong-type-argument libmpdel-search-criteria 1 2] 8 "Return a string representing SEARCH-CRITERIA.\n\n(fn SEARCH-CRITERIA)"] ((filter libmpdel-filter)) #[257 "\301\302\303!>\204\304\305\306D\"\210\307H\"\207" [cl-struct-libmpdel-filter-tags format "filter %s" type-of signal wrong-type-argument libmpdel-filter 1] 7 "Return a string representing FILTER.\n\n(fn FILTER)"] libmpdel-entity-parent (_entity) "Return parent of ENTITY, nil if none.\n\n(fn ENTITY)" #[257 "\300\207" [nil] 2 "\n\n(fn ENTITY)"] ((song libmpdel-song)) #[257 "\300!\207" [libmpdel-album] 3 "Return SONG's album.\n\n(fn SONG)"] ((album libmpdel-album)) #[257 "\300!\207" [libmpdel-artist] 3 "Return ALBUM's artist.\n\n(fn ALBUM)"] ((_artist libmpdel-artist)) #[257 "\300\207" [artists] 2 "Return the `artists' entity.\n\n(fn ARTIST)"] ((_stored-playlist libmpdel-stored-playlist)) #[257 "\300\207" [stored-playlists] 2 "Return the `stored-playlists' entity.\n\n(fn STORED-PLAYLIST)"] libmpdel-entity-id (entity) "Return an identifier string for ENTITY.\n\n(fn ENTITY)" #[257 "\207" #1# 2 "\n\n(fn ENTITY)"] ((song libmpdel-song)) #[257 "\301!>\204\302\303\304D\"\210\211\305H\207" [cl-struct-libmpdel-song-tags type-of signal wrong-type-argument libmpdel-song 3] 5 "Return the SONG's filename.\n\n(fn SONG)"]] 6) #@41 Return the filename of SONG. (fn SONG) (defalias 'libmpdel-song-file #[257 "\301!>\204\302\303\304D\"\210\211\305H\207" [cl-struct-libmpdel-song-tags type-of signal wrong-type-argument libmpdel-song 3] 5 (#$ . 37363)]) #@62 Return the track number of SONG within its album. (fn SONG) (defalias 'libmpdel-song-track #[257 "\301!>\204\302\303\304D\"\210\211\305H\206\306\207" [cl-struct-libmpdel-song-tags type-of signal wrong-type-argument libmpdel-song 2 ""] 5 (#$ . 37594)]) #@37 Return the date of SONG. (fn SONG) (defalias 'libmpdel-entity-date #[257 "\301!>\204\302\303\304D\"\210\211\305H\206\306\207" [cl-struct-libmpdel-song-tags type-of signal wrong-type-argument libmpdel-song 6 ""] 5 (#$ . 37860)]) #@61 Return the disc number of SONG within its album. (fn SONG) (defalias 'libmpdel-song-disc #[257 "\301!>\204\302\303\304D\"\210\211\305H\206\306\207" [cl-struct-libmpdel-song-tags type-of signal wrong-type-argument libmpdel-song 5 ""] 5 (#$ . 38102)]) #@69 Return SONG id within the current playlist, nil if none. (fn SONG) (defalias 'libmpdel-song-id #[257 "\301!>\204\302\303\304D\"\210\211\305H\207" [cl-struct-libmpdel-song-tags type-of signal wrong-type-argument libmpdel-song 7] 5 (#$ . 38366)]) #@73 Return position of SONG in playlist, nil if not in playlist. (fn SONG) (defalias 'libmpdel-song-position #[257 "\301!>\204\302\303\304D\"\210\211\305H\211;\205!\211\306\230?\205!\307!\207" [cl-struct-libmpdel-song-tags type-of signal wrong-type-argument libmpdel-song 8 "" string-to-number] 5 (#$ . 38623)]) #@68 Return a song from SONG-DATA, a server's response. (fn SONG-DATA) (defalias 'libmpdel--create-song-from-data #[257 "\300\236A\301\236A\302\236A\303\304\305\236A\303\306\307 \236A\"#\310\236A\311\236A\312\236A\313\236A\303\314        & \207" [Title Track file record libmpdel-album Album libmpdel-artist Artist Disc Date Id Pos libmpdel-song] 19 (#$ . 38946)]) #@67 Return a list of songs from DATA, a server's response. (fn DATA) (defalias 'libmpdel--create-songs-from-data #[257 "\300\301\302!\"\207" [mapcar libmpdel--create-song-from-data libmpdel-group-data] 5 (#$ . 39334)]) #@64 Return non-nil if ENTITY is the current playlist. (fn ENTITY) (defalias 'libmpdel-current-playlist-p #[257 "\211\300=\207" [current-playlist] 3 (#$ . 39557)]) #@55 Return the process communicating with the MPD server. (defalias 'libmpdel--process #[0 "\301!\207" [libmpdel--connection tq-process] 2 (#$ . 39723)]) #@59 Return the buffer associated with the connection process. (defalias 'libmpdel--process-buffer #[0 "\300\301 !\207" [process-buffer libmpdel--process] 2 (#$ . 39880)]) #@69 Return non-nil if the MPD server address is a local family address. (defalias 'libmpdel--connection-address-local-p #[0 "\301H\302=\207" [libmpdel-hostname 0 47] 2 (#$ . 40053)]) (byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put libmpdel--connection-address-local-p speed -1 put byte-optimizer byte-compile-inline-expand] 5) #@48 Open and return connection to the MPD process. (defalias 'libmpdel--open-stream #[0 "\303H\304=\204\305\306\307\310\311\312\313 \314\n\315\316&\f\207\305\306\307\310\311\314\317\313&\207" [libmpdel-hostname libmpdel-port libmpdel-family 0 47 make-network-process :name "mpd" :buffer "*mpd*" :host :service :family :type nil local] 13 (#$ . 40401)]) (byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put libmpdel--open-stream speed -1 put byte-optimizer byte-compile-inline-expand] 5) #@46 Create a new connection with the MPD server. (defalias 'libmpdel--connect #[0 "\306 \203 \307\310!\210r\311\312!q\210\313\300!\210\314\211\315 \210*\316\n\317H\320=\2046\321\322\323\324\312\325\n\326 \327\f\330\331&\f\202A\321\322\323\324\312\327\332\326\n&!\333\334 \335\211#\210\336\334 \331\"\210\337&\340 \331'\331\341%\210\342 \210\343\344\345\"\207" [buffer-read-only inhibit-read-only libmpdel-hostname libmpdel-port libmpdel-family libmpdel--connection libmpdel-connected-p user-error "A connection is already opened" get-buffer-create "*mpd*" make-local-variable t erase-buffer tq-create 0 47 make-network-process :name "mpd" :buffer :host :service :family :type nil local set-process-coding-system libmpdel--process utf-8-unix set-process-query-on-exit-flag (("welcome" libmpdel--msghandler-ignore nil)) tq-queue-add libmpdel--message-filter libmpdel-refresh-status libmpdel--raw-send-command-with-handler "idle" libmpdel--msghandler-idle libmpdel--msghandlers libmpdel--response-regexp] 15 (#$ . 40909)]) #@179 Connect to MPD server defined in PROFILE. Interactively, let the user choose PROFILE from `libmpdel-profiles'. If a connection already exists, terminate it first. (fn PROFILE) (defalias 'libmpdel-connect-profile #[257 "\211A@\211AA@\211AAA@\303 \203\304 \210\305 +\207" [libmpdel-hostname libmpdel-port libmpdel-family libmpdel-connected-p libmpdel-disconnect libmpdel--connect] 2 (#$ . 41941) (byte-code "\300 C\207" [libmpdel--select-profile] 1)]) #@67 Send COMMAND, a string, to the server and log that. (fn COMMAND) (defalias 'libmpdel--raw-send-command #[257 "\302\303\"\210\304\305\306\" \307\310%\207" [libmpdel--connection libmpdel--response-regexp libmpdel--log "->" tq-enqueue format "%s\n" nil libmpdel--message-filter] 7 (#$ . 42404)]) #@256 Send COMMAND to MPD server and set HANDLER for the response. If HANDLER is nil, response will be ignored. If command is a string, send that. Otherwise, it must be a list that will be passed to `format' before being sent. (fn COMMAND &optional HANDLER) (defalias 'libmpdel--raw-send-command-with-handler #[513 "<\203\f\301\302\"\202 \303\206\304pEC\"\305!\207" [libmpdel--msghandlers apply format append libmpdel--msghandler-ignore libmpdel--raw-send-command] 8 (#$ . 42708)]) #@163 Take care of the MESSAGE sent by the server. The first parameter is ignored. MESSAGE contains a string representing the answer from the server. (fn _ MESSAGE) (defalias 'libmpdel--message-filter #[514 "\3011^\211A\242\211G\302U\203\211A\262\242\202 \303\304\305GD\"\211A\262\242\242\306\307\310#\311\"\210\312\302O\313\230\203E\306\314\315\"\266\204\202\\r\316!\203P\211\202Qpq\210\317!!)\266\2040\207\306\315\"\207" [libmpdel--msghandlers (debug error) 3 signal wrong-number-of-arguments (command handler buffer) libmpdel--log format "\"%s\" (as answer to \"%s\")" "<-" 0 "ACK" "ACK message" "ko" buffer-live-p libmpdel--extract-data] 11 (#$ . 43206)]) #@137 Add STRING at end of *mpd* buffer. TYPE-STRING is a two-letter string classifying the kind of message to log. (fn STRING TYPE-STRING) (defalias 'libmpdel--log #[514 "r\301 q\210\302`\303\304 !U\212\303\304 !b\210\305c\210\306\307\310 $c\210\303\304 !`\311\223\210)\211\2054\303\304 !b)\266\202)\207" [inhibit-read-only libmpdel--process-buffer t process-mark libmpdel--process "-------------------------\n" format "%s [%s] %s\n" time-stamp-string nil] 9 (#$ . 43896)]) #@129 Handler for the response DATA to the "idle" command. This handler is responsible for sending another "idle" command. (fn DATA) (defalias 'libmpdel--msghandler-idle #[257 "\211\203\300 \210\301\302\303\"\210\304\305\"\207" [libmpdel-refresh-status libmpdel--raw-send-command-with-handler "idle" libmpdel--msghandler-idle mapc #[257 "\300A!\211\301\267\202\302\303!\207\302\304!\207\305\207" [intern #s(hash-table size 2 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (playlist 10 stored_playlist 14)) run-hooks libmpdel-current-playlist-changed-hook libmpdel-stored-playlist-changed-hook nil] 4 "\n\n(fn CHANGED-SUBSYSTEM)"]] 4 (#$ . 44380)]) #@67 Handler for the response DATA to the "status" command. (fn DATA) (defalias 'libmpdel--msghandler-status #[257 "\211\211\203T\211@\211@A\300\267\266\202M\301!\266\202M\302!\266\202M\303!\266\202M\304!\266\202M\305!\266\202M\306!\266\202M\307!\266\202M\266A\266\202\202\210\310\311\312\313$?\205b\302\314!\207" [#s(hash-table size 7 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (state 19 songid 27 playlistlength 35 volume 43 random 51 repeat 59 single 67)) libmpdel--set-play-state libmpdel--set-current-song libmpdel--set-playlist-length libmpdel--set-volume libmpdel--set-random libmpdel--set-repeat libmpdel--set-single cl-member songid :key car nil] 7 (#$ . 45052)]) #@53 No handler was associated to last response. (fn _) (defalias 'libmpdel--msghandler-ignore #[257 "\300\207" [nil] 2 (#$ . 45780)]) #@31 Return MESSAGE. (fn MESSAGE) (defalias 'libmpdel--extract-data #[257 "\301 \302\303\"\216\304\305\306\"r\211q\210\302\307\"\216c\210\310 \311eb\210\312\306#\2035\313\314\315!!\314\316!BB\262\202\317!\266\202*\262)\207" [libmpdel--msgfield-regexp match-data make-closure #[0 "\301\300\302\"\207" [V0 set-match-data evaporate] 3] generate-new-buffer " *temp*" t #[0 "\301\300!\205 \302\300!\207" [V0 buffer-name kill-buffer] 2] point-at-bol nil re-search-forward intern match-string 1 2 reverse] 9 (#$ . 45917)]) #@71 Compare the contents of STR1 and STR2, ignoring case. (fn STR1 STR2) (defalias 'libmpdel--string<-ignore-case #[514 "\300\301\211\301\211\302&\211\302=\206\211\303W\207" [compare-strings nil t 0] 10 (#$ . 46448)]) #@411 Generate code to set and get state for NAME. Name is a symbol (e.g., `volume' or `play-state') naming the state to generate code for. VALUE-DESC is a string describing the kind of value accepted for this state. SET-BODY is a list of forms to put in the generated setter function. During execution of SET-BODY, a variable NEW-VALUE is bound containing the value to set. (fn NAME VALUE-DESC &rest SET-BODY) (defalias 'libmpdel--define-state '(macro . #[642 "\300\301\302\303\304\"!\305\303\306#F\307\302\303\310\"!\311\303\312  #BBBB\307\302\303\313 \"!\305\303\314\n\n#\302\303\304\f\"!\257F\207" [progn defvar intern format "libmpdel--%s" nil "Current %s of MPD server.\n%s" defun "libmpdel--set-%s" (new-value) "Save NEW-VALUE as current %s.\n%s" "libmpdel-%s" "Return current value of %s.\n%s"] 14 (#$ . 46675)])) (byte-code "\300\301\302\303#\300\207" [function-put libmpdel--define-state lisp-indent-function 1] 4) #@71 Current play-state of MPD server. Value is `play', `pause' or `stop'. (defvar libmpdel--play-state nil (#$ . 47622)) #@91 Save NEW-VALUE as current play-state. Value is `play', `pause' or `stop'. (fn NEW-VALUE) (defalias 'libmpdel--set-play-state #[257 "\301!\211\232?\205\302\303!\207" [libmpdel--play-state intern run-hooks libmpdel-player-changed-hook] 5 (#$ . 47745)]) #@73 Return current value of play-state. Value is `play', `pause' or `stop'. (defalias 'libmpdel-play-state #[0 "\207" [libmpdel--play-state] 1 (#$ . 48010)]) #@53 Return non-nil if player is playing, nil otherwise. (defalias 'libmpdel-playing-p #[0 "\300 \301=\207" [libmpdel-play-state play] 2 (#$ . 48171)]) #@52 Return non-nil if player is paused, nil otherwise. (defalias 'libmpdel-paused-p #[0 "\300 \301=\207" [libmpdel-play-state pause] 2 (#$ . 48324)]) #@53 Return non-nil if player is stopped, nil otherwise. (defalias 'libmpdel-stopped-p #[0 "\300 \301=\207" [libmpdel-play-state stop] 2 (#$ . 48476)]) #@83 Current current-song of MPD server. An entity representing currently played song. (defvar libmpdel--current-song nil (#$ . 48629)) #@103 Save NEW-VALUE as current current-song. An entity representing currently played song. (fn NEW-VALUE) (defalias 'libmpdel--set-current-song #[257 "\300!\205\n\301\302\303\"\207" [libmpdel--new-current-song-p libmpdel-send-command "currentsong" #[257 "\211\205\301!\302\303!\207" [libmpdel--current-song libmpdel--create-song-from-data run-hooks libmpdel-current-song-changed-hook] 3 "\n\n(fn DATA)"]] 4 (#$ . 48767)]) #@85 Return current value of current-song. An entity representing currently played song. (defalias 'libmpdel-current-song #[0 "\207" [libmpdel--current-song] 1 (#$ . 49197)]) #@80 Return non-nil if SONG-ID differs from `libmpdel--current-song'. (fn SONG-ID) (defalias 'libmpdel--new-current-song-p #[257 "\205\301!\232?\207" [libmpdel--current-song libmpdel-song-id] 4 (#$ . 49374)]) #@77 Current playlist-length of MPD server. Number of songs in current playlist. (defvar libmpdel--playlist-length nil (#$ . 49591)) #@97 Save NEW-VALUE as current playlist-length. Number of songs in current playlist. (fn NEW-VALUE) (defalias 'libmpdel--set-playlist-length #[257 "\301!\211\207" [libmpdel--playlist-length string-to-number] 3 (#$ . 49725)]) #@79 Return current value of playlist-length. Number of songs in current playlist. (defalias 'libmpdel-playlist-length #[0 "\207" [libmpdel--playlist-length] 1 (#$ . 49954)]) #@90 Current volume of MPD server. Value is a string representing a number between 0 and 100. (defvar libmpdel--volume nil (#$ . 50131)) #@110 Save NEW-VALUE as current volume. Value is a string representing a number between 0 and 100. (fn NEW-VALUE) (defalias 'libmpdel--set-volume #[257 "\211\211\207" [libmpdel--volume] 3 (#$ . 50270)]) #@92 Return current value of volume. Value is a string representing a number between 0 and 100. (defalias 'libmpdel-volume #[0 "\207" [libmpdel--volume] 1 (#$ . 50475)]) #@92 Current random of MPD server. Boolean indicating if songs are played randomly or in order. (defvar libmpdel--random nil (#$ . 50647)) #@112 Save NEW-VALUE as current random. Boolean indicating if songs are played randomly or in order. (fn NEW-VALUE) (defalias 'libmpdel--set-random #[257 "\211\301\230\211\207" [libmpdel--random "1"] 3 (#$ . 50788)]) #@94 Return current value of random. Boolean indicating if songs are played randomly or in order. (defalias 'libmpdel-random #[0 "\207" [libmpdel--random] 1 (#$ . 51007)]) #@105 Current repeat of MPD server. Boolean indicating if current playlist or song is repeated after it ends. (defvar libmpdel--repeat nil (#$ . 51182)) #@125 Save NEW-VALUE as current repeat. Boolean indicating if current playlist or song is repeated after it ends. (fn NEW-VALUE) (defalias 'libmpdel--set-repeat #[257 "\211\301\230\211\207" [libmpdel--repeat "1"] 3 (#$ . 51336)]) #@107 Return current value of repeat. Boolean indicating if current playlist or song is repeated after it ends. (defalias 'libmpdel-repeat #[0 "\207" [libmpdel--repeat] 1 (#$ . 51569)]) #@112 Current single of MPD server. Symbol indicating if current song is repeated `forever', only `once' or `never'. (defvar libmpdel--single nil (#$ . 51757)) #@132 Save NEW-VALUE as current single. Symbol indicating if current song is repeated `forever', only `once' or `never'. (fn NEW-VALUE) (defalias 'libmpdel--set-single #[257 "\211\301\230\203\n\302\202\211\303\230\203\304\202\305\211\207" [libmpdel--single "oneshot" once "1" forever never] 3 (#$ . 51918)]) #@114 Return current value of single. Symbol indicating if current song is repeated `forever', only `once' or `never'. (defalias 'libmpdel-single #[0 "\207" [libmpdel--single] 1 (#$ . 52236)]) #@69 Return a string representing TIME, a number in a string. (fn TIME) (defalias 'libmpdel-time-to-string #[257 "\211\204\300\207\301!\302\303\"Z\303\245\304\305\306!\306!#\207" ["0" string-to-number mod 60 format "%02d:%02d" truncate] 9 (#$ . 52430)]) #@350 PROMPT user to select one entity among ENTITIES. Return the selected entity. Transform each entity to a string with TRANSFORMER, `libmpdel-entity-name' if nil. The user is allowed to exit by typing a string not matching any entity. In this case, the user must confirm and the typed string is returned. (fn PROMPT ENTITIES &optional TRANSFORMER) (defalias 'libmpdel-completing-read #[770 "\211\206\300\301\302\303\304G$\305\306\307\"\"\310\306\311\"#\210\312\313\314$\315#\207" [libmpdel-entity-name make-hash-table :test equal :size mapcar make-closure #[257 "\300!\207" [V0] 3 "\n\n(fn ENTITY)"] cl-mapcar #[514 "\301\300#\207" [V0 puthash] 6 "\n\n(fn ENTITY ENTITY-STRING)"] completing-read nil confirm gethash] 11 (#$ . 52695)]) #@192 Call FUNCTION after prompting for an element of ENTITY. Pass PROMPT, the elements of ENTITY and TRANSFORMER to `libmpdel-completing-read'. (fn FUNCTION PROMPT ENTITY &optional TRANSFORMER) (defalias 'libmpdel-completing-read-entity #[1027 "\300\301\302$\"\207" [libmpdel-list make-closure #[257 "\300\303\301\302#!\207" [V0 V1 V2 libmpdel-completing-read] 6 "\n\n(fn ENTITIES)"]] 11 (#$ . 53457)]) #@313 Pass a stored playlist as parameter to FUNCTION. The user is asked to choose for a stored playlist first. The user is allowed to enter a name for a non-existing stored playlist. In this case, the user must confirm and the stored playlist is created before being passed as parameter to FUNCTION. (fn FUNCTION) (defalias 'libmpdel-funcall-on-stored-playlist #[257 "\300\301\302\"\303\304#\207" [libmpdel-completing-read-entity make-closure #[257 "\211;\203\f\301\302\"\202 \211\300!\207" [V0 record libmpdel-stored-playlist] 4 "\n\n(fn STORED-PLAYLIST)"] "Stored playlist: " stored-playlists] 5 (#$ . 53872)]) #@95 Add ENTITY to a current playlist. ENTITY can also be a list of entities to add. (fn ENTITY) (defalias 'libmpdel-current-playlist-add #[257 "\300\301\"\207" [libmpdel-playlist-add current-playlist] 4 (#$ . 54494)]) #@108 Replace current playlist with ENTITY. ENTITY can also be a list of entities to replace with. (fn ENTITY) (defalias 'libmpdel-current-playlist-replace #[257 "\300\301\"\207" [libmpdel-playlist-replace current-playlist] 4 (#$ . 54718)]) #@151 Add ENTITY to a stored playlist. The user is asked to choose for a stored playlist first. ENTITY can also be a list of entities to add. (fn ENTITY) (defalias 'libmpdel-stored-playlist-add #[257 "\300\301\302\"!\207" [libmpdel-funcall-on-stored-playlist apply-partially libmpdel-playlist-add] 5 (#$ . 54963)]) #@166 Replace a stored playlist with ENTITY. The user is asked to choose for a stored playlist first. ENTITY can also be a list of entities to replace with. (fn ENTITY) (defalias 'libmpdel-stored-playlist-replace #[257 "\300\301\302\"!\207" [libmpdel-funcall-on-stored-playlist apply-partially libmpdel-playlist-replace] 5 (#$ . 55282)]) #@173 Insert ENTITY after currently-played song and play it. ENTITY can also be a list of entities in which case all entities are added and the first one is played. (fn ENTITY) (defalias 'libmpdel-current-playlist-insert #[257 "\300\301\"\207" [libmpdel-list-songs #[257 "\300\301\302\"\303\"\207" [libmpdel-send-commands mapcar #[257 "\300\301\302!\"\207" [format "addid %S" libmpdel-song-file] 5 "\n\n(fn SONG)"] #[257 "\300\301\"\302 \203 \303\202\304\305\300\306\307\"\310!\"\306\311\"\"\207" [mapcar #[257 "\211A\207" [] 2 "\n\n(fn SONG-DATA)"] libmpdel-current-song "-1" "0" libmpdel-send-commands make-closure #[257 "\301\302\300#\207" [V0 format "moveid %s %s"] 5 "\n\n(fn SONG-ID)"] reverse #[257 "\301\302\300@D!\207" [V0 libmpdel-send-command "playid %s"] 4 "\n\n(fn _)"]] 8 "\n\n(fn DATA)"]] 5 "\n\n(fn SONGS)"]] 4 (#$ . 55624)]) #@201 Apply MAPFN to each element of LIST and pass result to CALLBACK. MAPFN is a function taking 2 arguments: the element to map and a callback to call when the mapping is done. (fn LIST MAPFN CALLBACK) (defalias 'libmpdel-async-mapcar #[771 "\204\211\300!\207@\301\302$\"\207" [nil make-closure #[257 "\303\300A\301\304\305\302##\207" [V0 V1 V2 libmpdel-async-mapcar make-closure #[257 "\300\301B!\207" [V0 V1] 4 "\n\n(fn LATTER-ELEMENTS)"]] 8 "\n\n(fn FIRST-MAPPED)"]] 10 (#$ . 56479)]) #@224 Apply MAPFN to each element of LIST. Concatenate the results and pass that to CALLBACK. MAPFN is a function taking 2 arguments: the element to map and a callback to call when the mapping is done. (fn LIST MAPFN CALLBACK) (defalias 'libmpdel-async-mapcan #[771 "\300\301\302\"#\207" [libmpdel-async-mapcar make-closure #[257 "\300\301\302\303#!\207" [V0 apply cl-concatenate list] 6 "\n\n(fn GROUPS)"]] 9 (#$ . 56986)]) #@68 Return an element of `libmpdel-profiles' matching NAME. (fn NAME) (defalias 'libmpdel--get-profile-from-name #[257 "\301\302\303\304\305&\207" [libmpdel-profiles cl-find :test string= :key car] 8 (#$ . 57417)]) #@75 Ask the user to select a profile among `libmpdel-profiles' and return it. (defalias 'libmpdel--select-profile #[0 ":\204 \301\302!\210G\303U\203\304\305!\210@\207\306\307\"\310\311\312\313$\314!\207" [libmpdel-profiles user-error "Add profiles to `libmpdel-profiles'" 1 message "Only 1 profile defined in `libmpdel-profiles'" mapcar car completing-read "Choose an MPD profile" nil t libmpdel--get-profile-from-name] 6 (#$ . 57638)]) #@56 Return non-nil if there is a connection to MPD server. (defalias 'libmpdel-connected-p #[0 "\205\301\302 !\207" [libmpdel--connection process-live-p libmpdel--process] 2 (#$ . 58086)]) #@60 Make sure there is an active connection to the MPD server. (defalias 'libmpdel-ensure-connection #[0 "\300 ?\205\301 \207" [libmpdel-connected-p libmpdel--connect] 1 (#$ . 58280)]) #@37 Close connection to the MPD server. (defalias 'libmpdel-disconnect #[0 "\301 \204 \302\303!\210\304!\210\305\211\207" [libmpdel--connection libmpdel-connected-p user-error "There is no connection to MPD" tq-close nil] 2 (#$ . 58469)]) #@129 Send COMMAND to server and register HANDLER for the answer. If HANDLER is nil, ignore response. (fn COMMAND &optional HANDLER) (defalias 'libmpdel-send-command #[513 "\301 \210\302!@\303\234\304=\203\305\306!\210\307\"\207" [libmpdel--msghandlers libmpdel-ensure-connection last 1 libmpdel--msghandler-idle libmpdel--raw-send-command "noidle" libmpdel--raw-send-command-with-handler] 5 (#$ . 58714)]) #@102 Send several COMMANDS at once and execute HANDLER once with result. (fn COMMANDS &optional HANDLER) (defalias 'libmpdel-send-commands #[513 "\300\301\302\303\"r\211q\210\304\305\"\216\306c\210\307\310\"\210\311c\210\312ed\"*\262\"\207" [libmpdel-send-command generate-new-buffer " *temp*" t make-closure #[0 "\301\300!\205 \302\300!\207" [V0 buffer-name kill-buffer] 2] "command_list_begin\n" mapc #[257 "\211\300\261\207" ["\n"] 3 "\n\n(fn COMMAND)"] "command_list_end" buffer-substring-no-properties] 7 (#$ . 59128)]) #@51 Collect DATA entries matching KEY. (fn DATA KEY) (defalias 'libmpdel-entries #[514 "\300\301\302\303\304\"\305\306$\"\207" [mapcar cdr cl-remove-if-not apply-partially eq :key car] 9 (#$ . 59661)]) #@60 Sort and collect DATA entries matching KEY. (fn DATA KEY) (defalias 'libmpdel-sorted-entries #[514 "\300\301\"\302\"\207" [sort libmpdel-entries libmpdel--string<-ignore-case] 6 (#$ . 59868)]) #@58 Find repeating fields in DATA and group them. (fn DATA) (defalias 'libmpdel-group-data #[257 "\211\205%\211@@\300C\300C\301\302\303$\"\210\304\242!\242B\240\210\304\242!\266\203\207" [nil mapc make-closure #[257 "\211@\300=\203\302\242\203\301\303\302\242!\301\242B\240\210\302\304\240\210\302\302\242B\240\207" [V0 V1 V2 reverse nil] 4 "\n\n(fn KEY-VALUE)"] reverse] 10 (#$ . 60070)]) (byte-code "\300\301\302\301\303\304#\305#\210\306\301\304\307\304\310%\207" [defalias libmpdel-dired cl-generic-define (entity) nil "Open `dired' on ENTITY.\n\n(fn ENTITY)" cl-generic-define-method ((song libmpdel-song)) #[257 "\301\302!\210\303\304\305\306!\"\"\207" [libmpdel-music-directory require dired-x dired-jump t expand-file-name libmpdel-song-file] 6 "Open `dired' on SONG.\n\n(fn SONG)"]] 6) #@88 Return non-nil if ENTITY1 and ENTITY2 represent the same entity. (fn ENTITY1 ENTITY2) (defalias 'libmpdel-equal #[514 "\300!\300!\232\207" [libmpdel-entity-id] 5 (#$ . 60884)]) (byte-code "\300\301\302\301\303\304#\305#\210\306\301\304\307\304\310%\210\306\301\304\311\304\312%\210\306\301\304\313\304\314%\210\306\301\304\315\304\316%\210\300\317\302\317\320\304#\321#\210\306\317\304\320\304\322%\210\306\317\304\323\304\324%\207" [defalias libmpdel-entity-to-criteria cl-generic-define (entity) nil "Return search query matching all songs from ENTITY.\n\n(fn ENTITY)" cl-generic-define-method ((query string)) #[257 "\207" [] 2 "Return QUERY.\n\n(fn QUERY)"] ((artist libmpdel-artist)) #[257 "\300\301\302!\"\207" [format "artist %S" libmpdel-entity-name] 5 "Return search query matching all songs from ARTIST.\n\n(fn ARTIST)"] ((album libmpdel-album)) #[257 "\300\301\302\303!!\304!#\207" [format "%s album %S" libmpdel-entity-to-criteria libmpdel-artist libmpdel-entity-name] 6 "Return search query matching all songs from ALBUM.\n\n(fn ALBUM)"] ((song libmpdel-song)) #[257 "\300\301\302\303!!\304!#\207" [format "%s title %S" libmpdel-entity-to-criteria libmpdel-album libmpdel-entity-name] 6 "Return search query matching SONG.\n\n(fn SONG)"] libmpdel-list (entity function) "Call FUNCTION with all children of ENTITY as parameter.\n\n(fn ENTITY FUNCTION)" #[514 "\300\"\207" [libmpdel-list-songs] 5 "\n\n(fn ENTITY FUNCTION)"] ((_entity (eql artists)) function) #[514 "\300\301\302\303\"\"\207" [libmpdel-send-command "list artist" make-closure #[257 "\300\301\302\303\304\"\"!\207" [V0 mapcar #[257 "\300\301\"\207" [record libmpdel-artist] 4 "\n\n(fn ARTIST-NAME)"] libmpdel-sorted-entries Artist] 7 "\n\n(fn DATA)"]] 7 "Call FUNCTION with all artists as parameter.\n\n(fn ENTITY FUNCTION)"]] 6) #@31 An anonymous artist instance. (defvar libmpdel--unknown-artist (record 'libmpdel-artist "") (#$ . 62710)) (byte-code "\300\301\302\303\302\304%\210\300\301\302\305\302\306%\210\300\301\302\307\302\310%\210\311\312\313\312\314\302#\315#\210\300\312\302\314\302\316%\210\300\312\302\317\302\320%\210\300\312\302\321\302\322%\210\300\312\302\323\302\324%\210\300\312\302\325\302\326%\210\300\312\302\327\302\330%\210\300\312\302\331\302\332%\210\311\333\313\333\334\302#\335#\210\300\333\302\336\302\337%\210\300\333\302\340\302\341%\210\300\333\302\342\302\343%\210\300\333\302\344\302\345%\207" [cl-generic-define-method libmpdel-list nil ((_entity (eql albums)) function) #[514 "\300\301\302\303\"\"\207" [libmpdel-send-command "list album" make-closure #[257 "\300\301\302\303\304\"\"!\207" [V0 mapcar #[257 "\301\302#\207" [libmpdel--unknown-artist record libmpdel-album] 5 "\n\n(fn ALBUM-NAME)"] libmpdel-sorted-entries Album] 7 "\n\n(fn DATA)"]] 7 "Call FUNCTION with all albums as parameter.\n\n(fn ENTITY FUNCTION)"] ((_entity (eql stored-playlists)) function) #[514 "\300\301\302\303\"\"\207" [libmpdel-send-command "listplaylists" make-closure #[257 "\300\301\302\303\304\"\"!\207" [V0 mapcar #[257 "\300\301\"\207" [record libmpdel-stored-playlist] 4 "\n\n(fn PLAYLIST-NAME)"] libmpdel-sorted-entries playlist] 7 "\n\n(fn DATA)"]] 7 "Call FUNCTION with all stored playlists as parameter.\n\n(fn ENTITY FUNCTION)"] ((artist libmpdel-artist) function) #[514 "\300\301\302!D\303\304#\"\207" [libmpdel-send-command "list album %s" libmpdel-entity-to-criteria make-closure #[257 "\301\302\303\304\300\"\305\306\"\"!\207" [V0 V1 mapcar make-closure #[257 "\301\302\300#\207" [V0 record libmpdel-album] 5 "\n\n(fn ALBUM-NAME)"] libmpdel-sorted-entries Album] 7 "\n\n(fn DATA)"]] 8 "Call FUNCTION with all albums of ARTIST as parameter.\n\n(fn ARTIST FUNCTION)"] defalias libmpdel-list-songs cl-generic-define (entity function) "Call FUNCTION with all songs of ENTITY.\n\n(fn ENTITY FUNCTION)" #[514 "\300\301\302!D\303\304\"\"\207" [libmpdel-send-command "find %s" libmpdel-entity-to-criteria make-closure #[257 "\300\301!!\207" [V0 libmpdel--create-songs-from-data] 4 "\n\n(fn DATA)"]] 7 "\n\n(fn ENTITY FUNCTION)"] ((stored-playlist libmpdel-stored-playlist) function) #[514 "\300\301\302!D\303\304\"\"\207" [libmpdel-send-command "listplaylistinfo %S" libmpdel-entity-name make-closure #[257 "\300\301!!\207" [V0 libmpdel--create-songs-from-data] 4 "\n\n(fn DATA)"]] 7 "Call FUNCTION with all songs of STORED-PLAYLIST.\n\n(fn STORED-PLAYLIST FUNCTION)"] ((_ (eql current-playlist)) function) #[514 "\300\301\302\303\"\"\207" [libmpdel-send-command "playlistinfo" make-closure #[257 "\300\301!!\207" [V0 libmpdel--create-songs-from-data] 4 "\n\n(fn DATA)"]] 7 "Call FUNCTION with all songs of the current playlist.\n\n(fn _ FUNCTION)"] ((search-criteria libmpdel-search-criteria) function) #[514 "\301\302\303!>\204\304\305\306D\"\210\307H\303!>\204%\304\305\306D\"\210\310HE\311\312\"\"\207" [cl-struct-libmpdel-search-criteria-tags libmpdel-send-command "search %s %S" type-of signal wrong-type-argument libmpdel-search-criteria 1 2 make-closure #[257 "\300\301!!\207" [V0 libmpdel--create-songs-from-data] 4 "\n\n(fn DATA)"]] 9 "Call FUNCTION with all songs matching SEARCH-CRITERIA.\n\n(fn SEARCH-CRITERIA FUNCTION)"] ((filter libmpdel-filter) function) #[514 "\301\302\303!>\204\304\305\306D\"\210\307HD\310\311\"\"\207" [cl-struct-libmpdel-filter-tags libmpdel-send-command "search %S" type-of signal wrong-type-argument libmpdel-filter 1 make-closure #[257 "\300\301!!\207" [V0 libmpdel--create-songs-from-data] 4 "\n\n(fn DATA)"]] 8 "Call FUNCTION with all songs matching FILTER.\n\n(fn FILTER FUNCTION)"] ((song libmpdel-song) function) #[514 "\211C!\207" [] 4 "Call FUNCTION with SONG.\n\n(fn SONG FUNCTION)"] ((entities list) function) #[514 "\300\301#\207" [libmpdel-async-mapcan libmpdel-list-songs] 6 "Call FUNCTION with all songs in ENTITIES.\n\n(fn ENTITIES FUNCTION)"] libmpdel-playlist-add (entity playlist) "Add ENTITY to PLAYLIST.\nENTITY can also be a list of entities to add.\n\n(fn ENTITY PLAYLIST)" (entity (_ (eql current-playlist))) #[514 "\300!\301;\203\211\302\230\262\204\303D\202\304\305!D!\207" [libmpdel-entity-id libmpdel-send-command "" "addid %S" "findadd %s" libmpdel-entity-to-criteria] 7 "Add ENTITY to the current playlist.\n\n(fn ENTITY _)"] (entity (stored-playlist libmpdel-stored-playlist)) #[514 "\300\301\302!\303!E!\207" [libmpdel-send-command "searchaddpl %S %s" libmpdel-entity-name libmpdel-entity-to-criteria] 7 "Add ENTITY to STORED-PLAYLIST.\n\n(fn ENTITY STORED-PLAYLIST)"] ((stored-playlist libmpdel-stored-playlist) (_ (eql current-playlist))) #[514 "\300\301\302!D!\207" [libmpdel-send-command "load %S" libmpdel-entity-name] 6 "Add content of STORED-PLAYLIST to the current playlist.\n\n(fn STORED-PLAYLIST _)"] ((entities list) playlist) #[514 "\300\301\302\"\"\207" [mapcar make-closure #[257 "\301\300\"\207" [V0 libmpdel-playlist-add] 4 "\n\n(fn ENTITY)"]] 6 "Add all ENTITIES to PLAYLIST.\n\n(fn ENTITIES PLAYLIST)"]] 6) #@60 Clear PLAYLIST and add ENTITY to it. (fn ENTITY PLAYLIST) (defalias 'libmpdel-playlist-replace #[514 "\300!\210\301\"\207" [libmpdel-playlist-clear libmpdel-playlist-add] 5 (#$ . 67868)]) (byte-code "\300\301\302\301\303\304#\305#\210\306\301\304\307\304\310%\210\306\301\304\311\304\312%\210\300\313\302\313\314\304#\315#\210\306\313\304\316\304\317%\210\306\313\304\320\304\321%\207" [defalias libmpdel-playlist-clear cl-generic-define (playlist) nil "Remove all songs from PLAYLIST.\n\n(fn PLAYLIST)" cl-generic-define-method ((_ (eql current-playlist))) #[257 "\300\301!\207" [libmpdel-send-command "clear"] 3 "Remove all songs from the current playlist.\n\n(fn _)"] ((stored-playlist libmpdel-stored-playlist)) #[257 "\300\301\302!D!\207" [libmpdel-send-command "playlistclear %S" libmpdel-entity-name] 5 "Remove all songs from STORED-PLAYLIST.\n\n(fn STORED-PLAYLIST)"] libmpdel-playlist-delete (songs playlist) "Remove SONGS from PLAYLIST.\n\n(fn SONGS PLAYLIST)" (songs (_ (eql current-playlist))) #[514 "\300\301\302\"!\207" [libmpdel-send-commands mapcar #[257 "\300\301\302!\"\207" [format "deleteid %s" libmpdel-song-id] 5 "\n\n(fn SONG)"]] 6 "Remove SONGS from the current playlist.\n\n(fn SONGS _)"] (songs (stored-playlist libmpdel-stored-playlist)) #[514 "\300\301\302#\"\207" [libmpdel-list make-closure #[257 "\302\303\304\305\"\300\"\306\"\307\303\304\310\301\"\"!\207" [V0 V1 cl-sort mapcar make-closure #[257 "\301\300\302\303$\207" [V0 cl-position :test equal] 6 "\n\n(fn SONG)"] > libmpdel-send-commands #[257 "\301\302\303\300!#\207" [V0 format "playlistdelete %S %s" libmpdel-entity-name] 5 "\n\n(fn SONG-POSITION)"]] 7 "\n\n(fn ALL-PLAYLIST-SONGS)"]] 8 "Remove SONGS from STORED-PLAYLIST.\n\n(fn SONGS STORED-PLAYLIST)"]] 6) #@49 Remove STORED-PLAYLISTS. (fn STORED-PLAYLISTS) (defalias 'libmpdel-stored-playlists-delete #[257 "\300\301\302\"!\207" [libmpdel-send-commands mapcar #[257 "\300\301\302!\"\207" [format "rm %S" libmpdel-entity-name] 5 "\n\n(fn S)"]] 5 (#$ . 69639)]) #@48 Move up SONGS in current playlist. (fn SONGS) (defalias 'libmpdel-playlist-move-up #[257 "\300\301!\302\303\304$\304@!\305U?\205\306\307\310\"!\207" [cl-sort copy-sequence < :key libmpdel-song-position 0 libmpdel-send-commands mapcar #[257 "\300\301\302!\303!S#\207" [format "moveid %s %s" libmpdel-song-id libmpdel-song-position] 6 "\n\n(fn SONG)"]] 6 (#$ . 69898)]) #@50 Move down SONGS in current playlist. (fn SONGS) (defalias 'libmpdel-playlist-move-down #[257 "\301\302!\303\304\305$\305@!SU?\205\306\307\310\"!\207" [libmpdel--playlist-length cl-sort copy-sequence > :key libmpdel-song-position libmpdel-send-commands mapcar #[257 "\300\301\302!\303!T#\207" [format "moveid %s %s" libmpdel-song-id libmpdel-song-position] 6 "\n\n(fn SONG)"]] 6 (#$ . 70280)]) #@69 Save current playlist as new stored playlist named NAME. (fn NAME) (defalias 'libmpdel-playlist-save #[257 "\300\301D\302\303\"\"\207" [libmpdel-send-command "save %S" make-closure #[257 "\301\302\300\"\207" [V0 message "Current playlist saved to %S"] 4 "\n\n(fn DATA)"]] 6 (#$ . 70688) (byte-code "\300\301!C\207" [read-from-minibuffer "Enter a new playlist name: "] 2)]) #@36 Set volume to VOLUME. (fn VOLUME) (defalias 'libmpdel-playback-set-volume #[257 "\300\301D!\207" [libmpdel-send-command "setvol %s"] 4 (#$ . 71070) (byte-code "\300\301\302\303 \"!C\207" [read-string format "Current volume is %s. New volume [0-100]: " libmpdel-volume] 4)]) #@33 Play next song in the playlist. (defalias 'libmpdel-playback-next #[0 "\300\301!\207" [libmpdel-send-command "next"] 2 (#$ . 71352) nil]) #@37 Play previous song in the playlist. (defalias 'libmpdel-playback-previous #[0 "\300\301!\207" [libmpdel-send-command "previous"] 2 (#$ . 71496) nil]) #@16 Start playing. (defalias 'libmpdel-play #[0 "\300\301!\207" [libmpdel-send-command "play"] 2 (#$ . 71652) nil]) #@57 Stop playing. See also `libmpdel-playback-play-pause'. (defalias 'libmpdel-stop #[0 "\300\301!\207" [libmpdel-send-command "stop"] 2 (#$ . 71770) nil]) #@32 Start playing SONG. (fn SONG) (defalias 'libmpdel-play-song #[257 "\300!\211\203 \301\302D!\207\303!\207" [libmpdel-song-id libmpdel-send-command "playid %s" libmpdel-current-playlist-insert] 5 (#$ . 71929)]) #@67 Toggle between play and pause. See also `libmpdel-playback-stop'. (defalias 'libmpdel-playback-play-pause #[0 "\301\302\267\202\303\202\304\202\305\202\306!\207" [libmpdel--play-state libmpdel-send-command #s(hash-table size 3 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (play 7 pause 11 stop 15)) "pause 1" "pause 0" "play" nil] 3 (#$ . 72149) nil]) #@307 Seeks to the position TIME within the current song. TIME is a string indicating a number of seconds, fractions allowed. If prefixed by + or -, then the time is relative to the current playing position. If HANDLER is non-nil, execute it with no parameter when seek succeeds. (fn TIME &optional HANDLER) (defalias 'libmpdel-playback-seek #[513 "\300\301D\205\f\302\303\"\"\207" [libmpdel-send-command "seekcur %S" make-closure #[257 "\300 \207" [V0] 2 "\n\n(fn _)"]] 7 (#$ . 72536) (byte-code "\300\301!\302D\207" [read-string "New position (e.g., 67, -23, +12): " #[257 "\300\301!\207" [message "Seek done."] 3 "\n\n(fn _)"]] 2)]) #@30 Set playback mode to random. (defalias 'libmpdel-playback-set-random #[0 "\300\301!\207" [libmpdel-send-command ("random 1")] 2 (#$ . 73180) nil]) #@47 Set playback mode to sequential (not random). (defalias 'libmpdel-playback-unset-random #[0 "\300\301!\207" [libmpdel-send-command ("random 0")] 2 (#$ . 73333) nil]) #@30 Set playback mode to repeat. (defalias 'libmpdel-playback-set-repeat #[0 "\300\301!\207" [libmpdel-send-command ("repeat 1")] 2 (#$ . 73505) nil]) #@47 Set playback mode to sequential (not repeat). (defalias 'libmpdel-playback-unset-repeat #[0 "\300\301!\207" [libmpdel-send-command ("repeat 0")] 2 (#$ . 73658) nil]) #@81 Set playback single mode to forever. This will repeat the current song forever. (defalias 'libmpdel-playback-set-single-forever #[0 "\300\301!\207" [libmpdel-send-command ("single 1")] 2 (#$ . 73830) nil]) #@75 Set playback single mode to never. This will not repeat the current song. (defalias 'libmpdel-playback-set-single-never #[0 "\300\301!\207" [libmpdel-send-command ("single 0")] 2 (#$ . 74042) nil]) #@123 Set playback single mode to once. This will repeat the current song only once and then keep playing the current playlist. (defalias 'libmpdel-playback-set-single-once #[0 "\300\301!\207" [libmpdel-send-command ("single oneshot")] 2 (#$ . 74247) nil]) #@40 Ask the server for its current status. (defalias 'libmpdel-refresh-status #[0 "\300\301\302\"\207" [libmpdel-send-command "status" libmpdel--msghandler-status] 3 (#$ . 74504)]) #@269 Update the music database for URI, everything if nil. Updates the music database: find new files, remove deleted files, update modified files. URI is a particular directory or song/file to update. If you do not specify it, everything is updated. (fn &optional URI) (defalias 'libmpdel-database-update #[256 "\300\203 \301D\202\f\302!\207" [libmpdel-send-command "update %S" "update"] 4 (#$ . 74688) "i"]) (provide 'libmpdel)