;ELC
;;; Compiled by LTX@Xue-LingTaos-MacBook-Pro.local on Wed Mar 16 23:09:39 2011
;;; from file /Users/LTX/Projects/Emacs/emacs/lisp/mpc.el
;;; in Emacs version 24.0.50.1
;;; with all optimizations.

;;; This file contains utf-8 non-ASCII characters,
;;; and so cannot be loaded into Emacs 22 or earlier.
(and (boundp 'emacs-version)
     (< (aref emacs-version (1- (length emacs-version))) ?A)
     (string-lessp emacs-version "23")
     (error "`mpc.el' was compiled for Emacs 23 or later"))

;;;;;;;;;;;;;;;;;;;;;;;;;;;;


(custom-declare-group 'mpc nil "A Client for the Music Player Daemon." :prefix "mpc-" :group 'multimedia :group 'applications)
#@63 Tags for which a browser buffer should be created by default.
(custom-declare-variable 'mpc-browser-tags ''(Genre Artist|Composer|Performer Album|Playlist) '(#$ . 664) :type '(repeat symbol))
(defalias 'mpc-assq-all #[(key alist) "\306\211\n\306\211\203*\f@\211@
=\203#A\211	\235\204#	B\fA\211\204\f*	\237*\207" [val res alist elem #1=#:--cl-dolist-temp-- key nil] 3])
(defalias 'mpc-union #[(&rest lists) "\211A@\237\306\211\203<@	\n\306\211\2034@\211\f\235\204+
	BA\211\204+A\211\204*	\237)\207" [lists res list #1=#:--cl-dolist-temp-- seen elem nil #2=#:--cl-dolist-temp--] 4])
#@181 Return L1 after removing all elements not found in L2.
If SELECTFUN is non-nil, elements aren't compared directly, but instead
they are passed through SELECTFUN before comparison.
(defalias 'mpc-intersection #[(l1 l2 &optional selectfun) "\306	\203\307	\n\"\306\211\2031
@	\203 	\f!\202!\f\n\235\203*\fB
A\211\204*\237)\207" [res selectfun l2 l1 elem #1=#:--cl-dolist-temp-- nil mapcar] 3 (#$ . 1295)])
(defalias 'mpc-event-set-point #[(event) "\300\301\302\217\207" [nil (byte-code "\301\211:\203\3028:\203\302\202\3038\202\304 `\305\306F)!\207" [event posn-set-point 2 1 selected-window (0 . 0) 0] 6) ((error (byte-code "\300\301\302\217\207" [nil (mouse-set-point event) ((error))] 3)))] 3])
#@139 Compare strings STR1 and STR2.
Contrary to `compare-strings', this tries to get numbers sorted
numerically rather than lexicographically.
(defalias 'mpc-compare-strings #[(str1 str2 &optional ignore-case) "\306\307\211	\307\211\n&\211\250\204\202\321\310!S\211GY\204'\f	GY\203+\202\320\fH\311>	\fH\312>\211\203\256
\203\222\313\314\f#\210\315\316\"\313\314	\f#\210\315\316	\"\211GGW\203h\310![\202\216GGV\203x\310!\202\216\317!\317!W\203\213\310![\202\216\310!*\202\317\320\f!\204\247\fSH\321>\203\247\310!\202\317\310![\202\317
\203\316\320\f!\204\310\fSH\322>\203\310\310![\202\317\310!\202\317*))\207" [str1 str2 ignore-case res index digit2 compare-strings nil abs (48 49 50 51 52 53 54 55 56 57) (48 49 50 51 52 53 54 55 56 57) string-match "[0-9]+" match-string 0 string-to-number zerop (48 49 50 51 52 53 54 55 56 57) (48 49 50 51 52 53 54 55 56 57) digit1 num2 num1] 9 (#$ . 2027)])
#@40 Tell whether STR1 is a prefix of STR2.
(defalias 'mpc-string-prefix-p #[(str1 str2) "\302\303	G	\303\211&\304=\207" [str2 str1 compare-strings nil t] 7 (#$ . 2987)])
(byte-code "\301B\302\301!\204\303\301\304\305\306\"\"\210\307B\302\307!\204!\303\307\310\"\210\311\307!\207" [current-load-list mpc--find-memoize default-boundp set-default make-hash-table :test equal mpc-tag nil make-variable-buffer-local] 5)
#@155 Host (and port) where the Music Player Daemon is running.
The format is "HOST" or "HOST:PORT" where PORT defaults to 6600
and HOST defaults to localhost.
(custom-declare-variable 'mpc-host '(concat (or (getenv "MPD_HOST") "localhost") (if (getenv "MPD_PORT") (concat ":" (getenv "MPD_PORT")))) '(#$ . 3414) :type 'string)
(byte-code "\301B\302\301!\204\303\301\304\"\210\305B\306\307!\210\310\311\312\313#\210\310\311\314\315#\207" [current-load-list mpc-proc default-boundp set-default nil mpc--proc-end-re (lambda (#1=#:defconst-tmp-var) (defconst mpc--proc-end-re #1#)) "^\\(?:OK\\(?: MPD .*\\)?\\|ACK \\(.*\\)\\)\n" put mpc-proc-error error-conditions (mpc-proc-error error) error-message "MPD error"] 4)
(defalias 'mpc--debug #[(format &rest args) "\302\303!\205r\303q\210db\210\304\305\306\307\310\300	##\306\")\207" [format args get-buffer "*MPC-debug*" insert-before-markers replace-regexp-in-string "\n" "\n	" apply] 8])
(defalias 'mpc--proc-filter #[(proc string) "\306\307\"\210r\310	!q\210\311	\312\"\203&\313	!\210\314	\315\"\210\316\317 !\210\304\320!\202\200\212\321\322	!!\2060e\211b\210c\210\322	!`\315\223\210\323 \210\n`W\205\324\n\325#\205\326	\312\325#\210\327\225d=\204`\304\330!\210\331\332!`d|\210\311	\305\"\326	\305\315#\210\f\203|\333\334\f\"\210
 **)\207" [string proc start mpc--proc-end-re error callback mpc--debug "Receive \"%s\"" process-buffer process-get ready delete-process set-process-buffer nil pop-to-buffer clone-buffer "MPD output while idle!?" marker-position process-mark beginning-of-line re-search-backward t process-put 0 "Unexpected trailing text" match-string 1 signal mpc-proc-error] 5])
(defalias 'mpc--proc-connect #[(host) "\306\307\"\210r\310\311\312\"!q\210\313\314p!\211\203\315	!\204)\316 \210\317\320\321\"\203C\322\224T\313O\322\211\224O\320\323\n\"\204C\324\n!\325\211\326\327p\n$\330
!\203t\331
!''\203s\332	'\211A'@'\211A'@#\210\202Y)\333	\334p#\210\332	\335\336#\210\332	\337\313#\210\340(!\210\341	\342\"\210\343	\336\"\210\344	\313\"\210\313\345\346\217\210	-\207" [host proc port coding-system-for-read coding-system-for-write mpc-proc mpc--debug "Connecting to %s..." get-buffer-create format " *mpc-%s*" nil get-buffer-process delete-process erase-buffer 6600 string-match ":[^.]+\\'" 0 "[^[:digit:]]" string-to-number utf-8-unix open-network-stream "MPC" processp process-plist process-put mpc-proc-buffer mpd-commands callback ignore ready clrhash set-process-filter mpc--proc-filter set-process-sentinel set-process-query-on-exit-flag (byte-code "\302\303	!\210)\302\207" [inhibit-quit proc nil mpc-proc-sync] 2) ((quit (byte-code "\301\302\303!\207" [quit-flag t eval (ignore nil)] 2))) plist mpc--find-memoize] 6])
(defalias 'mpc--proc-quote-string #[(s) "\247\203	\301!\207\302\303\304#\305\306\"\203\307\307Q\207\207" [s number-to-string replace-regexp-in-string "[\"\\]" "\\\\\\&" string-match " " "\""] 4])
(byte-code "\301B\302\303!\207" [current-load-list mpc--proc-alist-to-alists-starters (lambda (#1=#:defconst-tmp-var) (defconst mpc--proc-alist-to-alists-starters #1#)) (file directory)] 2)
(defalias 'mpc--proc-alist-to-alists #[(alist) "\203\211@@)\n>\204\306\307\310C\"\210\211@@)\311\211\311\n\211\203O@\211\n@
=\203A\203?\237\fB\311\nBA\211\204**\203Y\237\fB\f\237+\207" [alist x mpc--proc-alist-to-alists-starters tmp alists starter signal cl-assertion-failed (or (null alist) (memq (caar alist) mpc--proc-alist-to-alists-starters)) nil pair #1=#:--cl-dolist-temp--] 4])
(defalias 'mpc-proc #[nil "\203\302\303!!\203\304!\305>\204\206\306	!\211\207" [mpc-proc mpc-host buffer-live-p process-buffer process-status (closed) mpc--proc-connect] 3])
#@101 Wait for MPC process until it is idle again.
Return the buffer in which the process is/was running.
(defalias 'mpc-proc-sync #[(&optional proc) "\204\301 \302\216\303\304\305\217)\207" [proc mpc-proc ((byte-code "\301\302\"\204\303\304!\210\305!\210\301\207" [proc process-get ready message "Killing hung process" delete-process] 3)) err (byte-code "\301\302\"\204
\303!\204\301\302\"\203\304!\207\305\306!\207" [proc process-get ready accept-process-output process-buffer error "No response from MPD"] 3) ((error (byte-code "\301\302\"\210\303@A\"\207" [err message "MPC: %s" signal] 3)))] 3 (#$ . 7175)])
#@344 Send command CMD to the MPD server.
If CALLBACK is nil, wait for the command to finish before returning,
otherwise return immediately and call CALLBACK with no argument
when the command terminates.
CMD can be a string which is passed as-is to MPD or a list of strings
which will be concatenated with proper quoting before passing them to MPD.
(defalias 'mpc-proc-cmd #[(cmd &optional callback) "\306 	\203B\307\310\"\204B\311\312!\311\313!\311\314!\211\307\301\"L\210	L\210\n
L\210\315\301\316\317\320\321\322\nD\322D\322\fD\323\257E#+\202\214\324!\210\315\310\325#\210r\326!q\210\327 \210\330\331
\"\210\332
;\203e
\202j\333\334
\335#\336P\"\210)	\203\203p	!\315\301\337J#*\202\214\315\301\340#\210\324!)\207" [proc callback #1=#:--cl-cmd-- #2=#:--cl-callback-- #3=#:--cl-old-- cmd mpc-proc process-get ready make-symbol "--old--" "--callback--" "--cmd--" process-put lambda (&rest --cl-rest--) apply #[(#4=#:G6700 #5=#:G6701 #6=#:G6702) "J \210\303	J\nJ\"\207" [#6# #4# #5# mpc-proc-cmd] 3] quote --cl-rest-- mpc-proc-sync nil process-buffer erase-buffer mpc--debug "Send \"%s\"" process-send-string mapconcat mpc--proc-quote-string " " "\n" #7=#:--cl-callback-- ignore #8=#:--cl-buf--] 12 (#$ . 7809)])
(defalias 'mpc-proc-cmd-list #[(cmds) "\301\302\303\304#\305Q\207" [cmds "command_list_begin\n" mapconcat #[(cmd) ";\203\207\301\302\303#\207" [cmd mapconcat mpc--proc-quote-string " "] 4] "\n" "\ncommand_list_end"] 5])
(defalias 'mpc-proc-cmd-list-ok #[nil "\300\301!\207" [error "Not implemented yet"] 2])
(defalias 'mpc-proc-buf-to-alist #[(&optional buf) "r\206pq\210\302eb\210\303\304\302\305#\203$\306\307\310!!\307\311!B	B\202
	\237*\207" [buf res nil re-search-forward "^\\([^:]+\\): \\(.*\\)\n" t intern match-string 1 2] 4])
(defalias 'mpc-proc-buf-to-alists #[(buf) "\301\302!!\207" [buf mpc--proc-alist-to-alists mpc-proc-buf-to-alist] 3])
(defalias 'mpc-proc-cmd-to-alist #[(cmd &optional callback) "\203'\304\305!\304\306!\211pL\210	L\210\307\310\311\312\313\314	D\314\nD\315\257E\"*\207\316\307!!\207" [callback #1=#:--cl-callback-- #2=#:--cl-buf-- cmd make-symbol "--buf--" "--callback--" mpc-proc-cmd lambda (&rest --cl-rest--) apply #[(#3=#:G6703 #4=#:G6704) "J\302p!	Jq\210!\207" [#3# #4# mpc-proc-buf-to-alist] 3] quote --cl-rest-- mpc-proc-buf-to-alist] 10])
(defalias 'mpc-proc-tag-string-to-sym #[(tag) "\301\302!!\207" [tag intern capitalize] 3])
(defalias 'mpc-proc-buffer #[(proc use &optional buffer) "\305\306\"\307\n	\"A\f\203\"\310!\203\"\f=\204\"\311\312\n\"\202@\f\203?\2033\307\n	\"\f\241\202@\313\306\n\fB	B#\202@*\207" [proc bufs use buf buffer process-get buffers assoc buffer-live-p error "Duplicate MPC buffer for %s" process-put] 5])
(byte-code "\301B\302\301!\204\303\301\304\"\210\304\207" [current-load-list mpc-status default-boundp set-default nil] 3)
#@173 Alist associating properties to the functions that care about them.
Each entry has the form (PROP . FUN) where PROP can be t to mean
to call FUN for any change whatsoever.
(defvar mpc-status-callbacks '((state . mpc--status-timers-refresh) (state . mpc--faster-toggle-refresh) (volume . mpc-volume-refresh) (file . mpc-songpointer-refresh) (song . mpc-songpointer-refresh) (updating_db . mpc-updated-db) (updating_db . mpc--status-timers-refresh) (t . mpc-current-refresh)) (#$ . 10690))
(defalias 'mpc--status-callback #[nil "\305 \211\204\306\307\300C\"\210	\232?\205C\n\310\211\203A\f@\211@\311=\2046@	\236A@\236A\232\204:A \210\fA\211\204*\310)\207" [mpc-status old-status mpc-status-callbacks pair #1=#:--cl-dolist-temp-- mpc-proc-buf-to-alist signal cl-assertion-failed nil t] 5])
(byte-code "\301B\302\301!\204\303\301\304\"\210\304\207" [current-load-list mpc--status-timer default-boundp set-default nil] 3)
(defalias 'mpc--status-timer-start #[nil "\301\302\303\"\210?\205\304\305\211\306#\211\207" [mpc--status-timer add-hook pre-command-hook mpc--status-timer-stop run-with-timer 1 mpc--status-timer-run] 4])
(defalias 'mpc--status-timer-stop #[nil "\205\301!\210\302\211\207" [mpc--status-timer cancel-timer nil] 2])
(defalias 'mpc--status-timer-run #[nil "\300\301 \302\"\205\f\303\304\305\217\207" [process-get mpc-proc ready err (byte-code "\300\301\302\217\207" [nil (byte-code "\301\302 )\207" [inhibit-quit nil mpc-status-refresh] 1) ((quit (byte-code "\301\302\303!\207" [quit-flag t eval (ignore nil)] 2)))] 3) ((error (message "MPC: %s" err)))] 3])
(byte-code "\301B\302\301!\204\303\301\304\"\210\304\207" [current-load-list mpc--status-idle-timer default-boundp set-default nil] 3)
(defalias 'mpc--status-idle-timer-start #[nil "\203\301!\210\302\303\304\305#\306 \207" [mpc--status-idle-timer cancel-timer run-with-idle-timer 1 t mpc--status-idle-timer-run mpc--status-timer-start] 4])
(defalias 'mpc--status-idle-timer-stop #[(&optional really) "\203\302!\210	?\205\303\304\305\306#\211\207" [mpc--status-idle-timer really cancel-timer run-with-idle-timer 10 t mpc--status-idle-timer-run] 4])
(defalias 'mpc--status-idle-timer-run #[nil "\300\301 \302\"\203
\303\304\305\217\210\306 \207" [process-get mpc-proc ready err (byte-code "\300\301\302\217\207" [nil (byte-code "\301\302 \210)\301\207" [inhibit-quit nil mpc-status-refresh] 1) ((quit (byte-code "\301\302\303!\207" [quit-flag t eval (ignore nil)] 2)))] 3) ((error (message "MPC: %s" err))) mpc--status-timer-start] 3])
#@63 Start/stop the timers according to whether a song is playing.
(defalias 'mpc--status-timers-refresh #[nil "\301\236A\302\235\204\303\236A\203\304 \207\305 \210\306 \207" [mpc-status state ("play") updating_db mpc--status-idle-timer-start mpc--status-idle-timer-stop mpc--status-timer-stop] 2 (#$ . 13256)])
#@23 Refresh `mpc-status'.
(defalias 'mpc-status-refresh #[(&optional callback) "\302\303!\211	L\210\304\305\306!\307\310\311\312\313D\314FE\")\207" [#1=#:--cl-cb-- callback make-symbol "--cb--" mpc-proc-cmd mpc-proc-cmd-list ("status" "currentsong") lambda (&rest --cl-rest--) apply #[(#2=#:G6705) "\301 \210J\205J \207" [#2# mpc--status-callback] 1] quote --cl-rest--] 9 (#$ . 13575)])
#@148 Stop the autorefresh of `mpc-status'.
This is normally used only when quitting MPC.
Any call to `mpc-status-refresh' may cause it to be restarted.
(defalias 'mpc-status-stop #[nil "\301\302\303!\210\304 \207" [mpc-status nil mpc--status-idle-timer-stop really mpc--status-timer-stop] 2 (#$ . 13971)])
(byte-code "\301B\302\301!\204\303\301\304\"\210\304\207" [current-load-list mpc--find-memoize-union-tags default-boundp set-default nil] 3)
(defalias 'mpc-cmd-flush #[(tag value) "\306	B\307\n#\210\307\211\203/
@\310!\311\310\f!\312\"\235\203(\306\f	B\307\n#\210
A\211\204*\307\207" [tag value mpc--find-memoize mpc--find-memoize-union-tags uniontag #1=#:--cl-dolist-temp-- puthash nil symbol-name split-string "|"] 5])
(defalias 'mpc-cmd-special-tag-p #[(tag) "\301>\206\f\302\303\304!\"\207" [tag (Playlist Search Directory) string-match "|" symbol-name] 4])
#@93 Return a list of all songs whose tag TAG has value VALUE.
The songs are returned as alists.
(defalias 'mpc-cmd-find #[(tag value) "\306	B\n\"\206\210\307	B\310=\203\"\311\312\313\217\314\315\316\f\"*\202\206\317=\2033\320\321\322\323	E!!\202\206\324=\203N\325\321\326	D!!\327\330\331\315\332
\"\"!)\202\206\333\334\335!\"\203\202\336\337\"\210\340\335!\314\211\224O!\340\335!\314\225\331O!%&\341\342&	\"\342%	\"\"*\202\206\311\343\344\217\n#\207" [tag value mpc--find-memoize i l pairs gethash puthash Playlist err (byte-code "\301\302\303D!!\207" [value mpc-proc-buf-to-alists mpc-proc-cmd "listplaylistinfo"] 4) ((mpc-proc-error)) 0 mapcar #[(s) "\302\303!B	BT\207" [i s Pos number-to-string] 3] Search mpc-proc-buf-to-alists mpc-proc-cmd "search" "any" Directory mpc-proc-buf-to-alist "listallinfo" mpc--proc-alist-to-alists delq nil #[(pair) "@\301=?\205	\207" [pair directory] 2] string-match "|" symbol-name add-to-list mpc--find-memoize-union-tags intern mpc-union mpc-cmd-find (byte-code "\302\303\304\305!	E!!\207" [tag value mpc-proc-buf-to-alists mpc-proc-cmd "find" symbol-name] 5) ((mpc-proc-error (byte-code "\305\306\"\210\307\nB\310\311\312!!\307\211\203+\f@\n\235\203$	B\fA\211\204*	)\207" [tag res value song #1=#:--cl-dolist-temp-- error "Unknown tag %s" nil mpc-proc-buf-to-alists mpc-proc-cmd "listallinfo"] 4))) tag2 tag1] 8 (#$ . 14859)])
(defalias 'mpc-cmd-list #[(tag &optional other-tag value) "\306=\203p\307\310\311\312!\"\n\203m	\313\211\211\203l\f@\314\306\"\315\n!\204<\n,B\316\317
\"\235\203d	B\202d\314\n,\"-\307\320\316\317-\"\".\307\320\316\317
\"\"/\321/.\"\203c	B+)\fA\211\204*	)\207\322=\203'\n\204\216\316\323\307\324\325\326\312!!\"\327\330\331\332 \322\"\"#\207\314\n,\"0\307\320\316\3170\"\"1\31321\313\2113\203\3403@\333!\2114\203\326\3344!\2114\203\32642@\232\204\32642B2)3A\2113\204\255*\3352!\211255\203\"\3335\211A5@!\2114\203\3344!\2114\20342\235\20445B542B2)\202\352)2+\207\336=\2031\337\340!\207\341\342\343!\"\203b\344\343!\345\211\224O!\344\343!\345\225\313O!67\346\3477\n,#\3476\n,#\"*\207\n\204k\313\350\351\217\207\313\352\353\217\207" [tag pls other-tag pl #1=#:--cl-dolist-temp-- plsongs Playlist mpc-assq-all playlist mpc-proc-cmd-to-alist "lsinfo" nil mpc-cmd-find mpc-cmd-special-tag-p apply append file mpc-intersection Directory nconc directory mpc-proc-buf-to-alist mpc-proc-cmd mapcar #[(dir) "\305\306\307#\203\310\305\306\307#P\202\311\312\313\314\315\316D!!\"	\317\211\203;\f@\320\306GT\307\n%\210\fA\211\204'*	*\207" [dir subdirs shortdir subdir #2=#:--cl-dolist-temp-- get-text-property 0 display "   " " â†ª " mpc-assq-all directory mpc-proc-buf-to-alist mpc-proc-cmd "lsinfo" nil put-text-property] 7] process-get mpc-proc file-name-directory directory-file-name delete-dups Search error "Not supported" string-match "|" symbol-name intern 0 mpc-union mpc-cmd-list (byte-code "\301\302\303\304\305!D!\"\207" [tag mapcar cdr mpc-proc-cmd-to-alist "list" symbol-name] 6) ((mpc-proc-error (byte-code "\301\302\"\210\303\304\305!\"\207" [tag error "MPD does not know this tag %s" mpc-assq-all mpc-proc-cmd-to-alist "listallinfo"] 4))) (byte-code "\303!\203\304\305\306\"\207\307\310\311\312\313	!\313!\nF!\"\207" [other-tag tag value mpc-cmd-special-tag-p signal mpc-proc-error "Not implemented" mapcar cdr mpc-proc-cmd-to-alist "list" symbol-name] 7) ((mpc-proc-error (byte-code "\304	\"\305\306\307\n\"\")\207" [other-tag value other-songs tag mpc-cmd-find mpc-assq-all apply append] 5))) value osongs ofiles plfiles other-songs files dirs #3=#:--cl-dolist-temp-- dir newdirs tag2 tag1] 9])
(defalias 'mpc-cmd-stop #[(&optional callback) "\301\302\"\207" [callback mpc-proc-cmd "stop"] 3])
(defalias 'mpc-cmd-clear #[(&optional callback) "\301\302\"\207" [callback mpc-proc-cmd "clear"] 3])
#@49 Pause or resume playback of the queue of songs.
(defalias 'mpc-cmd-pause #[(&optional arg callback) "\303\304!\211	L\210\305\306\nD\307\310\311\312\313D\314FE\"\210	?\205\315 )\207" [#1=#:--cl-cb-- callback arg make-symbol "--cb--" mpc-proc-cmd "pause" lambda (&rest --cl-rest--) apply #[(#2=#:G6706) "\301 \210J\205J \207" [#2# mpc-status-refresh] 1] quote --cl-rest-- mpc-proc-sync] 9 (#$ . 18803)])
(defalias 'mpc-cmd-status #[nil "\300\301!\207" [mpc-proc-cmd-to-alist "status"] 2])
(defalias 'mpc-cmd-play #[nil "\300\301!\210\302 \207" [mpc-proc-cmd "play" mpc-status-refresh] 2])
#@93 Add the songs FILES to PLAYLIST.
If PLAYLIST is t or nil or missing, use the main playlist.
(defalias 'mpc-cmd-add #[(files &optional playlist) "\302\303\304\305\"!!\210	;\205\306\307	\"\207" [files playlist mpc-proc-cmd mpc-proc-cmd-list mapcar #[(file) ";\203\n\302	E\207\303	D\207" [playlist file "playlistadd" "add"] 3] mpc-cmd-flush Playlist] 5 (#$ . 19404)])
#@115 Delete the songs at positions SONG-POSS from PLAYLIST.
If PLAYLIST is t or nil or missing, use the main playlist.
(defalias 'mpc-cmd-delete #[(song-poss &optional playlist) "\303\304\305\306\307\310\"\"!!\210	;\205\311\312	B\313\n#\207" [song-poss playlist mpc--find-memoize mpc-proc-cmd mpc-proc-cmd-list mapcar #[(song-pos) ";\203\n\302	E\207\303	D\207" [playlist song-pos "playlistdelete" "delete"] 3] sort > puthash Playlist nil] 7 (#$ . 19782)])
(defalias 'mpc-cmd-move #[(song-poss dest-pos &optional playlist) "\304\305\306\307\310\311	\312\"\"!!\210\n;\205\313\314\nB\315#)\207" [i song-poss playlist mpc--find-memoize 0 mpc-proc-cmd mpc-proc-cmd-list mapcar #[(song-pos) "	Y\203\n\n\\;\203\304	F\202\305	E	W\203$	S\nT\207" [song-pos dest-pos i playlist "playlistmove" "move"] 4] sort > puthash Playlist nil] 7])
(defalias 'mpc-cmd-update #[(&optional arg callback) "\303\304!\211	L\210\305\n\203\306\nD\202\306\307\310\311\312\313D\314FE\"\210	?\205'\315 )\207" [#1=#:--cl-cb-- callback arg make-symbol "--cb--" mpc-proc-cmd "update" lambda (&rest --cl-rest--) apply #[(#2=#:G6707) "\301 \210J\205J \207" [#2# mpc-status-refresh] 1] quote --cl-rest-- mpc-proc-sync] 9])
(defalias 'mpc-cmd-tagtypes #[nil "\300\301\302\303!\"\207" [mapcar cdr mpc-proc-cmd-to-alist "tagtypes"] 4])
#@36 Location of MPD's music directory.
(custom-declare-variable 'mpc-mpd-music-directory 'nil '(#$ . 21114) :type '(choice (const nil) directory))
#@47 Directory where MPC.el stores auxiliary data.
(custom-declare-variable 'mpc-data-directory '(if (and (not (file-directory-p "~/.mpc")) (file-directory-p "~/.emacs.d")) "~/.emacs.d/mpc" "~/.mpc") '(#$ . 21263) :type 'directory)
(defalias 'mpc-data-directory #[nil "\301!\204\n\302!\210\207" [mpc-data-directory file-directory-p make-directory] 2])
(defalias 'mpc-file-local-copy #[(file) "\204E\305\306	\"\203E\307\310\211\203(\n\204(\311@!\203!@A\211\204\312\313!r\fq\210\314\216\310\315\316\217\210eb\210\317\320!\203D\321\322!-\205V\311\323\n\"!\205V\323\n\"\207" [mpc-mpd-music-directory mpc-host file files #1=#:temp-buffer string-match "\\`localhost" ("~/.mpdconf" "/etc/mpd.conf") nil file-exists-p generate-new-buffer " *temp*" ((byte-code "\301!\203\n\302!\210\301\207" [#1# buffer-name kill-buffer] 2)) (insert-file-contents file) ((error)) re-search-forward "^music_directory[ 	]+\"\\([^\"]+\\)\"" match-string 1 expand-file-name] 5])
(defalias 'mpc-secs-to-time #[(secs) ";\203	\301!\302Y\203\303\304\305\245\306\245\306\246#\207\303\307\306\245\306\246#\207" [secs string-to-number 6000 format "%dh%02d" 3600 60 "%d:%02d"] 5])
(byte-code "\301B\302\301!\204\303\301\304\"\210\305B\306\307\310\311\"!\207" [current-load-list mpc-tempfiles default-boundp set-default nil mpc-tempfiles-reftable (lambda (#1=#:defconst-tmp-var) (defconst mpc-tempfiles-reftable #1#)) make-hash-table :weakness key] 4)
(defalias 'mpc-tempfiles-clean #[nil "\305\306\307	\"\210\n\305\211\203$\f@\211\235\204\305\310\311\217\210\fA\211\204*\211)\207" [live mpc-tempfiles-reftable mpc-tempfiles f #1=#:--cl-dolist-temp-- nil maphash #[(k v) "	B\211\207" [v live] 2] (delete-file f) ((error))] 4])
(defalias 'mpc-tempfiles-add #[(key file) "\304 \210\305	\n#\210	B\211\207" [key file mpc-tempfiles-reftable mpc-tempfiles mpc-tempfiles-clean puthash] 4])
#@74 Format the INFO according to FORMAT-SPEC, inserting the result at point.
(defalias 'mpc-format #[(format-spec info &optional hscroll) "\306`\n\203
\n[\202\306\307\310\311\312@#\203L@\306\224OA\fA!\210\313A!\\)\306\225\314\225\204C\f\315!\210T\202\316\317@\"B\320\316\314@\"!C\316\321@\"D\322\225EF\323=\203l\324C!\202O\325C\326\"\203\252\327F\236\206\330F\236A\310C\205\246\331C\332=\203\243\311\333\"\203\243\306\225\310O\202\245!)\202OC\334=\203\335\336F\236A!\211G\337PH\340\341\342\217\310I\343\344GD\345BB
B\204\337\310B\346\202B\204\355\347!I\202\350\351\310\352#J\353\354\310\211\211\355BJ&\210\347J!I\356IJ\"\210)\310B\357G\360I#,\202OCF\236A\211K\2049C\361=\2039\336F\236AK\343\344KD\362\363\344CD\364BBDE
BK)LB\205g\365B!B\357\346\360\366\367B\\E#6L\203u\313L!\202v\306MD\203\204\313D!\202\205\306NL\203,B\203\307NM\\BV\203\307\357\370\371BN\322#!\203\261L\306\322O\202\300L\306\371BNM\322$O\372P\373L#\202\311L0C\374>\203\377\3570\375\376\377\201O\201P\211\201Q\201R\310\201S\201T\201U\344CLDCDD\257D&0\fB\205$\357\346\360\366\367B\203 E\203 \371BNM#\202!\306\\E#0DQ!\210)B\204>\201VMN#\202G6c\210B\\.\202\201W	`\201X\201R\201Y\201Z
\237BE$-\207" [pos start hscroll col insert pred 0 #[(str) "\302Y\203		c\207	\211G[^\303Oc\207" [col str 0 nil] 3] nil string-match "%\\(?:%\\|\\(-\\)?\\([0-9]+\\)?{\\([[:alpha:]][[:alnum:]]*\\)\\(?:-\\([^}]+\\)\\)?}\\)" string-width 3 "%" match-string 2 intern 4 1 self symbol-name memql (Time Duration) time Time mpc-secs-to-time Duration ":" Cover file-name-directory file "cover.jpg" err (mpc-file-local-copy cover) ((error (message "MPC: %s" err))) equal quote ((file-name-directory (cdr (assq 'file info)))) " " create-image make-temp-file "mpc" ".jpg" call-process "convert" "-scale" mpc-tempfiles-add propertize display Title cdr assq (info) string-to-number space :align-to zerop - "â€¦" help-echo (Artist Album Composer) mouse-face highlight follow-link format-spec pre-text size tag post right-align info dir cover image tempfile val text textwidth postwidth t keymap mouse-2 lambda (interactive) (mpc-constraints-push 'noerror) mpc-constraints-restore + put-text-property mpc-pred (info) and] 18 (#$ . 23174)])
(byte-code "\302B\303\302!\204M\304\302\305 \306	!\210\307	\310\311#\210\307	\312\313#\210\307	\314\315#\210\307	\316\313#\210\307	\317\320#\210\307	\321\315#\210\307	\322\323#\210\307	\324\325#\210\307	\326\327#\210	)\"\210\302\207" [current-load-list map mpc-mode-map default-boundp set-default make-keymap suppress-keymap define-key "q" mpc-quit "
" mpc-select [(shift return)] mpc-select-toggle [mouse-2] [S-mouse-2] mpc-select-extend [C-mouse-2] [drag-mouse-2] mpc-drag-n-drop [follow-link] always "p" mpc-pause] 6)
#@18 Menu for MPC.el.
(defvar mpc-mode-menu nil (#$ . 26070))
(byte-code "\304\305\306\307$\210\310	B\311\310!\204o\312\310\313 \314\315\316\317\n\320\321&\210\314\322\323\324\n\320\325\326\327&\210\314\330\331\332\n\333\334\335\336&\210\314\337\340\341\n\333\342\335\343&\210\314\344\345\346\n\320\347\326\350&\210\314\351\352\353\n\320\354&\210\314\355\356\357\n$\210\314\360\361\362\n\335\363&\210\n)\"\210\364\365N\204}\366\364\365\367\370!#\210\371\300!\204\211\366\300\372\373#\210\300	B\311\300!\204\231\312\300\313 \"\210\300\365N\204\247\366\300\365\367\374!#\210\371\375!\204\263\366\375\372\373#\210\375	B\311\375!\204\303\312\375\376 \"\210\375\365N\204\321\366\375\365\367\377!#\210\366\303\372\373#\210\303	B\311\303!\204\357\312\303\201@\303\201A\"\210\"\210\303\365N\204\377\366\303\365\367\201B!#\210\366\373\201C\201A#\207" [mpc-mode-map current-load-list map mpc-mode-abbrev-table easy-menu-do-define mpc-mode-menu "Menu for MPC.el." ("MPC.el" ["Add new browser" mpc-tagbrowser] ["Update DB" mpc-update] ["Quit" mpc-quit]) mpc-tool-bar-map default-boundp set-default make-sparse-keymap tool-bar-local-item "mpc/prev" mpc-prev prev :enable (not (equal (cdr (assq 'state mpc-status)) "stop")) "mpc/rewind" mpc-rewind rewind (not (equal (cdr (assq 'state mpc-status)) "stop")) :button (:toggle and mpc--faster-toggle-timer (not mpc--faster-toggle-forward)) "mpc/pause" mpc-pause pause :visible (equal (cdr (assq 'state mpc-status)) "play") :help "Pause/play" "mpc/play" mpc-play play (not (equal (cdr (assq 'state mpc-status)) "play")) "Play/pause" "mpc/ffwd" mpc-ffwd ffwd (not (equal (cdr (assq 'state mpc-status)) "stop")) (:toggle and mpc--faster-toggle-timer mpc--faster-toggle-forward) "mpc/next" mpc-next next (not (equal (cdr (assq 'state mpc-status)) "stop")) "mpc/stop" mpc-stop stop "mpc/add" mpc-playlist-add add "Append to the playlist" mpc-mode-hook variable-documentation put purecopy "Hook run when entering MPC mode.\nNo problems result if this variable is not bound.\n`add-hook' automatically binds it.  (This is true for all hook variables.)" boundp definition-name mpc-mode "Keymap for `mpc-mode'." mpc-mode-syntax-table make-syntax-table "Syntax table for `mpc-mode'." define-abbrev-table nil "Abbrev table for `mpc-mode'." derived-mode-parent] 11)
#@159 Major mode for the features common to all buffers of MPC.

This mode runs the hook `mpc-mode-hook', as the final step
during initialization.

\{mpc-mode-map}
(defalias 'mpc-mode #[nil "\306\300!\210\307\310 \210\311\312\313!\210\314\f!\210
\315 \210\307\306\316!\210\306\317!\210\307)\320\321!\207" [delay-mode-hooks major-mode mode-name mpc-mode-map mpc-mode-syntax-table mpc-mode-abbrev-table make-local-variable t fundamental-mode mpc-mode "MPC" use-local-map set-syntax-table buffer-disable-undo tool-bar-map truncate-lines run-mode-hooks mpc-mode-hook local-abbrev-table buffer-read-only mpc-tool-bar-map] 2 (#$ . 28387) nil])
(byte-code "\302\303N\204\304\302\303\305\306!#\210\307\310!\204\304\310\311\312#\210\310B\313\310!\204*\314\310\315 \"\210\310\303N\2048\304\310\303\305\316!#\210\307\317!\204D\304\317\311\312#\210\317B\313\317!\204T\314\317\320 \"\210\317\303N\204b\304\317\303\305\321!#\210\304\301\311\312#\210\301B\313\301!\204|\314\301\322\301\323\"\210	\"\210\301\303N\204\212\304\301\303\305\324!#\210\304\312\325\326#\207" [current-load-list mpc-status-mode-abbrev-table mpc-status-mode-hook variable-documentation put purecopy "Hook run when entering MPC-Status mode.\nNo problems result if this variable is not bound.\n`add-hook' automatically binds it.  (This is true for all hook variables.)" boundp mpc-status-mode-map definition-name mpc-status-mode default-boundp set-default make-sparse-keymap "Keymap for `mpc-status-mode'." mpc-status-mode-syntax-table make-syntax-table "Syntax table for `mpc-status-mode'." define-abbrev-table nil "Abbrev table for `mpc-status-mode'." derived-mode-parent mpc-mode] 5)
#@222 Major mode to display MPC status info.

In addition to any hooks its parent mode `mpc-mode' might have run,
this mode runs the hook `mpc-status-mode-hook', as the final step
during initialization.

\{mpc-status-mode-map}
(defalias 'mpc-status-mode #[nil "\306\300!\210\307\310 \210\311\312\310\313N\203\314\311\313\310\313N#\210\315!\204'\316\317 \"\210\320\f!\211\2036
\321 =\203<\322\f\323 \"\210)\324!\210\325\f!\210\306\326!\210\327\306\330!\210\331\306\332!\210\333)\334\335!\207" [delay-mode-hooks major-mode mode-name mpc-status-mode-map mpc-status-mode-syntax-table parent make-local-variable t mpc-mode mpc-status-mode "MPC-Status" mode-class put keymap-parent set-keymap-parent current-local-map char-table-parent standard-syntax-table set-char-table-parent syntax-table use-local-map set-syntax-table mode-line-format ("%e" mode-line-frame-identification mode-line-buffer-identification) window-area-factor 3 header-line-format ("MPC " mpc-volume) run-mode-hooks mpc-status-mode-hook mpc-status-mode-abbrev-table local-abbrev-table] 6 (#$ . 30063) nil])
(byte-code "\301B\302\301!\204\303\301\304\"\210\301\207" [current-load-list mpc-status-buffer-format default-boundp set-default ("%-5{Time} / %{Duration} %2{Disc--}%4{Track}" "%{Title}" "%{Album}" "%{Artist}" "%128{Cover}")] 3)
(defalias 'mpc-status-buffer-refresh #[nil "\306\307 \310\"\311!\205_rq\210\212eb\210\312	\236\205^\313\314\211\203T
@\315`\316\"\211\203>	!\203>\314y\210\202L`\317\320!|\210\314\321\322\217\210\323c\210)
A\211\204$*m?\205]`d|)*)\207" [buf mpc-status inhibit-read-only mpc-status-buffer-format spec #1=#:--cl-dolist-temp-- mpc-proc-buffer mpc-proc status buffer-live-p file t nil get-text-property mpc-pred line-beginning-position 2 (mpc-format spec mpc-status) ((error)) "\n" pred] 4])
(defalias 'mpc-status-buffer-show #[nil "\304\305 \306\"\304\305 \307\"\211\205\310	\311\"\312!\204.\313\314!rq\210\315 \210)\304\305 \306#\210\n\2048\316!\202M\317\n\320\321#\322\n\323\"\210\324\n\"\210\322\n\325\")+\207" [buf songs-buf songs-win win mpc-proc-buffer mpc-proc status songs get-buffer-window 0 buffer-live-p get-buffer-create "*MPC-Status*" mpc-status-mode pop-to-buffer split-window 20 t set-window-dedicated-p nil set-window-buffer soft] 5 nil nil])(if macro-declaration-function (funcall macro-declaration-function (quote mpc-select-save) (quote (declare (indent 0) (debug t)))))
(byte-code "\301B\302\301!\204\303\301\304\"\210\305B\302\305!\204\303\305\304\"\210\306\305!\207" [current-load-list mpc-separator-ol default-boundp set-default nil mpc-select make-variable-buffer-local] 3)
#@52 Execute BODY and restore the selection afterwards.
(defalias 'mpc-select-save '(macro . #[(&rest body) "\301\302\303\304\"BB\207" [body let ((selection (mpc-select-get-selection)) (position (cons (buffer-substring-no-properties (line-beginning-position) (line-end-position)) (current-column)))) append ((mpc-select-restore selection) (goto-char (point-min)) (if (re-search-forward (concat "^" (regexp-quote (car position)) "$") (if (overlayp mpc-separator-ol) (overlay-end mpc-separator-ol)) t) (move-to-column (cdr position))) (let ((win (get-buffer-window (current-buffer) 0))) (if win (set-window-point win (point)))))] 5 (#$ . 32727)]))
(defalias 'mpc-select-get-selection #[nil "\301\302\"\207" [mpc-select mapcar #[(ol) "\301\302!\303!S\"\207" [ol buffer-substring-no-properties overlay-start overlay-end] 4]] 3])
(defalias 'mpc-select-restore #[(selection) "\305\306\"\210\307	\307\211\203,@eb\210\310\311\312\n!\313Q\307\314#\203%\315 \210A\211\204*\f\2034\316 \210\317 \207" [mpc-select selection elem #1=#:--cl-dolist-temp-- mpc-tag mapc delete-overlay nil re-search-forward "^" regexp-quote "$" t mpc-select-make-overlay mpc-tagbrowser-all-select beginning-of-line] 5])
(defalias 'mpc-select-make-overlay #[nil "\302`\301\"\203
\303\304\305C\"\210\306\307 \307\310!\"\311\301\312#\210\311\313\314#\210\311\315\312#\210	B\211)\207" [ol mpc-select get-char-property signal cl-assertion-failed (not (get-char-property (point) 'mpc-select)) make-overlay line-beginning-position 2 overlay-put t face region evaporate] 4])
#@32 Select the tag value at point.
(defalias 'mpc-select #[(&optional event) "\303!\210n\203m\203\304y\210\305\306	\"\210\307\310 \204\311 \210\n\205'\312 \210\313 \207" [event mpc-select mpc-tag mpc-event-set-point -1 mapc delete-overlay nil mpc-tagbrowser-all-p mpc-select-make-overlay mpc-tagbrowser-all-select mpc-selection-refresh] 3 (#$ . 34285) (list last-nonmenu-event)])
#@49 Toggle the selection of the tag value at point.
(defalias 'mpc-select-toggle #[(&optional event) "\306!\210\212\307`\302\"\203Q\310\n\310\211\203;\f@\311!`X\2030\312!`V\2030\313!\210\2024	B\fA\211\204*	GT\nGU\204K\314\315\316C\"\210	)\202Y\317 \204Y\320 \210)
\205c\321 \210\322 \207" [event ols mpc-select ol #1=#:--cl-dolist-temp-- mpc-tag mpc-event-set-point get-char-property nil overlay-start overlay-end delete-overlay signal cl-assertion-failed (= (1+ (length ols)) (length mpc-select)) mpc-tagbrowser-all-p mpc-select-make-overlay mpc-tagbrowser-all-select mpc-selection-refresh] 3 (#$ . 34676) (list last-nonmenu-event)])
#@35 Extend the selection up to point.
(defalias 'mpc-select-extend #[(&optional event) "\306!\210	\204\f\301!\207\212\307`\301\"\203\264\310\211\311 \312\211\313\314y!\2037\307`\301\"\2037`T
T\202 \fb\210\313\315y!\203R\307`\301\"\203R`T\202:
\310U\203_\310U\204\260
V\203k\f\202n\fT\312	\312\211\203\252@\316!Y\203\232\316!\nW\203\232\317!\210\202\241BA\211\204{*\237)-\202M\320 \203\274\314y\210\310\211\314\311 \313\314y!\203\336\307`\301\"\204\336T\202\310\307`\301\"\204\350\312b\210\313\315y!\203\307`\301\"\204T\202\353\307`\301\"\204\312\203$\203W\203$\315b\210\206-\310T\310W\203K\321 \210y\210T\211\2025.)\205X\322 \210\323 \207" [event mpc-select end start mid after mpc-event-set-point get-char-property 0 line-beginning-position nil zerop 1 -1 overlay-start delete-overlay mpc-tagbrowser-all-p mpc-select-make-overlay mpc-tagbrowser-all-select mpc-selection-refresh before ols ol #1=#:--cl-dolist-temp-- dir count i #2=#:--cl-dotimes-temp-- mpc-tag] 5 (#$ . 35336) (list last-nonmenu-event)])
(byte-code "\301B\302\301!\204\303\301\304\"\210\304\207" [current-load-list mpc--song-search default-boundp set-default nil] 3)
#@160 Return currently selected set of constraints.
If AVOID-BUF is non-nil, it specifies a buffer which should be ignored
when constructing the set of constraints.
(defalias 'mpc-constraints-get-current #[(&optional avoid-buf) "\205\306DC\307\211\310\311 \312\"\307\211\203H
@\211A\313\314\f\"\211\203A\f=\204Ar\fq\210\315 )\211\203A\n	BB
A\211\204*+\207" [mpc--song-search select tag constraints buf #1=#:--cl-dolist-temp-- Search nil process-get mpc-proc buffers buffer-local-value mpc-tag mpc-select-get-selection avoid-buf] 4 (#$ . 36621)])
(defalias 'mpc-constraints-restore #[(constraints) "\306\236\211\211A@)	\203\307	\")\310\311 \312\"\313\211\203P
@\211A\314\f!\203I\315\316\f\"\211\236\203Hr\fq\210\317A!\210)*
A\211\204!*\320 \207" [constraints search x mpc--song-search buf #1=#:--cl-dolist-temp-- Search delq process-get mpc-proc buffers nil buffer-live-p buffer-local-value mpc-tag mpc-select-restore mpc-selection-refresh tag constraint] 5])
(defalias 'mpc-ring-make #[(size) "\301\211\302\303\"BB\207" [size 0 make-vector nil] 5])
(defalias 'mpc-ring-push #[(ring val) "\211AA)@\nI\210A\211A@)@T]\240\210\303@T\211AA)G\"\240\207" [ring x val mod] 5])
(defalias 'mpc-ring-pop #[(ring) "\302@S\211A@)\"\240\210\211AA)@H\207" [ring x mod] 5])
(byte-code "\301B\302\301!\204\303\301\304\305!\"\210\301\207" [current-load-list mpc-constraints-ring default-boundp set-default mpc-ring-make 10] 4)
#@51 Push the current selection on the ring for later.
(defalias 'mpc-constraints-push #[(&optional noerror) "\303 \211\204	?\205\304\305!\202\306\n\")\207" [constraints noerror mpc-constraints-ring mpc-constraints-get-current error "No selection to push" mpc-ring-push] 4 (#$ . 38104) nil])
#@44 Recall the most recently pushed selection.
(defalias 'mpc-constraints-pop #[nil "\302!\211\204\303\304!\202\305	!)\207" [mpc-constraints-ring constraints mpc-ring-pop error "No selection to return to" mpc-constraints-restore] 3 (#$ . 38405) nil])
(byte-code "\301B\302\303\304\305\306#!\210\307B\310\307!\204\311\307\312\"\210\313\307!\210\314B\310\314!\204.\311\314\312\"\210\313\314!\207" [current-load-list mpc-tagbrowser-all-name (lambda (#1=#:defconst-tmp-var) (defconst mpc-tagbrowser-all-name #1#)) propertize "*ALL*" face italic mpc-tagbrowser-all-ol default-boundp set-default nil make-variable-buffer-local mpc-tag-name] 5)
(defalias 'mpc-tagbrowser-all-p #[nil "e\301 =\205
e\302 {\232\207" [mpc-tagbrowser-all-name line-beginning-position line-end-position] 3])
(byte-code "\302\303N\204\304\302\303\305\306!#\210\307\310!\204\304\310\311\312#\210\310B\313\310!\204*\314\310\315 \"\210\310\303N\2048\304\310\303\305\316!#\210\307\317!\204D\304\317\311\312#\210\317B\313\317!\204T\314\317\320 \"\210\317\303N\204b\304\317\303\305\321!#\210\304\301\311\312#\210\301B\313\301!\204|\314\301\322\301\323\"\210	\"\210\301\303N\204\212\304\301\303\305\324!#\210\304\312\325\326#\207" [current-load-list mpc-tagbrowser-mode-abbrev-table mpc-tagbrowser-mode-hook variable-documentation put purecopy "Hook run when entering (quote (MPC- mpc-tag-name)) mode.\nNo problems result if this variable is not bound.\n`add-hook' automatically binds it.  (This is true for all hook variables.)" boundp mpc-tagbrowser-mode-map definition-name mpc-tagbrowser-mode default-boundp set-default make-sparse-keymap "Keymap for `mpc-tagbrowser-mode'." mpc-tagbrowser-mode-syntax-table make-syntax-table "Syntax table for `mpc-tagbrowser-mode'." define-abbrev-table nil "Abbrev table for `mpc-tagbrowser-mode'." derived-mode-parent mpc-mode] 5)
#@504 Major mode derived from `mpc-mode' by `define-derived-mode'.
It inherits all of the parent's attributes, but has its own keymap,
abbrev table and syntax table:

  `mpc-tagbrowser-mode-map', `mpc-tagbrowser-mode-abbrev-table' and `mpc-tagbrowser-mode-syntax-table'

which more-or-less shadow mpc-mode's corresponding tables.

In addition to any hooks its parent mode might have run,
this mode runs the hook `mpc-tagbrowser-mode-hook', as the final step
during initialization.

\{mpc-tagbrowser-mode-map}
(defalias 'mpc-tagbrowser-mode #[nil "\306\300!\210\307\310 \210\311\312\310\313N\203\314\311\313\310\313N#\210\315!\204'\316\317 \"\210\320\f!\211\2036
\321 =\203<\322\f\323 \"\210)\324!\210\325\f!\210 \306\326!\210\327\306\330!\210\331\306\332!\210\333\306\334!\210\307)\335\336!\207" [delay-mode-hooks major-mode mode-name mpc-tagbrowser-mode-map mpc-tagbrowser-mode-syntax-table parent make-local-variable t mpc-mode mpc-tagbrowser-mode ("MPC-" mpc-tag-name) mode-class put keymap-parent set-keymap-parent current-local-map char-table-parent standard-syntax-table set-char-table-parent syntax-table use-local-map set-syntax-table mode-line-process (#1="" mpc-tag-name) mode-line-format nil header-line-format (#1# mpc-tag-name) buffer-undo-list run-mode-hooks mpc-tagbrowser-mode-hook mpc-tagbrowser-mode-abbrev-table local-abbrev-table] 6 (#$ . 40275) nil])
(defalias 'mpc-tagbrowser-refresh #[nil "\306 \307\310 \311 \"iB~\210eb\210\312\313\n!!\204\314\315\316C\"\210\317y\210\320`d|\210\321\f!\322\211 \203E @\211\323\261\210 A\211 \2043+\324\322!\210\325	!\210eb\210\326\327\313@!\330Q\331!!\205d\332!!\320#\203n\333A!\210\334p\335\"\211\"\203~\336\"`\"\210+\337 \207" [position selection mpc-tagbrowser-all-name inhibit-read-only mpc-tag val mpc-select-get-selection buffer-substring-no-properties line-beginning-position line-end-position looking-at regexp-quote signal cl-assertion-failed (looking-at (regexp-quote mpc-tagbrowser-all-name)) 1 t mpc-cmd-list nil "\n" set-buffer-modified-p mpc-select-restore re-search-forward "^" "$" overlayp overlay-end move-to-column get-buffer-window 0 set-window-point mpc-reorder #1=#:--cl-dolist-temp-- mpc-separator-ol win] 5])
(defalias 'mpc-updated-db #[nil "\304\236?\205:\305	!\210\306\307 \310\"\311\211\2035@\211A\312\313\n\"\203.r\nq\210\311\314\315\217\210)A\211\204*\311\316\317\217\207" [mpc-status mpc--find-memoize buf #1=#:--cl-dolist-temp-- updating_db clrhash process-get mpc-proc buffers nil buffer-local-value mpc-tag (byte-code "\301\302 \210)\301\207" [inhibit-quit nil mpc-tagbrowser-refresh] 1) ((quit (byte-code "\301\302\303!\207" [quit-flag t eval #2=(ignore nil)] 2))) (byte-code "\301\302 )\207" [inhibit-quit nil mpc-songs-refresh] 1) ((quit (byte-code "\301\302\303!\207" [quit-flag t eval #2#] 2)))] 4])
(defalias 'mpc-tagbrowser-tag-name #[(tag) "\303\304\305!\"\203'\306\305!\307\211\224O!\306\305!\307\225\310O!\311\n!\312\311	!Q*\207\303\313\305!\"\2039\305!\307\314O\315P\207\305!\316P\207" [tag tag2 tag1 string-match "|" symbol-name intern 0 nil mpc-tagbrowser-tag-name " | " "y\\'" -1 "ies" "s"] 5])
(defalias 'mpc-tagbrowser-buf #[(tag) "\306\307 \"\310	!\203	\202M\311\312\313\"!\306\307 	#\210r	q\210\314\315 \210\316\235\2033\317 \210\2026\320 \210\321\261\210)\322y\210\323!\324 \210\325 \210	))\207" [tag buf inhibit-read-only mpc-tagbrowser-all-name mpc-tag mpc-tag-name mpc-proc-buffer mpc-proc buffer-live-p get-buffer-create format "*MPC %ss*" t erase-buffer (Directory) mpc-tagbrowser-dir-mode mpc-tagbrowser-mode "\n" -1 mpc-tagbrowser-tag-name mpc-tagbrowser-all-select mpc-tagbrowser-refresh] 4])
(byte-code "\301B\302\301!\204\303\301\304\305!\"\210\301\207" [current-load-list tag-browser-tagtypes default-boundp set-default completion-table-dynamic #[(#:string) "\301!\203\f\302\303\304 \"\207" [tag-browser-tagtypes functionp append ("Playlist" "Directory") mpc-cmd-tagtypes] 3]] 4)
#@31 Create a new browser for TAG.
(defalias 'mpc-tagbrowser #[(tag) "\305!\306	\307\"\211\203\310\n!\202ur\311\312 !q\210\313\314!)\203'\312 \202U\315\316 \304\"\317\f\203T\320\f\211A@A\211!\203/rq\210\313\314!)\203/\306\307\"\211\203/*\n\204_\321	!\202u\322\n\317\323#\324\n	\"\210\325\n\326\"\210\310\n!\210\327 *\207" [tag newbuf win buffer buffers mpc-tagbrowser-buf get-buffer-window 0 select-window window-buffer selected-window derived-mode-p mpc-tagbrowser-mode process-get mpc-proc nil buffer-live-p pop-to-buffer split-window horiz set-window-buffer set-window-dedicated-p soft balance-windows-area] 5 (#$ . 44273) (list (let ((completion-ignore-case t)) (intern (completing-read "Tag: " tag-browser-tagtypes nil 'require-match))))])
#@57 Select the special *ALL* entry if no other is selected.
(defalias 'mpc-tagbrowser-all-select #[nil "\203\303	!\207\212eb\210	\203\304	`\305\306!#\2025\307`\305\306!\"\310\n\311\312#\210\310\n\313\314#\210\315\301!\210\n\211))\207" [mpc-select mpc-tagbrowser-all-ol ol delete-overlay move-overlay line-beginning-position 2 make-overlay overlay-put face region evaporate t make-local-variable] 5 (#$ . 45042)])
(defalias 'mpc-separator #[(active) "\204\302\300!\210\303``\"\304\305\306\307\310\311##\210eb\210\312y\210\313\314 \315 \"	\235\203/\316\312y!\204m\2047	\204;\317!\207\320`S`#\207" [mpc-separator-ol active make-local-variable make-overlay overlay-put after-string propertize "\n" face (:height 0.05 :inverse-video t) 1 buffer-substring-no-properties line-beginning-position line-end-position zerop delete-overlay move-overlay] 7])
(defalias 'mpc-sort #[(active) "\301eb\210\302 \203
\303y\210\304\305\306\217)\207" [inhibit-read-only t mpc-tagbrowser-all-p 1 nil (byte-code "\300\301\302\303\301\211\304&\207" [sort-subr nil forward-line end-of-line #[(s1 s2) "\304@A\"\304	@	A\"\n\235\203,	\n\235\203*\305	\306#\211\247\205(\307W)\207\306\207	\n\235\2034\310\207\305	\306#\211\247\205B\307W)\207" [s1 s2 active cmp buffer-substring-no-properties mpc-compare-strings t 0 nil] 5]] 7) ((wrong-number-of-arguments (byte-code "\300\301\302\303\304$\207" [sort-subr nil forward-line end-of-line #[nil "\302`\303 \"\211	\235\203\304P\202\305)\207" [name active buffer-substring-no-properties line-end-position "1" "2name"] 4]] 5)))] 3])
#@283 Reorder entries based on thre currently active selections.
I.e. split the current browser buffer into a first part containing the
entries included in the selection, then a separator, and then the entries
not included in the selection.
Return non-nil if a selection was deactivated.
(defalias 'mpc-reorder #[(&optional nodeactivate) "\306 \307\310 \311 \"iB\312p!\313\211\314\211\203?
@\315\316\317\320\fA\"\"#\n<\2034\321\n#\"\2026#)
A\211\204*\n<\203\212\322$	\314%\211&\203i&@\211%\n\235\203`\314$&A\211&\204R*$\203\211	\203v\322'(\204\211\314\323\324)\"\210\314)\325 \210)\326\n<\205\221\n!\210\327\n<\205\232\n!\210*\330	!\210eb\210\331\332\333@!\334Q\335*!\205\267\336*!\322#\203\301\337A!\210\340p\341\"\211+\205\320\342+`\"+\207" [position selection active constraints cst #1=#:--cl-dolist-temp-- mpc-select-get-selection buffer-substring-no-properties line-beginning-position line-end-position mpc-constraints-get-current all nil apply mpc-union mapcar #[(val) "\303	@\n#\207" [mpc-tag cst val mpc-cmd-list] 4] mpc-intersection t mapc delete-overlay mpc-tagbrowser-all-select mpc-sort mpc-separator mpc-select-restore re-search-forward "^" regexp-quote "$" overlayp overlay-end move-to-column get-buffer-window 0 set-window-point vals deactivate sel #2=#:--cl-dolist-temp-- mpc--changed-selection nodeactivate mpc-select mpc-separator-ol win] 7 (#$ . 46635)])
(defalias 'mpc-selection-refresh #[nil "\305\203:\306\307\310 \311\"\306\211\2036\n@\211A\312\303	\"\203/	p=\204/r	q\210\313 \210)\nA\211\204*\202\203B\313\314!\210\f\203Q\203Q\306\315 \202S\316 )\207" [mpc--changed-selection buf #1=#:--cl-dolist-temp-- mpc-tag mpc--song-search t nil process-get mpc-proc buffers buffer-local-value mpc-reorder nodeactivate mpc-selection-refresh mpc-songs-refresh] 4])
(byte-code "\304B\305\304!\204\306\304\307 \310	\n\"\210\311	\312\313#\210	)\"\210\314\315N\204,\316\314\315\317\320!#\210\321\304!\2048\316\304\322\323#\210\304B\305\304!\204H\306\304\307 \"\210\304\315N\204V\316\304\315\317\324!#\210\321\325!\204b\316\325\322\323#\210\325B\305\325!\204r\306\325\326 \"\210\325\315N\204\200\316\325\315\317\327!#\210\316\303\322\323#\210\303B\305\303!\204\232\306\303\330\303\331\"\210\"\210\303\315N\204\250\316\303\315\317\332!#\210\316\323\333\334#\207" [current-load-list map mpc-tagbrowser-mode-map mpc-tagbrowser-dir-mode-abbrev-table mpc-tagbrowser-dir-mode-map default-boundp set-default make-sparse-keymap set-keymap-parent define-key [134217741] mpc-tagbrowser-dir-toggle mpc-tagbrowser-dir-mode-hook variable-documentation put purecopy "Hook run when entering (quote (MPC- mpc-tag-name)) mode.\nNo problems result if this variable is not bound.\n`add-hook' automatically binds it.  (This is true for all hook variables.)" boundp definition-name mpc-tagbrowser-dir-mode "Keymap for `mpc-tagbrowser-dir-mode'." mpc-tagbrowser-dir-mode-syntax-table make-syntax-table "Syntax table for `mpc-tagbrowser-dir-mode'." define-abbrev-table nil "Abbrev table for `mpc-tagbrowser-dir-mode'." derived-mode-parent mpc-tagbrowser-mode] 6)
#@546 Major mode derived from `mpc-tagbrowser-mode' by `define-derived-mode'.
It inherits all of the parent's attributes, but has its own keymap,
abbrev table and syntax table:

  `mpc-tagbrowser-dir-mode-map', `mpc-tagbrowser-dir-mode-abbrev-table' and `mpc-tagbrowser-dir-mode-syntax-table'

which more-or-less shadow mpc-tagbrowser-mode's corresponding tables.

In addition to any hooks its parent mode might have run,
this mode runs the hook `mpc-tagbrowser-dir-mode-hook', as the final step
during initialization.

\{mpc-tagbrowser-dir-mode-map}
(defalias 'mpc-tagbrowser-dir-mode #[nil "\306\300!\210\307\310 \210\311\312\310\313N\203\314\311\313\310\313N#\210\315!\204'\316\317 \"\210\320\f!\211\2036
\321 =\203<\322\f\323 \"\210)\324!\210\325\f!\210)\326\327!\207" [delay-mode-hooks major-mode mode-name mpc-tagbrowser-dir-mode-map mpc-tagbrowser-dir-mode-syntax-table parent make-local-variable t mpc-tagbrowser-mode mpc-tagbrowser-dir-mode ("MPC-" mpc-tag-name) mode-class put keymap-parent set-keymap-parent current-local-map char-table-parent standard-syntax-table set-char-table-parent syntax-table use-local-map set-syntax-table run-mode-hooks mpc-tagbrowser-dir-mode-hook mpc-tagbrowser-dir-mode-abbrev-table local-abbrev-table] 6 (#$ . 49777) nil])
#@37 Open or close the element at point.
(defalias 'mpc-tagbrowser-dir-toggle #[(event) "\305!\210\306 \307 {\310	!\211\311\312 \n\"\235\204(\313\312 \n\311\312 \n\"B#\210\202C\314\311\312 \n\"\"\315P\313\312 \n\316\317\320\321\f\"\"#\210)\322 *\207" [event mpc-tag prop name new mpc-event-set-point line-beginning-position line-end-position intern process-get mpc-proc process-put delete "/" delq nil mapcar #[(x) "\302	\"?\205		\207" [name x mpc-string-prefix-p] 3] mpc-tagbrowser-refresh] 9 (#$ . 51058) (list last-nonmenu-event)])
#@88 Name of the currently selected playlist, if any.
A value of t means the main playlist.
(defvar mpc-songs-playlist nil (#$ . 51606))
(make-variable-buffer-local 'mpc-songs-playlist)
#@40 Save current playlist under name NAME.
(defalias 'mpc-playlist-create #[(name) "\302\303D!\210\304\305 \306\"\307	!\205r	q\210\310 ))\207" [name buf mpc-proc-cmd "save" mpc-proc-buffer mpc-proc Playlist buffer-live-p mpc-tagbrowser-refresh] 3 (#$ . 51793) "sPlaylist name: "])
#@29 Delete playlist named NAME.
(defalias 'mpc-playlist-destroy #[(name) "\302\303D!\210\304\305 \306\"\307	!\205r	q\210\310 ))\207" [name buf mpc-proc-cmd "rm" mpc-proc-buffer mpc-proc Playlist buffer-live-p mpc-tagbrowser-refresh] 3 (#$ . 52080) (list (completing-read "Delete playlist: " (mpc-cmd-list 'Playlist) nil 'require-match))])
#@37 Rename playlist OLDNAME to NEWNAME.
(defalias 'mpc-playlist-rename #[(oldname newname) "\303\304	E!\210\305\306 \307\"\310\n!\205r\nq\210\311 ))\207" [oldname newname buf mpc-proc-cmd "rename" mpc-proc-buffer mpc-proc Playlist buffer-live-p mpc-tagbrowser-refresh] 4 (#$ . 52425) (byte-code "\304=\203	\204\305 \306 {\202\307\310\311\304!\312\313$\314\315\316\n\"!\317G!\203/\320\321!\2022\nD*\207" [mpc-tag current-prefix-arg oldname newname Playlist line-beginning-position line-end-position completing-read "Rename playlist: " mpc-cmd-list nil require-match read-string format "Rename '%s' to: " zerop error "Aborted"] 5)])
#@28 Show the current playlist.
(defalias 'mpc-playlist #[nil "\300\301!\210\302\303!\207" [mpc-constraints-push noerror mpc-constraints-restore nil] 2 (#$ . 53075) nil])
#@36 Add the selection to the playlist.
(defalias 'mpc-playlist-add #[nil "\301\302\303 \"\304!\210\305\306G\"\210)\207" [songs mapcar car mpc-songs-selection mpc-cmd-add message "Appended %d songs"] 3 (#$ . 53247) nil])
#@46 Remove the selected songs from the playlist.
(defalias 'mpc-playlist-delete #[nil "\204\302\303!\210\304\305\306 \"\307	\"\210\310 \210\311\312	G\")\207" [mpc-songs-playlist song-poss error "The selected songs aren't part of a playlist" mapcar cdr mpc-songs-selection mpc-cmd-delete mpc-songs-refresh message "Deleted %d songs"] 3 (#$ . 53473) nil])
(byte-code "\302B\303\302!\2047\304\302\305 \306	\307\310#\210\306	\311\312#\210\306	\313\310#\210\306	\314\312#\210\306	\315\310#\210\306	\316\312#\210	)\"\210\317B\303\317!\204F\304\317\320\"\210\321\317\322\323#\207" [current-load-list map mpc-volume-map default-boundp set-default make-sparse-keymap define-key [down-mouse-1] mpc-volume-mouse-set [mouse-1] ignore [header-line down-mouse-1] [header-line mouse-1] [mode-line down-mouse-1] [mode-line mouse-1] mpc-volume nil put risky-local-variable t] 6)
(defalias 'mpc-volume-refresh #[nil "\302\303\304\236A!!\211\207" [mpc-status mpc-volume mpc-volume-widget string-to-number volume] 4])
(byte-code "\301B\302\301!\204\303\301\304\"\210\301\207" [current-load-list mpc-volume-step default-boundp set-default 5] 3)
#@24 Change volume setting.
(defalias 'mpc-volume-mouse-set #[(&optional event) "\211:\203
A@\202\306 `\307\310F)\211\211\311\n8)\206&\n\312\n8))\242;\203V	\211\311\n8)\206=\n\312\n8))@	\211\311\n8)\206P\n\312\n8))AH\202|r\313	\211@)!q\210	\314\n8\206y\nA@:\203v\nA@@\202y\nA@)f)\315>\203\206[\202\207\316\317
\236A!\f\\\320\321D\322\"\210\323\324\"+\207" [event posn position mpc-volume-step diff mpc-status selected-window (0 . 0) 0 7 4 window-buffer 5 (9665 60) string-to-number volume mpc-proc-cmd "setvol" mpc-status-refresh message "Set MPD volume to %s%%" newvol] 5 (#$ . 54617) (list last-nonmenu-event)])
(defalias 'mpc-volume-widget #[(vol &optional size) "\204\304	\305\245_\306\307\310\311\312\313\314&\315\306\316\317\320\321\nE\311\322%\306\316\317\320\321\nZE\311\323%\315\306\324\310\311\325\313\326&\257)\207" [size vol scaledvol mpc-volume-map 12.5 100.0 propertize "<" keymap face (:box (:line-width -2 :style pressed-button)) mouse-face (:box (:line-width -2 :style released-button)) " " "a" display space :width (:inverse-video t :box (:line-width -2 :style released-button)) (:box (:line-width -2 :style released-button)) ">" (:box (:line-width -2 :style pressed-button)) (:box (:line-width -2 :style released-button))] 13])
(byte-code "\303B\304\303!\204\305\303\306\"\210\307\303\310\311#\210\312B\304\312!\204$\305\312\306\"\210\307\312\310\311#\210\313B\304\313!\2049\305\313\306\"\210\307\313\310\311#\210\314B\304\314!\204N\305\314\306\"\210\315B\304\315!\204l\305\315\316 \317	\n\"\210\320	\321\322#\210	)\"\210\323B\304\323!\204{\305\323\306\"\210\306\207" [current-load-list map mpc-mode-map mpc-current-song default-boundp set-default nil put risky-local-variable t mpc-current-updating mpc-songs-format-description mpc-previous-window-config mpc-songs-mode-map make-sparse-keymap set-keymap-parent define-key [remap mpc-select] mpc-songs-jump-to mpc-songpointer-set-visible] 6)
#@148 Make song file name objects unique via hash consing.
This is used so that they can be compared with `eq', which is needed for
`text-property-any'.
(defvar mpc-songs-hashcons (make-hash-table :test 'equal :weakness t) (#$ . 56599))
(defalias 'mpc-songs-hashcons #[(name) "\302	\"\206\f\303\211	#\207" [name mpc-songs-hashcons gethash puthash] 4])
#@56 Format used to display each song in the list of songs.
(custom-declare-variable 'mpc-songs-format '"%2{Disc--}%3{Track} %-5{Time} %25{Title} %20{Album} %20{Artist} %10{Date}" '(#$ . 56954) :type 'string)
(defalias 'mpc-songs-refresh #[nil "\306\307 \310\"\311!\203\233rq\210\312p!\313\314\315\316e\317 \"\317 \320 {B\313@\313A@\204?\314\211A\321\322\323!!\202\260@\313B\211C\203\257C@\211B@\324=\203iBAG\325U\203iB\211DA@)A\326\327\330\331BA\"\"E	\204\207B@\324=\203\202\314E\202\244
\204\223B@\324=\204\234\332	E\333#\202\244\314\332E	\334#)CA\211C\204J*\335 \336\317 \320 \"iBFG\337 \210
\203\311	\202\315\340	\341\"\313H\211I\203,I@H\342\343H\236A\206\346\344!\\\345JH\"\210\346\347\313x[!\210\350c\210\351\317\315!\317 \352\353\354H\236A!$\210\355H\236\211K\203\"\351\317\315!\317 \356\342KA!$\210)IA\211I\204\326*\357G!\210eb\210\360\361\362F@!\363Q\364L!\205I\365L!\314#\203T\366FA!\210\367p\315\"\211M\203d\370M`\"\210+eb\210\n@y\210\371\nA\313\314#\204~\372\nA\313\314#\203\204\373 \210\202\207eb\210\374\375!\210\376!?\205\227\347\377!D=.)\314N\201O )\207" [buf active curline totaltime inhibit-read-only dontsort mpc-proc-buffer mpc-proc songs buffer-live-p mpc-constraints-get-current nil t 0 count-lines line-beginning-position line-end-position mpc-proc-buf-to-alists mpc-proc-cmd "playlistinfo" Playlist 1 apply mpc-union mapcar #[(val) "\302@	\"\207" [cst val mpc-cmd-find] 3] mpc-intersection #[(x) "\301\236\207" [x file] 2] #[(x) "\301\236\207" [x file] 2] mpc-select-get-selection buffer-substring-no-properties erase-buffer sort #[(song1 song2) "\303\304\236A\304	\236A\"\211\250\205\n\305W)\207" [song1 song2 cmp mpc-compare-strings file 0] 5] string-to-number Time "0" mpc-format delete-char " " "\n" put-text-property mpc-file mpc-songs-hashcons file Pos mpc-file-pos mpc-select-restore re-search-forward "^" regexp-quote "$" overlayp overlay-end move-to-column get-buffer-window set-window-point search-forward search-backward beginning-of-line make-local-variable mpc-songs-totaltime zerop mpc-secs-to-time constraints mpc-songs-playlist cst #1=#:--cl-dolist-temp-- x vals position selection song #2=#:--cl-dolist-temp-- mpc-songs-format pos mpc-separator-ol win mpc-songpointer-set-visible mpc-songpointer-refresh] 9])
#@61 Filter songs to those who include STRING in their metadata.
(defalias 'mpc-songs-search #[(string) "\305G!?\205	\306\n\205A\307\310\311 \312\"\307\211\203:\f@\211A\313\314\"\2033rq\210\315 \210)\fA\211\204*\316 \210\202\f)\207" [string mpc--song-search mpc--changed-selection buf #1=#:--cl-dolist-temp-- zerop t nil process-get mpc-proc buffers buffer-local-value mpc-tag mpc-reorder mpc-songs-refresh] 4 (#$ . 59303) "sSearch for: "])
#@42 Turn off the current search restriction.
(defalias 'mpc-songs-kill-search #[nil "\300\301!\207" [mpc-songs-search nil] 2 (#$ . 59764) nil])
#@46 Return the list of songs currently selected.
(defalias 'mpc-songs-selection #[nil "\305\306 \307\"\310!\205Yrq\210\212\311\n\203=\n\311\211\2039\f@\312\313!\314\"\312\313!\315\"B	B\fA\211\204*\202Veb\210m\204V\312`\314\"\312`\315\"B	B\316y\210\202@	\237+)\207" [buf files mpc-select ol #1=#:--cl-dolist-temp-- mpc-proc-buffer mpc-proc songs buffer-live-p nil get-text-property overlay-start mpc-file mpc-file-pos 1] 5 (#$ . 59910)])
#@67 Jump to song SONG-FILE; interactively, this is the song at point.
(defalias 'mpc-songs-jump-to #[(song-file &optional posn) "\306\307!\310\311	!\312Qrq\210eb\210\313\n\314\315#\205\316\317!)\211\204)\320\321!\202 rq\210\313\n\314\315#)\204>\306\322D!\202 \323 \324\325\326 \"r\327\216\330'\211(@)\331\"\210\332)!\205`\333)!*\212'(\334(8\206\202(A@:\203~(A@@\202\202(A@)b\210\335 )+*\205\243*+W\203\233\317\202\234\336\337*+\"_,rq\210eb\210\340\341-\236A\206\266\342!y\210,\203\302,y\210\212\313\n\314\315#\205\320`\316\317!B).\212\343\n\314\315#\205\341`\316\317!B)/.\203/\203.@`Z`/@ZW\203.\202
/\202
.\206
/A\211\204\344\345\303C\"\210\306\346P!.+\207" [plbuf song-file re sn save-selected-window-alist save-selected-window-window mpc-proc-cmd "playlist" "^\\([0-9]+\\):" regexp-quote "$" re-search-forward nil t match-string 1 error "This song is not in the playlist" "play" selected-window mapcar #[(frame) "\301!D\207" [frame frame-selected-window] 3] frame-list ((byte-code "\305\211\2030\n@\306	@!\203)\307	\211A@)!\203)\310	@	\211A@)\311#\210\nA\211\204*\307\f!\203<\312\f\311\"\210\305\207" [save-selected-window-alist elt #1=#:--cl-dolist-temp-- x save-selected-window-window nil frame-live-p window-live-p set-frame-selected-window norecord select-window] 5)) select-window norecord markerp marker-position 5 line-beginning-position -1 count-lines string-to-number song "0" re-search-backward signal cl-assertion-failed "play " posn position overlay-arrow-position cur dest lines mpc-status next prev] 5 (#$ . 60369) (byte-code "\211\211:\203\306	8:\203\306\202\307	8\202 \310 `\311\312F)\310 \313\314\315 \"r\316\216\317\n\211@)\320\"\210\n\321
8\206P
A@:\203M
A@@\202P
A@)b\210\322`\323\"\n.D\207" [last-nonmenu-event event posn save-selected-window-alist save-selected-window-window position 2 1 selected-window (0 . 0) 0 mapcar #[(frame) "\301!D\207" [frame frame-selected-window] 3] frame-list ((byte-code "\305\211\2030\n@\306	@!\203)\307	\211A@)!\203)\310	@	\211A@)\311#\210\nA\211\204*\307\f!\203<\312\f\311\"\210\305\207" [save-selected-window-alist elt #2=#:--cl-dolist-temp-- x save-selected-window-window nil frame-live-p window-live-p set-frame-selected-window norecord select-window] 5)) select-window norecord 5 get-text-property mpc-file] 5)])
(byte-code "\302\303N\204\304\302\303\305\306!#\210\307\310!\204\304\310\311\312#\210\310B\313\310!\204*\314\310\315 \"\210\310\303N\2048\304\310\303\305\316!#\210\307\317!\204D\304\317\311\312#\210\317B\313\317!\204T\314\317\320 \"\210\317\303N\204b\304\317\303\305\321!#\210\304\301\311\312#\210\301B\313\301!\204|\314\301\322\301\323\"\210	\"\210\301\303N\204\212\304\301\303\305\324!#\210\304\312\325\326#\207" [current-load-list mpc-songs-mode-abbrev-table mpc-songs-mode-hook variable-documentation put purecopy "Hook run when entering MPC-song mode.\nNo problems result if this variable is not bound.\n`add-hook' automatically binds it.  (This is true for all hook variables.)" boundp mpc-songs-mode-map definition-name mpc-songs-mode default-boundp set-default make-sparse-keymap "Keymap for `mpc-songs-mode'." mpc-songs-mode-syntax-table make-syntax-table "Syntax table for `mpc-songs-mode'." define-abbrev-table nil "Abbrev table for `mpc-songs-mode'." derived-mode-parent mpc-mode] 5)
#@479 Major mode derived from `mpc-mode' by `define-derived-mode'.
It inherits all of the parent's attributes, but has its own keymap,
abbrev table and syntax table:

  `mpc-songs-mode-map', `mpc-songs-mode-abbrev-table' and `mpc-songs-mode-syntax-table'

which more-or-less shadow mpc-mode's corresponding tables.

In addition to any hooks its parent mode might have run,
this mode runs the hook `mpc-songs-mode-hook', as the final step
during initialization.

\{mpc-songs-mode-map}
(defalias 'mpc-songs-mode #[nil "\306\300!\210\307\310 \210\311\312\310\313N\203\314\311\313\310\313N#\210\315!\204'\316\317 \"\210\320\f!\211\2036
\321 =\203<\322\f\323 \"\210)\324!\210\325\f!\210&'\326\327!(r(q\210\330\216\331)\332\"\210\333 +*\306\334!\210\335\336\337\340#\341D\306\342!\210\343\")\344\345!\207" [delay-mode-hooks major-mode mode-name mpc-songs-mode-map mpc-songs-mode-syntax-table parent make-local-variable t mpc-mode mpc-songs-mode "MPC-song" mode-class put keymap-parent set-keymap-parent current-local-map char-table-parent standard-syntax-table set-char-table-parent syntax-table use-local-map set-syntax-table generate-new-buffer " *temp*" ((byte-code "\301!\203\n\302!\210\301\207" [#1=#:temp-buffer buffer-name kill-buffer] 2)) mpc-format self buffer-string header-line-format propertize " " display (space :align-to 0) (:eval (let ((hscroll (window-hscroll))) (with-temp-buffer (mpc-format mpc-songs-format 'self hscroll) (buffer-string)))) mode-line-format ("%e" mode-line-frame-identification mode-line-buffer-identification #("   " 0 3 (help-echo "mouse-1: Select (drag to resize)\nmouse-2: Make current window occupy the whole frame\nmouse-3: Remove current window from display")) mode-line-position #("  " 0 2 (help-echo "mouse-1: Select (drag to resize)\nmouse-2: Make current window occupy the whole frame\nmouse-3: Remove current window from display")) mpc-songs-totaltime mpc-current-updating #("   " 0 2 (help-echo "mouse-1: Select (drag to resize)\nmouse-2: Make current window occupy the whole frame\nmouse-3: Remove current window from display")) (mpc--song-search (:propertize ("Search=\"" mpc--song-search "\"") help-echo "mouse-2: kill this search" follow-link t mouse-face mode-line-highlight keymap (keymap (mode-line keymap (mouse-2 . mpc-songs-kill-search)))) (:propertize "NoSearch" help-echo "mouse-2: set a search restriction" follow-link t mouse-face mode-line-highlight keymap (keymap (mode-line keymap (mouse-2 . mpc-songs-search)))))) run-mode-hooks mpc-songs-mode-hook mpc-songs-mode-abbrev-table local-abbrev-table #1# mpc-songs-format mpc-songs-format-description] 6 (#$ . 63779) nil])
(defalias 'mpc-songpointer-set #[(pos) "\305p\306\"\211\205(	\206(\307\n!\205(\310\n!p=\205(\311!\nX\205(\n\312!W\313\302!\2046\314\302!\210\315 \n\f\316\223\210\205X\f\205X\311!\fV\204T\f\312\306\"Y\205X\317\f\"*\207" [win mpc-songpointer-set-visible overlay-arrow-position visible pos get-buffer-window t markerp marker-buffer window-start window-end local-variable-p make-local-variable make-marker nil set-window-point] 5])
(defalias 'mpc-songpointer-refresh #[nil "\304\305 \306\"\307!\205Brq\210\310ed\311\312\313	\236A!$\211\2052\212\nb\210\310\314\315!d\311\312\313	\236A!$)\211\203>\316\317\320\"\202A\321\n!+)\207" [buf mpc-status pos other mpc-proc-buffer mpc-proc songs buffer-live-p text-property-any mpc-file mpc-songs-hashcons file line-beginning-position 2 mpc-proc-cmd "playlist" mpc-songpointer-refresh-hairy mpc-songpointer-set] 8])
(defalias 'mpc-songpointer-context #[(size plbuf) "rq\210eb\210\306\307	\236A\206\310!y\210\311\211\212\f\312
W\203;\313\314\311\315#\2034\316\317\320!!B
T\211\202+\320y\210\f\312
W\203b\321\314\311\315#\203[\316\317\320!!\nB
T\211\202E*G\fW\205n\nG\fW?\205w\237\n\237B+\207" [plbuf mpc-status context-after context-before size i string-to-number song "0" nil 0 re-search-backward "^[0-9]+:\\(.*\\)" t mpc-songs-hashcons match-string 1 re-search-forward #1=#:--cl-dotimes-temp-- #2=#:--cl-dotimes-temp--] 5])
(defalias 'mpc-songpointer-score #[(context pos) "\306	b\210\n@\307\211\203+\f@\310\311y!\203$\312`\313\"=\203$T\fA\211\204*	b\210\nA\307\211\203U
@\310\314y!\203N\312`\313\"=\203NT
A\211\2048*)\207" [count pos context song #1=#:--cl-dolist-temp-- #2=#:--cl-dolist-temp-- 0 nil zerop -1 get-text-property mpc-file 1] 4])
(defalias 'mpc-songpointer-refresh-hairy #[nil "p\306\307 \310\"\311!\205\231rq\210\312\313\314ed\315\316\317\f\236A!$\312
\212b\210\314\320\321!d\315\316\317\f\236A!$)\211\203\224\322\"\211W\204\220V\203a\202\220\nW\204\220\nT\323\n	\"\211\204{\nS\202\217\322
\"\212b\210\320\312!)))\202(\324
!.*\207" [buf plbuf context-size context mpc-status pos mpc-proc-buffer mpc-proc songs buffer-live-p 0 (nil) text-property-any mpc-file mpc-songs-hashcons file line-beginning-position 2 mpc-songpointer-score mpc-songpointer-context mpc-songpointer-set score other other-score new-context] 8])
(defalias 'mpc-current-refresh #[nil "\302 \210\303\236\205\n\304\305\306\307\217\210\310\311!\207" [mpc-status mpc-current-updating mpc-status-buffer-refresh updating_db " Updating-DB" nil (byte-code "\302\236\205\303\304\305\236A!\303\306\236A\307\310\236A\311\312\236A\313\260	\302\207" [mpc-status mpc-current-song file " " mpc-secs-to-time time Title " (" Artist " / " Album ")"] 9) ((error)) force-mode-line-update t] 3])
(defalias 'mpc-songs-buf #[nil "\301\302 \303\"\304!\203\202$r\305\306!\211q\210\301\302 \303#\210\307 \210))\207" [buf mpc-proc-buffer mpc-proc songs buffer-live-p get-buffer-create "*MPC-Songs*" mpc-songs-mode] 4])
#@35 Tell MPD to refresh its database.
(defalias 'mpc-update #[nil "\300 \207" [mpc-cmd-update] 1 (#$ . 69510) nil])
#@27 Quit Music Player Daemon.
(defalias 'mpc-quit #[nil "\306\307	\205\f\310	\311\"\"\306\312\n\"\313 \314\314\211\203D@\211\203;\315!
>\204;\315!
BA\211\204\"*
\203i\f\203ir\fq\210)\203i\316
@!\210\317r\fq\210)!\210\202\270
\314\211\203\267@\320\321!\314\211\203\242@\322!\n>\204\231\314A\211\204\210*\203\255\314\323\324\217\210)A\211\204s*\325\326\n\"\210\327 \210	\205\307\330	!-\207" [mpc-proc proc bufs wins song-buf frames mapcar cdr process-get buffers #[(buf) "\301\302\"\207" [buf get-buffer-window 0] 3] mpc-songs-buf nil window-frame select-frame set-window-configuration t window-list window-buffer (delete-frame frame) ((error)) mapc kill-buffer mpc-status-stop delete-process win #1=#:--cl-dolist-temp-- mpc-previous-window-config frame #2=#:--cl-dolist-temp-- delete #3=#:--cl-dolist-temp--] 5 (#$ . 69628) nil])
#@42 Stop playing the current queue of songs.
(defalias 'mpc-stop #[nil "\300 \210\301 \210\302 \207" [mpc-cmd-stop mpc-cmd-clear mpc-status-refresh] 1 (#$ . 70538) nil])
#@16 Pause playing.
(defalias 'mpc-pause #[nil "\300\301!\207" [mpc-cmd-pause "1"] 2 (#$ . 70710) nil])
#@17 Resume playing.
(defalias 'mpc-resume #[nil "\300\301!\207" [mpc-cmd-pause "0"] 2 (#$ . 70815) nil])
#@37 Start playing whatever is selected.
(defalias 'mpc-play #[nil "\300\301 \236A\302\235\203
\303 \207\304 \210\305 \203\"\300\301 \236A\306\235\205%\307 \207\310\311!\207" [state mpc-cmd-status ("pause") mpc-resume mpc-cmd-clear mpc-playlist-add ("stop") mpc-cmd-play error "Don't know what to play"] 2 (#$ . 70922) nil])
#@37 Jump to the next song in the queue.
(defalias 'mpc-next #[nil "\300\301!\210\302 \207" [mpc-proc-cmd "next" mpc-status-refresh] 2 (#$ . 71251) nil])
#@69 Jump to the beginning of the current song, or to the previous song.
(defalias 'mpc-prev #[nil "\301\236A\211\203\302	!\303V\203\304\305\306\236A\303E!\210\202\"\304\307!\210\310 )\207" [mpc-status time string-to-number 0 mpc-proc-cmd "seekid" songid "previous" mpc-status-refresh] 5 (#$ . 71406) nil])
(byte-code "\301B\302\301!\204\303\301\304\"\210\301\207" [current-load-list mpc-last-seek-time default-boundp set-default (0 . 0)] 3)
#@15 Fast forward.
(defalias 'mpc--faster #[(event speedup step) "\306\307!!	\245\310\311!>\204j\312 \211
@Z\211%\313\n_W?\205f%\314W\203.&\2020\315 '\316'\236A\211\205P%\317W\203I
A\202P\320\321'\236A!\f\\\211B\322\323E\324\"+*\202\310\315 '\325\326!\211(\316'\236AL\210\325\327!\211)L\210\325\330!\211*(J\205\227\320\321'\236A!L\210\331\332\n\333\334\335\336\337*D\337)D\337(D\340\257E#+\341\342 \211!\211,\242)\343=\204\263\344+!-)\207" [step speedup repeat-delay event currenttime mpc-last-seek-time abs float down event-modifiers float-time 0.9 1.0 mpc-cmd-status songid 1.0 string-to-number time mpc-proc-cmd "seekid" mpc-status-refresh make-symbol "--songid--" "--step--" "--time--" run-with-timer t lambda (&rest --cl-rest--) apply #[(#1=#:G6708 #2=#:G6709 #3=#:G6710) "\303\304J	\211J\nJ\\LE\305\"\207" [#3# #1# #2# mpc-proc-cmd "seekid" mpc-status-refresh] 6] quote --cl-rest-- event-basic-type read-event mouse-movement cancel-timer last-time mpc-status status #4=#:--cl-songid-- #5=#:--cl-step-- #6=#:--cl-time-- timer object] 12 (#$ . 71861) (list last-nonmenu-event)])
(byte-code "\301B\302\301!\204\303\301\304\"\210\304\207" [current-load-list mpc--faster-toggle-timer default-boundp set-default nil] 3)
(defalias 'mpc--faster-stop #[nil "\205\301!\210\302\211\207" [mpc--faster-toggle-timer cancel-timer nil] 2])
(defalias 'mpc--faster-toggle-refresh #[nil "\301\236A\302\232\205\303 \207" [mpc-status state "stop" mpc--faster-stop] 2])
(defalias 'mpc--songduration #[nil "\302\303\236A\304\305	\"\204\306\307	\"\202	\310\225\311O)!\207" [mpc-status s string-to-number time string-match ":" error "Unexpected time format %S" 0 nil] 4])
(byte-code "\301B\302\301!\204\303\301\304\"\210\305B\302\305!\204\303\305\306\"\210\304\207" [current-load-list mpc--faster-toggle-forward default-boundp set-default nil mpc--faster-acceleration 0.5] 3)
(defalias 'mpc--faster-toggle #[(speedup step) "\306!	\203\307 \207\310 \210\311 \210\312\313!\211L\210\312\314!\211\315L\210\312\316!\211\315L\210\312\317!\211\315L\210\312\320!\211\315L\210\312\321!\211\315L\210\312\322!\211\315L\210\323\324\325\326\327D\327D\327D\327
D\327\fD\327D\327\nD\330\257\nE !\331V\"  \210\332\333\334 #\211.\207" [speedup mpc--faster-toggle-timer #1=#:--cl-speedup-- #2=#:--cl-songid-- #3=#:--cl-songnb-- #4=#:--cl-songduration-- float mpc--faster-stop mpc-status-refresh mpc-proc-sync make-symbol "--speedup--" "--songid--" nil "--songnb--" "--songduration--" "--songtime--" "--oldtime--" "--prevsongid--" lambda #12=(&rest --cl-rest--) apply #[(#5=#:G6725 #6=#:G6726 #7=#:G6727 #8=#:G6728 #9=#:G6729 #10=#:G6730 #11=#:G6731) "\306\236A\307\236AJ\n\232\203J\fJ\232\204\fJ\n\204&\310 \210\202\363\fJ\n\232\204I\f\nL\210
\311\312\236A!L\210\313 L\210 \314 L\210\202\363
JJY\203h!\203h\315\236A\316\232\204\363\317\320\321\"\210\202\363
J\322X\203\241!\204\241\fJL\210\317\323\324\325\326\327\330D\330 D\330
D\330D\330\"D\330\fD\330#D\331\257\nE\"\210\202\363#\211J$\\L\210\332#J\314  JZ_!\211%\333X\203\301\333% \211J%#J\245\\L\210!\204\330%[%
J
J%\\^L\210
JJY\204\362\334\335\336\217\210)\"	L*\207" [mpc-status newsongnb newsongid #5# #10# #7# songid song mpc--faster-stop string-to-number time mpc--songduration float-time state "play" mpc-proc-cmd "next" mpc-status-refresh 0 "previous" lambda #12# apply #[(#13=#:G6718 #14=#:G6719 #15=#:G6720 #16=#:G6721 #17=#:G6722 #18=#:G6723 #19=#:G6724) "\306\307\310\311\312\313D\313	D\313\nD\313D\313\fD\313
D\313
D\314\257\nE!\207" [#13# #14# #15# #16# #17# #18# mpc-status-refresh lambda #12# apply #[(#20=#:G6711 #21=#:G6712 #22=#:G6713 #23=#:G6714 #24=#:G6715 #25=#:G6716 #26=#:G6717) "\305	\236AL\210\n\306 LL\210\f\307 L\210\310\311J\nJE!\207" [#25# mpc-status #22# #23# #21# songid mpc--songduration float-time mpc-proc-cmd "seekid"] 4] quote --cl-rest-- #19#] 13] quote --cl-rest-- truncate 1 nil (byte-code "\302\303J	JE\304\"\207" [#10# #7# mpc-proc-cmd "seekid" mpc-status-refresh] 4) ((mpc-proc-error (mpc-status-refresh))) #8# #6# mpc--faster-toggle-forward #9# #11# mpc--faster-acceleration newstep] 15] quote --cl-rest-- 0 run-with-timer t 0.3 #27=#:--cl-songtime-- #28=#:--cl-oldtime-- #29=#:--cl-prevsongid-- fun step mpc--faster-toggle-forward] 13])
(byte-code "\301B\302\301!\204\303\301\304\"\210\301\207" [current-load-list mpc-faster-speedup default-boundp set-default 8] 3)
#@15 Fast forward.
(defalias 'mpc-ffwd #[(event) "\301\302\"\207" [mpc-faster-speedup mpc--faster-toggle 1] 3 (#$ . 76365) (list last-nonmenu-event)])
#@14 Fast rewind.
(defalias 'mpc-rewind #[(event) "\301\302\"\207" [mpc-faster-speedup mpc--faster-toggle -1] 3 (#$ . 76518) (list last-nonmenu-event)])
(defalias 'mpc-play-at-point #[(&optional event) "\301!\210\302 \207" [event mpc-select mpc-play] 2 nil (list last-nonmenu-event)])
#@24 DWIM for a drag EVENT.
(defalias 'mpc-drag-n-drop #[(event) "\211:\203
A@\202\306 `\307\310F)\211:\203-\3118:\203'\311\202(\3128\2023\306 `\307\310F)\313	\211@)!\313\n\211@)!r\fq\210	\3148\206bA@:\203_A@@\202bA@)b\210\315`\316\"\203q\317 \202\247\320\321!\203\213\315`\322\"\203\213\315`\322\"\315`\323\"BC\202\247-\203\244\324 \204\244\325\326\327-\330 \331 {\"\"\202\247\332\333!).r
q\210\n\3148\206\307A@:\203\304A@@\202\307A@)b\210-\334=\203\324 \204\336n\203\344l\203\344\332\335!\202\351\330 \331 {/\336\325\337.\"/\"\210\340\341.G/#\210/\334\342 \236A\235\205\343 )\202\252\320\321!\203\2470\204!\332\344!\210\202\242\f
=\203D\315`\323\"1\345\325\346.\"10#\210\340\347.G\"\210)\202\242\315`\323\"0;\203V\327\3340\"\202Y\350\351!21\336\325\337.\"0\"\210\345\3523.G\3104545W\203\21742G\\3B34T\2114\202u*3\237)10#\210\340\353.G\"\210*\343 \202\252\332\354!.\207" [event start end position start-buf end-buf selected-window (0 . 0) 0 2 1 window-buffer 5 get-text-property mpc-select mpc-songs-selection derived-mode-p mpc-songs-mode mpc-file mpc-file-pos mpc-tagbrowser-all-p mapcar #[(song) "\301\236AC\207" [song file] 2] mpc-cmd-find line-beginning-position line-end-position error "Unsupported starting position for drag'n'drop gesture" Playlist "Not a playlist" mpc-cmd-add car message "Added %d songs to %s" mpc-constraints-get-current mpc-songs-refresh "The songs shown do not belong to a playlist" mpc-cmd-move cdr "Moved %d songs" mpc-proc-cmd-to-alist "playlist" nil "Added %d songs" "Unsupported drag'n'drop gesture" mpc-tag songs playlist mpc-songs-playlist dest-pos pl poss i #1=#:--cl-dotimes-temp--] 7 (#$ . 76806) "e"])
#@46 Alist of frame parameters for the MPC frame.
(custom-declare-variable 'mpc-frame-alist ''((name . "MPC") (tool-bar-lines . 1) (font . "Sans")) '(#$ . 78554) :type 'alist)
#@27 Main entry point for MPC.
(defalias 'mpc #[nil "\306 \307\310\"\211\203\311	!\210\202r\312\313 !\204\314 \203'\315\316\317\217\210\2023rq\210\320\302!\210\321 )\313 \322 
\211\204D\323\324!\210\325\f\"\210\326\f\327\"\210\330 \210\325\331\211A@!\"\210\326\327\"\210\203q\322\315\332#\202Q+\333 \210*\334 \210\335 \207" [song-buf song-win mpc-previous-window-config win1 win2 mpc-browser-tags mpc-songs-buf get-buffer-window 0 select-window window-dedicated-p selected-window window-minibuffer-p nil (byte-code "\301\302!!\207" [mpc-frame-alist select-frame make-frame] 3) ((error)) make-local-variable current-window-configuration split-window error "Need at least one entry in `mpc-browser-tags'" set-window-buffer set-window-dedicated-p soft mpc-status-buffer-show mpc-tagbrowser-buf horiz balance-windows-area mpc-songs-refresh mpc-status-refresh tags] 6 (#$ . 78731) (byte-code "\203\302\303\304\211	$\304\207" [current-prefix-arg mpc-host read-string "MPD host and port: " nil] 5)])
(provide 'mpc)
