;ELC ;;; Compiled by heimdall@baldur on Fri Feb 1 18:34:47 2008 ;;; from file /home/heimdall/repos/emms/emms-browser.el ;;; in Emacs version 23.0.60.1 ;;; with all optimizations. ;;; This file uses dynamic docstrings, first added in Emacs 19.29. (if (and (boundp 'emacs-version) (< (aref emacs-version (1- (length emacs-version))) ?A) (or (and (boundp 'epoch::version) epoch::version) (string-lessp emacs-version "19.29"))) (error "`emms-browser.el' was compiled for Emacs 19.29 or later")) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (byte-code "\300\301!\210\300\302!\210\300\303!\210\300\304!\210\300\305!\210\306\307\310\311\312\313\314\315\314\316& \207" [require emms emms-cache emms-source-file emms-playlist-sort sort custom-declare-group emms-browser nil "*The Emacs Multimedia System browser" :prefix "emms-browser-" :group multimedia applications] 10) #@29 *The default browsing mode. (custom-declare-variable 'emms-browser-default-browse-type ''info-artist '(#$ . -915) :group 'emms-browser :type 'function) #@190 *A function to make names for entries and subentries. Overriding this function allows you to customise how various elements are displayed. It is called with two arguments - track and type. (custom-declare-variable 'emms-browser-make-name-function ''emms-browser-make-name-standard '(#$ . -1074) :group 'emms-browser :type 'function) #@338 *A function to get an element from a track. Change this to customize the way data is organized in the browser. For example, `emms-browser-get-track-field-use-directory-name' uses the directory name to determine the artist. This means that soundtracks, compilations and so on don't populate the artist view with lots of 1-track elements. (custom-declare-variable 'emms-browser-get-track-field-function ''emms-browser-get-track-field-simple '(#$ . -1414) :group 'emms-browser :type 'function) #@282 *Control how cover images are found. Can be either a list of small, medium and large images (large currently not used), a function which takes a directory and one of the symbols `small', `medium' or `large', and should return a path to the cover, or nil to turn off cover loading. (custom-declare-variable 'emms-browser-covers ''("cover_small.jpg" "cover_med.jpg" "cover_large.jpg") '(#$ . -1912) :group 'emms-browser :type '(choice list function boolean)) #@58 *A list of default images to use if a cover isn't found. (custom-declare-variable 'emms-browser-default-covers 'nil '(#$ . -2375) :group 'emms-browser :type 'list) #@93 *A method for comparing entries in the cache. The default is to compare case-insensitively. (custom-declare-variable 'emms-browser-comparison-test '(if (fboundp 'define-hash-table-test) 'case-fold 'equal) '(#$ . -2545) :group 'emms-browser :type 'symbol) #@61 *How to sort tracks in the browser. Ues nil for no sorting. (custom-declare-variable 'emms-browser-track-sort-function ''emms-sort-natural-order-less-p '(#$ . -2806) :group 'emms-browser :type 'function) #@74 *How to sort artists/albums/etc. in the browser. Use nil for no sorting. (custom-declare-variable 'emms-browser-alpha-sort-function ''string< '(#$ . -3016) :group 'emms-browser :type 'function) #@74 *How to sort artists/albums/etc. in the browser. Use nil for no sorting. (custom-declare-variable 'emms-browser-album-sort-function ''emms-browser-sort-by-year-or-name '(#$ . -3216) :group 'emms-browser :type 'function) #@63 *Hooks to run when starting or switching to a browser buffer. (custom-declare-variable 'emms-browser-show-display-hook 'nil '(#$ . -3442) :group 'emms-browser :type 'hook) #@58 *Hooks to run when burying or removing a browser buffer. (custom-declare-variable 'emms-browser-hide-display-hook 'nil '(#$ . -3620) :group 'emms-browser :type 'hook) #@54 *Hooks to run when tracks are added to the playlist. (custom-declare-variable 'emms-browser-tracks-added-hook 'nil '(#$ . -3793) :group 'emms-browser :type 'hook) #@58 *Given a track, return t if the track should be ignored. (custom-declare-variable 'emms-browser-filter-tracks-hook 'nil '(#$ . -3962) :group 'emms-browser :type 'hook) #@41 *Hook run after the filter has changed. (custom-declare-variable 'emms-browser-filter-changed-hook 'nil '(#$ . -4136) :group 'emms-browser :type 'hook) #@143 *Hook run after files have been deleted. This hook can be used to clean up extra files, such as album covers. Called once for each directory. (custom-declare-variable 'emms-browser-delete-files-hook 'nil '(#$ . -4295) :group 'emms-browser :type 'hook) #@37 The current browser buffer, if any. (defvar emms-browser-buffer nil (#$ . 4553)) #@26 The default buffer name. (defvar emms-browser-buffer-name "*EMMS Browser*" (#$ . 4640)) #@46 The current mapping db, eg. artist -> track. (defvar emms-browser-top-level-hash nil (#$ . 4734)) (make-variable-buffer-local 'emms-browser-top-level-hash) #@45 The current mapping type, eg. 'info-artist. (defvar emms-browser-top-level-type nil (#$ . 4896)) (make-variable-buffer-local 'emms-browser-top-level-hash) #@61 Used to override the current indent, for the playlist, etc. (defvar emms-browser-current-indent nil (#$ . 5057)) #@50 The name of the current filter in place, if any. (defvar emms-browser-current-filter-name nil (#$ . 5176)) #@33 Keymap for `emms-browser-mode'. (defconst emms-browser-mode-map (byte-code "\301 \302\303\304#\210\302\305\306#\210\302\307\310#\210\302\311\312#\210\302\313\314#\210\302\315\316#\210\302\317\320#\210\302\321\322#\210\302\323\324#\210\302\325\326#\210\302\327\330#\210\302\331\330#\210\302\332\333#\210\302\334\335#\210\302\336\337#\210\302\340\341#\210\302\342\343#\210\302\344\345#\210\302\346\347#\210\302\350\351#\210\302\352\353#\210\302\354\355#\210\302\356\357#\210\302\360\361#\210\302\362\363#\210\302\364\365#\210\302\366\367#\210\302\370\371#\210\302\372\373#\210\302\374\375#\210\302\376\377#\210\302\201@\201A#\210\302\201B\201C#\210\302\201D\201E#\210\302\201F\201G#\210\302\201H\201I#\210\302\201J\201K#\210\302\201L\201M#\210\302\201N\201O#\210\302\201P\201Q#\210\302\201R\201S#\210\302\201T\201U#\210\302\201V\201W#\210)\207" [map make-sparse-keymap define-key "q" emms-browser-bury-buffer "/" emms-isearch-buffer "r" emms-browser-goto-random "n" next-line "p" previous-line "C" emms-browser-clear-playlist "?" describe-mode [67108911] emms-playlist-mode-undo " " emms-browser-toggle-subitems " " emms-browser-add-tracks [C-return] emms-browser-add-tracks-and-play "\n" [tab] emms-browser-next-non-track [backtab] emms-browser-prev-non-track "d" emms-browser-view-in-dired "D" emms-browser-delete-files "E" emms-browser-expand-all "1" emms-browser-collapse-all "2" emms-browser-expand-to-level-2 "3" emms-browser-expand-to-level-3 "4" emms-browser-expand-to-level-4 "b1" emms-browse-by-artist "b2" emms-browse-by-album "b3" emms-browse-by-genre "b4" emms-browse-by-year "b5" emms-browse-by-composer "b6" emms-browse-by-performer "sa" emms-browser-search-by-artist "sc" emms-browser-search-by-composer "sp" emms-browser-search-by-performer "sA" emms-browser-search-by-album "st" emms-browser-search-by-title "ss" emms-browser-search-by-names "WAw" emms-browser-lookup-artist-on-wikipedia "WAp" emms-browser-lookup-artist-on-pitchfork "WCw" emms-browser-lookup-composer-on-wikipedia "WCp" emms-browser-lookup-composer-on-pitchfork "WPw" emms-browser-lookup-performer-on-wikipedia "WPp" emms-browser-lookup-performer-on-pitchfork "Waw" emms-browser-lookup-album-on-wikipedia "Wap" emms-browser-lookup-album-on-pitchfork ">" emms-browser-next-filter "<" emms-browser-previous-filter] 4) (#$ . 5289)) #@33 Keymap for `emms-browser-mode'. (defconst emms-browser-search-mode-map (byte-code "\302 \303 \"\210\304\305\306#\210)\207" [map emms-browser-mode-map make-sparse-keymap set-keymap-parent define-key "q" emms-browser-kill-search] 4) (#$ . 7677)) (byte-code "\300\301!\203\302\303\301\"\210\202\303\304M\210\305\303\306\307#\210\305\303\310\311#\210\300\312!\203,\302\313\312\"\210\2021\302\313\314\"\210\300\207" [fboundp with-selected-window defalias emms-browser-with-selected-window (macro . #[(window &rest body) "\301D\207" [body save-selected-window] 2]) put lisp-indent-function 1 edebug-form-spec (form body) run-mode-hooks emms-browser-run-mode-hooks run-hooks] 4) #@39 Launch or switch to the EMMS Browser. (defalias 'emms-browser #[nil "\301!\207" [emms-browser-default-browse-type emms-browser-create-or-focus] 2 (#$ . 8366) nil]) #@169 Create a new browser buffer with BROWSE-FUNC, or switch. BROWSE-FUNC should fill the buffer with something of interest. An example function is `emms-browse-by-artist'. (defalias 'emms-browser-create-or-focus #[(type) "\303 \304\211\203\"\305 !\211\203\306!\210\202\307 !\210\310\311!\202(\312 \210\313\n!*\207" [wind buf type emms-browser-get-buffer nil get-buffer-window select-window switch-to-buffer emms-browser-run-mode-hooks emms-browser-show-display-hook emms-browser-create emms-browse-by] 3 (#$ . 8538)]) #@63 Create a new emms-browser buffer and start emms-browser-mode. (defalias 'emms-browser-create #[nil "\300 \210\301 \210\302\303!\207" [emms-browser-new-buffer emms-browser-mode emms-browser-run-mode-hooks emms-browser-show-display-hook] 2 (#$ . 9068)]) #@61 A major mode for the Emms browser. \{emms-browser-mode-map} (defalias 'emms-browser-mode #[(&optional no-update) "\306!\210\307\310\311\f?\205p\211\207" [emms-browser-mode-map major-mode mode-name buffer-read-only no-update emms-browser-buffer use-local-map emms-browser-mode "Emms-Browser" t] 2 (#$ . 9326) nil]) #@48 Create a new browser buffer, and switch to it. (defalias 'emms-browser-new-buffer #[nil "\301\302!!\207" [emms-browser-buffer-name switch-to-buffer generate-new-buffer] 3 (#$ . 9653)]) #@52 Create or switch to a browser buffer, clearing it. (defalias 'emms-browser-clear #[nil "\302 \211\203\303!\210\304ed|)\202\305 )\207" [buf inhibit-read-only emms-browser-get-buffer switch-to-buffer t emms-browser-create] 3 (#$ . 9845)]) #@49 Return the current buffer if it exists, or nil. (defalias 'emms-browser-get-buffer #[nil "?\206 \301!??\205\207" [emms-browser-buffer buffer-live-p] 2 (#$ . 10095)]) (defalias 'emms-browser-ensure-browser-buffer #[nil "\301=?\205\n\302\303!\207" [major-mode emms-browser-mode error "Current buffer is not an emms-browser buffer"] 2]) #@41 Bury the browser buffer, running hooks. (defalias 'emms-browser-bury-buffer #[nil "\300\301!\210\302 \207" [emms-browser-run-mode-hooks emms-browser-hide-display-hook bury-buffer] 2 (#$ . 10443) nil]) #@53 Create an interactive function emms-browse-by-NAME. (defalias 'emms-browser-add-category '(macro . #[(name type) "\304\305P!\306\307Q\310\n\311 \312\313 D\257*\207" [name funcdesc funname type intern "emms-browse-by-" "Browse by " "." defun nil (interactive) emms-browse-by] 7 (#$ . 10650)])) #@42 Render a top level buffer based on TYPE. (defalias 'emms-browse-by #[(type) "\306!\307\310O\311 P\312!\f\203\n\313\f\314R\315 \210\316\n!\210\317 \"\210 \320 !\321V\2045\322 \210eb+\207" [type name modedesc hash emms-browser-current-filter-name emms-browser-top-level-hash symbol-name 5 nil "Browsing by: " emms-browser-make-hash-by " [" "]" emms-browser-clear rename-buffer emms-browser-render-hash hash-table-count 0 emms-browser-show-empty-cache-message emms-browser-top-level-type] 4 (#$ . 10954)]) #@19 Browse by artist. (defalias 'emms-browse-by-artist #[nil "\300\301!\207" [emms-browse-by info-artist] 2 (#$ . 11477) nil]) #@21 Browse by composer. (defalias 'emms-browse-by-composer #[nil "\300\301!\207" [emms-browse-by info-composer] 2 (#$ . 11606) nil]) #@22 Browse by performer. (defalias 'emms-browse-by-performer #[nil "\300\301!\207" [emms-browse-by info-performer] 2 (#$ . 11741) nil]) #@18 Browse by album. (defalias 'emms-browse-by-album #[nil "\300\301!\207" [emms-browse-by info-album] 2 (#$ . 11879) nil]) #@18 Browse by genre. (defalias 'emms-browse-by-genre #[nil "\300\301!\207" [emms-browse-by info-genre] 2 (#$ . 12005) nil]) #@17 Browse by year. (defalias 'emms-browse-by-year #[nil "\300\301!\207" [emms-browse-by info-year] 2 (#$ . 12131) nil]) #@107 Return TYPE from TRACK. This can be customized to group different artists into one for compilations, etc. (defalias 'emms-browser-get-track-field #[(track type) " \n\"\207" [emms-browser-get-track-field-function track type] 3 (#$ . 12255)]) (defalias 'emms-browser-get-track-field-simple #[(track type) "\302 \303#\207" [track type emms-track-get "misc"] 4]) (defalias 'emms-browser-get-track-field-use-directory-name #[(track type) "\302=\203\n\303 !\207\304 \305#\207" [type track info-artist emms-browser-get-artist-from-path emms-track-get "misc"] 4]) (defalias 'emms-browser-get-artist-from-path #[(track) "\304\305\"\306 !\307\310\306\n!!!\311 \312\"@+\207" [track path dir basedir emms-track-get name file-name-directory file-name-nondirectory directory-file-name split-string " - "] 4]) #@54 Make a hash, mapping with TYPE, eg artist -> tracks. (defalias 'emms-browser-make-hash-by #[(type) "\305\306\"\307\211\310\311\f\"\210 +\207" [emms-browser-comparison-test existing-entry field hash emms-cache-db make-hash-table :test nil maphash #[(path track) "\305\306\"?\205$\307 \"\310\n \"\211\203\311\n\fB #\207\311\nC #\207" [track type field hash existing-entry run-hook-with-args-until-success emms-browser-filter-tracks-hook emms-browser-get-track-field gethash puthash] 5]] 3 (#$ . 13065)]) #@46 Render a mapping (DB) into a browser buffer. (defalias 'emms-browser-render-hash #[(db type) "\303\304\"\210\305\211\306\307ed#*\207" [db inhibit-read-only sort-fold-case maphash #[(desc data) "\303 \n#\207" [desc data type emms-browser-insert-top-level-entry] 4] t sort-lines nil] 5 (#$ . 13586)]) (defalias 'case-fold-string= #[(a b) "\302\303\211 \303\211\304&\207" [a b compare-strings nil t] 8]) (defalias 'case-fold-string-hash #[(a) "\301\226!\207" [a sxhash] 2]) (byte-code "\300\301!\203\f\301\302\303\304#\210\300\207" [fboundp define-hash-table-test case-fold case-fold-string= case-fold-string-hash] 4) #@50 Insert a single top level entry into the buffer. (defalias 'emms-browser-insert-top-level-entry #[(name tracks type) "\304 \210\305\306 \n$\307 !)\207" [type tracks name bdata emms-browser-ensure-browser-buffer emms-browser-make-bdata-tree 1 emms-browser-insert-format] 5 (#$ . 14215)]) #@42 Display some help if the cache is empty. (defalias 'emms-browser-show-empty-cache-message #[nil "\301\302c)\207" [inhibit-read-only t "\nWelcome to EMMS.\n\nThere are currently no files in the EMMS database.\nTo browse music, you need to tell EMMS where your\nfiles are.\n\nTry the following commands:\n\n M-x emms-add-directory-tree:\n Add all music in a directory and its subdirectories.\n\n M-x emms-add-directory:\n Add all music in a directory\n\n M-x emms-add-file: Add a single music file.\n\nAfter you have added some files, wait for EMMS to say\n'all track information loaded,' then return to the\nbrowser, and hit 'b 1' to refresh."] 1 (#$ . 14510)]) #@105 Return the next sensible mapping. Eg. if CURRENT-MAPPING is currently 'info-artist, return 'info-album. (defalias 'emms-browser-next-mapping-type #[(current-mapping) "\301=\203\302\207\303=\203\302\207\304=\203\302\207\302=\203 \305\207\306=\203(\301\207\307=\205/\301\207" [current-mapping info-artist info-album info-composer info-performer info-title info-genre info-year] 2 (#$ . 15181)]) #@49 Build a tree of browser DB elements for tracks. (defalias 'emms-browser-make-bdata-tree #[(type level tracks name) "\304\305 \n#  $\207" [type level tracks name emms-browser-make-bdata emms-browser-make-bdata-tree-recurse] 5 (#$ . 15595)]) #@150 Build a tree of alists based on a list of tracks, TRACKS. For example, if TYPE is 'info-year, return an alist like: artist1 -> album1 -> *track* 1.. (defalias 'emms-browser-make-bdata-tree-recurse #[(type level tracks) "\306!\nT\307\211\307\211\f \310=\203\202&\311 \"\312\313\f\".\207" [type next-type level next-level alist name emms-browser-next-mapping-type nil info-title emms-browser-make-sorted-alist mapcar #[(entry) "\305 \"A\306\307 \f #\n \f$\207" [entry next-type name new-tracks next-level emms-browser-make-name emms-browser-make-bdata emms-browser-make-bdata-tree-recurse] 5] new-db new-tracks tracks] 4 (#$ . 15844)]) #@58 Return a name for ENTRY, used for making a bdata object. (defalias 'emms-browser-make-name #[(entry type) "@\211A@)\306\211 \307=\2032\310\f\311\"\310\f\307\" \203'\n\204+ \2023 \312\nQ\2023 ,\207" [entry x title artist track key nil info-title emms-track-get info-artist " - " type] 5 (#$ . 16505)]) #@140 Return a string representation of a track number. The string will end in a space. If no track number is available, return an empty string. (defalias 'emms-browser-track-number #[(track) "\302\303\"\211;\203 \304\230\203\305\202$ G\306=\203!\304 P\202\" \260)\207" [track tracknum emms-track-get info-tracknumber "0" "" 1] 4 (#$ . 16828)]) #@87 Return a string representation of a track's year. This will be in the form '(1998) '. (defalias 'emms-browser-year-number #[(track) "\302\303\"\211;\203 \304\230\203\305\202\306 \307Q)\207" [track year emms-track-get info-year "0" "" "(" ") "] 4 (#$ . 17183)]) #@262 Return a browser data item from ALIST. DATA should be a list of DB items, or a list of tracks. NAME is a name for the DB item. TYPE is a category the data is organised by, such as 'info-artist. LEVEL is the number of the sublevel the db item will be placed in. (defalias 'emms-browser-make-bdata #[(data name type level) "\300B\301 B\302\nB\303 BF\207" [type level name data] 5 (#$ . 17459)]) #@99 Make an alist mapping of TYPE -> TRACKS. Items with no metadata for TYPE will be placed in 'misc' (defalias 'emms-browser-make-alist #[(type tracks) "\306\211\211\211\f\306\211\203]@\307 \"\310=\203:\311 !\211\312\230\2036\313\314 \315\"!\202:\nP\316\n \"\211\203M AB\241\210\202T\n CB BA\211\204* \306\211\203|@\211\211A\237\241\210A\211\204h* ,\207" [tracknum existing key db tracks track nil emms-browser-get-track-field info-title emms-browser-track-number "" file-name-nondirectory emms-track-get name assoc #1=#:--cl-dolist-temp-- type item #2=#:--cl-dolist-temp--] 5 (#$ . 17859)]) #@138 Return a sorted alist of TRACKS. TYPE is the metadata to make the alist by - eg. if it's 'info-artist, an alist of artists will be made. (defalias 'emms-browser-make-sorted-alist #[(type tracks) "\302\303 \"\"\207" [type tracks emms-browser-sort-alist emms-browser-make-alist] 4 (#$ . 18504)]) (defalias 'emms-browser-bdata-level #[(bdata) "\301\236A\207" [bdata level] 2]) (defalias 'emms-browser-bdata-name #[(bdata) "\301\236A\207" [bdata name] 2]) (defalias 'emms-browser-bdata-type #[(bdata) "\301\236A\207" [bdata type] 2]) (defalias 'emms-browser-bdata-data #[(bdata) "\301\236A\207" [bdata data] 2]) #@32 True if obj is a BDATA object. (defalias 'emms-browser-bdata-p #[(obj) "\301\236:\207" [obj data] 2 (#$ . 19124)]) #@206 Return a function to sort an alist using SORT-FUNC. This sorting predicate will compare the cadr of each entry. SORT-FUNC should be a playlist sorting predicate like `emms-playlist-sort-by-natural-order'. (defalias 'emms-browser-sort-cadr '(macro . #[(sort-func) "\301\302\303\304BBE\207" [sort-func lambda (a b) funcall ((cadr a) (cadr b))] 5 (#$ . 19247)])) #@205 Return a function to sort an alist using SORT-FUNC. This sorting predicate will compare the car of each entry. SORT-FUNC should be a playlist sorting predicate like `emms-playlist-sort-by-natural-order'. (defalias 'emms-browser-sort-car '(macro . #[(sort-func) "\301\302\303\304BBE\207" [sort-func lambda (a b) funcall ((car a) (car b))] 5 (#$ . 19615)])) #@85 Sort an ALIST by the tracks in each entry. Uses `emms-browser-track-sort-function'. (defalias 'emms-browser-sort-by-track #[(alist) "\203 \302 \303\"\207 \207" [emms-browser-track-sort-function alist sort #[(a b) " \211A@) \211A@)\"\207" [emms-browser-track-sort-function a x b] 4]] 3 (#$ . 19978)]) #@77 Sort ALIST by keys alphabetically. Uses `emms-browser-alpha-sort-function'. (defalias 'emms-browser-sort-by-name #[(alist) "\203 \302 \303\"\207 \207" [emms-browser-alpha-sort-function alist sort #[(a b) " @\n@\"\207" [emms-browser-alpha-sort-function a b] 3]] 3 (#$ . 20289)]) #@29 Sort based on year or name. (defalias 'emms-browser-sort-by-year-or-name #[(alist) "\301\302\"\207" [alist sort #[(a b) "\303\211A@)\n\211A@)\"\207" [a x b emms-browser-sort-by-year-or-name-p] 4]] 3 (#$ . 20576)]) (defalias 'emms-browser-sort-by-year-or-name-p #[(a b) "\304!\305\306\307#P\304 !\305 \306\307#P\211\n\231*\207" [a b b-desc a-desc emms-browser-year-number emms-track-get info-album "misc"] 7]) #@49 Sort ALIST using the sorting function for TYPE. (defalias 'emms-browser-sort-alist #[(alist type) "\304=\204\305=\204\306=\204\307=\204\310=\203\"\311\2029\312=\203, \2029\313=\2036\314\2029\315\316!\211 !)\207" [type emms-browser-album-sort-function sort-func alist info-artist info-composer info-performer info-year info-genre emms-browser-sort-by-name info-album info-title emms-browser-sort-by-track message "Can't sort unknown mapping!"] 3 (#$ . 20999)]) #@101 Return the bdata object at point. Includes information at point (such as album name), and metadata. (defalias 'emms-browser-bdata-at-point #[nil "\300\301 \302\"\207" [get-text-property point-at-bol emms-browser-bdata] 3 (#$ . 21488)]) #@70 Return the data stored under point. This will be a list of DB items. (defalias 'emms-browser-data-at-point #[nil "\300\301 !\207" [emms-browser-bdata-data emms-browser-bdata-at-point] 2 (#$ . 21730)]) #@36 Return the current level at point. (defalias 'emms-browser-level-at-point #[nil "\300\301 !\207" [emms-browser-bdata-level emms-browser-bdata-at-point] 2 (#$ . 21937)]) #@35 Return a list of tracks at point. (defalias 'emms-browser-tracks-at-point #[(&optional node) "\303 \203\n \202\f\304 \303\211\2033\n@\305 !\204# B\202,\306\307\310 !!\"\nA\211\204*)\207" [tracks node #1=#:--cl-dolist-temp-- nil emms-browser-data-at-point emms-browser-bdata-p append emms-browser-tracks-at-point emms-browser-bdata-data] 6 (#$ . 22112)]) #@42 Expand the current line by one sublevel. (defalias 'emms-browser-expand-one-level #[nil "\303 \212\304y\210\305 \210\306\211\203 \n@\307 !\210\nA\211\204,\306\207" [data data-item #1=#:--cl-dolist-temp-- emms-browser-data-at-point 1 beginning-of-line nil emms-browser-insert-data-item] 3 (#$ . 22489) nil]) #@176 Insert DATA-ITEM into the buffer. This checks DATA-ITEM's level to determine how much to indent. The line will have a property emms-browser-bdata storing subitem information. (defalias 'emms-browser-insert-data-item #[(data-item) "\301!\207" [data-item emms-browser-insert-format] 2 (#$ . 22812)]) #@149 Move point to next entry more than LEVEL and return point. If no entry exits, return nil. Returns point if currently on a an entry more than LEVEL. (defalias 'emms-browser-find-entry-more-than-level #[(level) "`\303\304y\210\305 \211\203\nV\203`\202 b\210\303*\207" [level-at-point old-pos level nil 1 emms-browser-level-at-point] 3 (#$ . 23118)]) #@49 True if there are any subentries visible point. (defalias 'emms-browser-subitems-visible #[nil "\302 \303\212\304\305\303\306#\210\302 \211\205 V+\207" [new-level current-level emms-browser-level-at-point nil re-search-forward "\n" t] 4 (#$ . 23482)]) #@51 True if it's possible to expand the current line. (defalias 'emms-browser-subitems-exist #[nil "\300\301 !\302=?\207" [emms-browser-bdata-type emms-browser-bdata-at-point info-title] 2 (#$ . 23746)]) #@131 Move up one level if possible. Return true if we were able to move up. If DIRECTION is 1, move forward, otherwise move backwards. (defalias 'emms-browser-move-up-level #[(&optional direction) "\304\305\306  \203%\307 \206\310y!\203%\306 V\203\305\304\211\204 \n+\207" [current-level continue moved direction nil t emms-browser-level-at-point zerop -1] 4 (#$ . 23953)]) #@54 Show or hide (kill) subitems under the current line. (defalias 'emms-browser-toggle-subitems #[nil "\300 \203\301 \207\302 \203\303 \207\304 \204\305\306\307C\"\210\301 \207" [emms-browser-subitems-visible emms-browser-kill-subitems emms-browser-subitems-exist emms-browser-show-subitems emms-browser-move-up-level signal cl-assertion-failed (emms-browser-move-up-level)] 3 (#$ . 24341) nil]) #@39 Show subitems under the current line. (defalias 'emms-browser-show-subitems #[nil "\300 ?\205 \301 \205 \302 \207" [emms-browser-subitems-visible emms-browser-subitems-exist emms-browser-expand-one-level] 1 (#$ . 24746)]) #@95 Remove all subitems under the current line. Stops at the next line at the same level, or EOF. (defalias 'emms-browser-kill-subitems #[nil "\303 \205\304 \305\306!\307\212\310 !\204\305\306!)|+\207" [next-line current-level inhibit-read-only emms-browser-subitems-visible emms-browser-level-at-point point-at-bol 2 t emms-browser-find-entry-more-than-level] 3 (#$ . 24976)]) #@54 Insert a group description into the playlist buffer. (defalias 'emms-browser-playlist-insert-group #[(bdata) "\306!\307 !\310\311O\312\313\"\f\203\314\f!\204\315 \210 \206\"pr\fq\210\316db\210 \317\261.\207" [bdata type short-type name emms-playlist-buffer emms-source-old-buffer emms-browser-bdata-type symbol-name 5 nil emms-browser-format-line playlist buffer-live-p emms-playlist-current-clear t "\n" inhibit-read-only] 3 (#$ . 25364)]) #@42 Insert a track into the playlist buffer. (defalias 'emms-browser-playlist-insert-track #[(bdata) "\306\307\"\310!@ \203\311 !\204\312 \210\f\206pr q\210\313db\210\n\314\261-\207" [bdata track name emms-playlist-buffer emms-source-old-buffer inhibit-read-only emms-browser-format-line playlist emms-browser-bdata-data buffer-live-p emms-playlist-current-clear t "\n"] 3 (#$ . 25826)]) #@42 Add all tracks in BDATA to the playlist. (defalias 'emms-browser-playlist-insert-bdata #[(bdata starting-level) "\306!\307!\310!\311 \203\n SZ\312\n!\f\313=\204%\314!\210\315!\311\211\203R@\f\313=\204E\316 \"\210\202I\317!\210A\211\2041.\311\207" [bdata emms-browser-current-indent level name type starting-level emms-browser-bdata-type emms-browser-bdata-name emms-browser-bdata-level nil emms-browser-make-indent info-title emms-browser-playlist-insert-group emms-browser-bdata-data emms-browser-playlist-insert-bdata emms-browser-playlist-insert-track item #1=#:--cl-dolist-temp--] 4 (#$ . 26229)]) #@92 Expand to a depth specified by LEVEL. After expanding, jump to the currently marked entry. (defalias 'emms-browser-expand-to-level #[(level) "eb\210\301\302!`=\204\303 W\203\304 \210\305 \210\202\306 \210\307\310!\207" [level buffer-end 1 emms-browser-level-at-point emms-browser-show-subitems emms-browser-next-non-track emms-browser-pop-mark recenter (4)] 2 (#$ . 26871)]) #@51 Save the current top level element, and collapse. (defalias 'emms-browser-mark-and-collapse #[nil "\300 \210db\210\301\302!`=?\205\303 \210\304 \210\202\207" [emms-browser-mark-entry buffer-end -1 emms-browser-prev-non-track emms-browser-kill-subitems] 2 (#$ . 27259)]) #@45 Move up until reaching a top-level element. (defalias 'emms-browser-find-top-level #[nil "\300 \301=?\205\302y\210\202\207" [emms-browser-level-at-point 1 -1] 2 (#$ . 27539)]) #@35 Mark the current top level entry. (defalias 'emms-browser-mark-entry #[nil "\212\301 \210\302\303\304 \305 \306\302D#*\207" [inhibit-read-only emms-browser-find-top-level t add-text-properties point-at-bol point-at-eol emms-browser-mark] 5 (#$ . 27725)]) #@55 Return to the last marked entry, and remove the mark. (defalias 'emms-browser-pop-mark #[nil "eb\210\302ed\303\304$\211\203b\210\304\305\306 \307 \303C#)\202\"\310\311!)\207" [pos inhibit-read-only text-property-any emms-browser-mark t remove-text-properties point-at-bol point-at-eol message "No mark saved!"] 6 (#$ . 27987)]) #@104 Move point to the parent of the current node. Return point. If at level one, return the current point. (defalias 'emms-browser-go-to-parent #[nil "\301 \211\302=\204\301 X\203\303y\210\202 `)\207" [current-level emms-browser-level-at-point 1 -1] 3 (#$ . 28328)]) #@45 Remove the current node, and empty parents. (defalias 'emms-browser-delete-current-node #[nil "\300\301 \236\302\241\210\303 \207" [data emms-browser-bdata-at-point nil emms-browser-delete-node-if-empty] 2 (#$ . 28604)]) #@42 If empty, remove node and empty parents. (defalias 'emms-browser-delete-node-if-empty #[nil "\304\305 G!\205E\212\306 \307\211\212\310 )\311 \203\312 \210\313\314 b\210\315\316!\210)\317\n!\316=?\205Db\210\306 \320 \236\321\n\322 !\"\241\210\323 ,\207" [parent-point parent-bdata child-bdata inhibit-read-only zerop emms-browser-data-at-point emms-browser-bdata-at-point nil emms-browser-go-to-parent emms-browser-subitems-visible emms-browser-kill-subitems t point-at-bol kill-line 1 emms-browser-bdata-level data delq emms-browser-bdata-data emms-browser-delete-node-if-empty] 5 (#$ . 28831)]) #@71 Add all tracks at point. Return the previous point-max before adding. (defalias 'emms-browser-add-tracks #[nil "\203\n\305!\204 \306 \210 \206prq\210\307d+\310 \311 \312 !\"\210\313\314\f\"\210\f*\207" [emms-playlist-buffer emms-source-old-buffer inhibit-read-only bdata first-new-track buffer-live-p emms-playlist-current-clear t emms-browser-bdata-at-point emms-browser-playlist-insert-bdata emms-browser-bdata-level run-hook-with-args emms-browser-tracks-added-hook] 4 (#$ . 29444) nil]) #@58 Add all tracks at point, and play the first added track. (defalias 'emms-browser-add-tracks-and-play #[nil "\304  \203 \305 !\204\306 \210\n\206pr q\210\307b\210\310`!\204(\311 \210\312`!\210+\313 \210\314 )\207" [old-pos emms-playlist-buffer emms-source-old-buffer inhibit-read-only emms-browser-add-tracks buffer-live-p emms-playlist-current-clear t emms-playlist-track-at emms-playlist-next emms-playlist-select emms-stop emms-start] 2 (#$ . 29952) nil]) #@29 Isearch through the buffer. (defalias 'emms-isearch-buffer #[nil "eb\210\300 \205\301 ?\205\302 \207" [isearch-forward emms-browser-subitems-visible emms-browser-show-subitems] 1 (#$ . 30426) nil]) #@37 Jump to the next non-track element. (defalias 'emms-browser-next-non-track #[(&optional direction) "\302\205 \206 \303y\205\304\305 !\306=\204\307\211\204\307)\207" [continue direction t 1 emms-browser-bdata-type emms-browser-bdata-at-point info-title nil] 3 (#$ . 30634) nil]) #@41 Jump to the previous non-track element. (defalias 'emms-browser-prev-non-track #[nil "\300\301!\207" [emms-browser-next-non-track -1] 2 (#$ . 30930) nil]) #@20 Expand everything. (defalias 'emms-browser-expand-all #[nil "\300\301!\207" [emms-browser-expand-to-level 99] 2 (#$ . 31091) nil]) #@39 Expand all top level items one level. (defalias 'emms-browser-expand-to-level-2 #[nil "\300 \210\301\302!\207" [emms-browser-mark-and-collapse emms-browser-expand-to-level 2] 2 (#$ . 31228) nil]) #@40 Expand all top level items two levels. (defalias 'emms-browser-expand-to-level-3 #[nil "\300 \210\301\302!\207" [emms-browser-mark-and-collapse emms-browser-expand-to-level 3] 2 (#$ . 31430) nil]) #@42 Expand all top level items three levels. (defalias 'emms-browser-expand-to-level-4 #[nil "\300 \210\301\302!\207" [emms-browser-mark-and-collapse emms-browser-expand-to-level 4] 2 (#$ . 31633) nil]) #@53 Collapse everything, saving and restoring the mark. (defalias 'emms-browser-collapse-all #[nil "\300 \210\301 \210\302\303!\207" [emms-browser-mark-and-collapse emms-browser-pop-mark recenter (4)] 2 (#$ . 31838) nil]) #@30 Do we need to seed (random)? (defvar emms-browser-seed-pending t (#$ . 32062)) (defalias 'emms-browser-goto-random #[nil "\203\n\301\302!\210\303\304\301\305ed\"!!\207" [emms-browser-seed-pending random t nil goto-line count-lines] 5 nil nil]) #@38 View the current directory in dired. (defalias 'emms-browser-view-in-dired #[(&optional bdata) "\203&\304!\305=\203\306!@\307 \310\"\311\n!\312 !+\207\313\306!@!\207\313\314 !\207" [bdata track path dir emms-browser-bdata-type info-title emms-browser-bdata-data emms-track-get name file-name-directory find-file emms-browser-view-in-dired emms-browser-bdata-at-point] 3 (#$ . 32315) nil]) #@52 Delete all files under point. Disabled by default. (defalias 'emms-browser-delete-files #[nil "\306 \307\211\310\311\312\nG\"!\204\313\314!\210\315\316!\210\n\307\211\203?\f@\317 \320\"\321!\210\322\301\323!\"\210\324!\210\fA\211\204!* \307\211\203a@\325\326 \n#\210\307\327\330\217\210A\211\204I*\331 \210\315\332!+\207" [path dirs tracks track #1=#:--cl-dolist-temp-- dir emms-browser-tracks-at-point nil yes-or-no-p format "Really permanently delete these %d tracks? " error "Cancelled!" message "Deleting files.." emms-track-get name delete-file add-to-list file-name-directory emms-cache-del run-hook-with-args emms-browser-delete-files-hook (delete-directory dir) ((error)) emms-browser-delete-current-node "Deleting files..done" #2=#:--cl-dolist-temp--] 5 (#$ . 32720) nil]) (put 'emms-browser-delete-files 'disabled t) (defalias 'emms-browser-clear-playlist #[nil "\203\n\303!\204 \304 \210 \206prq\210\305\306 +\207" [emms-playlist-buffer emms-source-old-buffer inhibit-read-only buffer-live-p emms-playlist-current-clear t emms-playlist-clear] 2 nil nil]) (defalias 'emms-browser-lookup #[(field url) "\303\304\305 !\"\211\205\306\n P!)\207" [field data url emms-track-get emms-browser-bdata-first-track emms-browser-bdata-at-point browse-url] 4]) (defalias 'emms-browser-lookup-wikipedia #[(field) "\301\302\"\207" [field emms-browser-lookup "http://en.wikipedia.org/wiki/Special:Search?search="] 3]) (defalias 'emms-browser-lookup-pitchfork #[(field) "\301\302\"\207" [field emms-browser-lookup "http://www.pitchforkmedia.com/search/record_reviews/query?query[keywords]="] 3]) (defalias 'emms-browser-lookup-artist-on-wikipedia #[nil "\300\301!\207" [emms-browser-lookup-wikipedia info-artist] 2 nil nil]) (defalias 'emms-browser-lookup-composer-on-wikipedia #[nil "\300\301!\207" [emms-browser-lookup-wikipedia info-composer] 2 nil nil]) (defalias 'emms-browser-lookup-performer-on-wikipedia #[nil "\300\301!\207" [emms-browser-lookup-wikipedia info-performer] 2 nil nil]) (defalias 'emms-browser-lookup-album-on-wikipedia #[nil "\300\301!\207" [emms-browser-lookup-wikipedia info-album] 2 nil nil]) (defalias 'emms-browser-lookup-artist-on-pitchfork #[nil "\300\301!\207" [emms-browser-lookup-pitchfork info-artist] 2 nil nil]) (defalias 'emms-browser-lookup-composer-on-pitchfork #[nil "\300\301!\207" [emms-browser-lookup-pitchfork info-composer] 2 nil nil]) (defalias 'emms-browser-lookup-performer-on-pitchfork #[nil "\300\301!\207" [emms-browser-lookup-pitchfork info-performer] 2 nil nil]) (defalias 'emms-browser-lookup-album-on-pitchfork #[nil "\300\301!\207" [emms-browser-lookup-pitchfork info-album] 2 nil nil]) #@58 Whether to switch to to the playlist after adding files. (custom-declare-variable 'emms-browser-switch-to-playlist-on-add 'nil '(#$ . 35405) :group 'emms-browser :type 'boolean) #@172 Display browser and playlist. Toggle between selecting browser, playlist or hiding both. Tries to behave sanely if the user has manually changed the window configuration. (defalias 'emms-smart-browse #[nil "\303\304\305\"\210\303\306\307\"\210\303\310\311\"\210\312\211\n\313=\2030\314 \315 \211\203)\316 !\202P\316\305 !\202P\n\317=\203N\315 \211\203F\316 !\210\320 \202P\321 \210\307 \202P\322 *\207" [buf wind major-mode add-to-list emms-browser-show-display-hook emms-browser-display-playlist emms-browser-hide-display-hook emms-browser-hide-linked-window emms-browser-tracks-added-hook #[(start-of-tracks) "\305 \203 \306 \210\307 \211\205(\310 \311\312\313 \"r\314\216\315\316\"\210\fb\210\317\320!,)\207" [playlist-window emms-browser-switch-to-playlist-on-add save-selected-window-alist save-selected-window-window start-of-tracks nil emms-smart-browse emms-browser-get-linked-window selected-window mapcar #[(frame) "\301!D\207" [frame frame-selected-window] 3] frame-list ((byte-code "\305\211\203/\n@\306 @!\203(\307 \211A@)!\203(\310 @ \211A@)\"\210\nA\211\204*\307\f!\203;\311\f\312\"\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 select-window norecord] 4)) select-window norecord recenter (4)] 4 nil nil] nil emms-browser-mode emms-browser-get-linked-buffer emms-browser-get-linked-window select-window emms-playlist-mode emms-browser-bury-buffer bury-buffer emms-browser] 4 (#$ . 35590) nil]) #@59 Return linked buffer (eg browser if playlist is selected. (defalias 'emms-browser-get-linked-buffer #[nil "\302=\203\n\303 @\207\304=\205 \207" [major-mode emms-browser-buffer emms-browser-mode emms-playlist-buffer-list emms-playlist-mode] 2 (#$ . 37150)]) #@59 Return linked window (eg browser if playlist is selected. (defalias 'emms-browser-get-linked-window #[nil "\301 \211\205\n\302!)\207" [buf emms-browser-get-linked-buffer get-buffer-window] 3 (#$ . 37418)]) #@89 A hook to show the playlist when the browser is displayed. Returns the playlist window. (defalias 'emms-browser-display-playlist #[nil "\305 \306 \307!\204B\310 \311\312\313 \"r\314\216\315 \210\316\317!\210 \203*\320 !\210\2021\321 \320 !\210\322\304!\203=\323\f\324\325#\210\326 !,*\207" [pwin pbuf save-selected-window-alist save-selected-window-window emms-playlist-mode-map emms-browser-get-linked-buffer emms-browser-get-linked-window window-live-p selected-window mapcar #[(frame) "\301!B\207" [frame frame-selected-window] 3] frame-list ((byte-code "\304\211\203'\n@\305 @!\203 \306 A!\203 \307 @ A\"\210\nA\211\204*\306 !\2032\310 !\210\304\207" [save-selected-window-alist elt #1=#:--cl-dolist-temp-- save-selected-window-window nil frame-live-p window-live-p set-frame-selected-window select-window] 4)) split-window-horizontally other-window 1 switch-to-buffer emms-playlist-current-clear boundp define-key "q" #[nil "\300 \210\301 \207" [emms-browser-hide-linked-window bury-buffer] 1 nil nil] get-buffer-window] 4 (#$ . 37633) nil]) #@63 Delete a playlist or browser window when the other is hidden. (defalias 'emms-browser-hide-linked-window #[nil "\302 \303 \203\304!\203\305!\210\306 !*\207" [other-win other-buf emms-browser-get-linked-buffer emms-browser-get-linked-window window-live-p delete-window bury-buffer] 2 (#$ . 38711) nil]) #@201 Return a list of tracks that match SEARCH-LIST. SEARCH-LIST is a list of cons pairs, in the form: ((field1 field2) string) If string matches any of the fields in a cons pair, it will be included. (defalias 'emms-browser-filter-cache #[(search-list) "\302\303\304 \"\210)\207" [tracks emms-cache-db nil maphash #[(k track) "\303 \"\205\f\nB\211\207" [track search-list tracks emms-browser-matches-p] 3]] 3 (#$ . 39029)]) (defalias 'emms-browser-matches-p #[(track search-list) "\306\211\n\306\211\203J\f@\306 @\306\211 \203< @\307 \211\fA@)\310 \311#\"\2033\312 A\211 \204*\204C\312\fA\211\204\f* *?\207" [matched no-match search-list item #1=#:--cl-dolist-temp-- field nil string-match emms-track-get "" t #2=#:--cl-dolist-temp-- x track] 8]) #@56 Create a new search buffer, or clean the existing one. (defalias 'emms-browser-search-buffer-go #[nil "\302\303\304!!\210\305\306!\210\307!\210\306ed|)\207" [emms-browser-search-mode-map inhibit-read-only switch-to-buffer get-buffer-create "*emms-browser-search*" emms-browser-mode t use-local-map] 3 (#$ . 39814)]) #@30 Search for STR using FIELDS. (defalias 'emms-browser-search #[(fields) "\304\305\"\306 !\307 \210\310\311\312\nDC!!\210)\313 \210eb*\207" [fields prompt str inhibit-read-only format "Searching with %S: " read-string emms-browser-search-buffer-go t emms-browser-render-search emms-browser-filter-cache emms-browser-expand-all] 4 (#$ . 40138)]) (defalias 'emms-browser-render-search #[(tracks) "\304\305\"\211\306\211\203 @\307\n@\nA\305#\210 A\211\204 +\306\207" [tracks entries entry #1=#:--cl-dolist-temp-- emms-browser-make-sorted-alist info-artist nil emms-browser-insert-top-level-entry] 6]) #@32 Kill the buffer when q is hit. (defalias 'emms-browser-kill-search #[nil "\300p!\207" [kill-buffer] 2 (#$ . 40754) nil]) (defalias 'emms-browser-search-by-artist #[nil "\300\301!\207" [emms-browser-search (info-artist)] 2 nil nil]) (defalias 'emms-browser-search-by-composer #[nil "\300\301!\207" [emms-browser-search (info-composer)] 2 nil nil]) (defalias 'emms-browser-search-by-performer #[nil "\300\301!\207" [emms-browser-search (info-performer)] 2 nil nil]) (defalias 'emms-browser-search-by-title #[nil "\300\301!\207" [emms-browser-search (info-title)] 2 nil nil]) (defalias 'emms-browser-search-by-album #[nil "\300\301!\207" [emms-browser-search (info-album)] 2 nil nil]) (defalias 'emms-browser-search-by-names #[nil "\300\301!\207" [emms-browser-search (info-artist info-composer info-performer info-title info-album)] 2 nil nil]) (defalias 'emms-browser-get-cover-from-album #[(bdata &optional size) "\305!\306=\204\307\310\311C\"\210\312!\312 @!@\313\n\314\"\315 \f\"+\207" [bdata track1data track1 path size emms-browser-bdata-type info-album signal cl-assertion-failed (eq (emms-browser-bdata-type bdata) 'info-album) emms-browser-bdata-data emms-track-get name emms-browser-get-cover-from-path] 3]) #@40 Return a cover filename, if it exists. (defalias 'emms-browser-get-cover-from-path #[(path &optional size) "\204\306\307=\203\310\202!\306=\203\311\202!\312=\205!\313\314\n!\2031\n\315 !\"\202C\n<\205C \n8\205C\315 ! \n8P\211\203R\316\f!\203R\f\202Y \205Y 8*\207" [size size-idx emms-browser-covers path cover emms-browser-default-covers medium small 0 1 large 2 functionp file-name-directory file-readable-p] 4 (#$ . 41983)]) (defalias 'emms-browser-insert-cover #[(path) "\301!c\207" [path emms-browser-make-cover] 2]) (defalias 'emms-browser-make-cover #[(path) "\303!\211\304\230\203\305\202L \306\230\203\307\202L \310\230\203\"\311\202L \312\230\203,\313\202L\314\315 \"\2037\316\202L \317\230\203A\320\202L \321\230\203K\322\202L\323\324\325\326\327\330\n\331\332\333\257\334\335%*\207" [path ext type file-name-extension "png" png "xbm" xbm "xpm" xpm "pbm" pbm string-match "e?ps" postscript "gif" gif "tiff" tiff jpeg emms-propertize " " display image :type :margin 5 :file rear-nonsticky (display)] 11]) (defalias 'emms-browser-get-cover-str #[(path size) "\303 \"\211\203\304\n!\202\305)\207" [path size cover emms-browser-get-cover-from-path emms-browser-make-cover " "] 4]) #@106 Return the first track from a given bdata. If > album level, most of the track data will not make sense. (defalias 'emms-browser-bdata-first-track #[(bdata) "\302!\211\303=\203\304!@\202\305\304!@!)\207" [bdata type emms-browser-bdata-type info-title emms-browser-bdata-data emms-browser-bdata-first-track] 4 (#$ . 43231)]) (defalias 'emms-browser-insert-format #[(bdata) "\302\303 !\304\261)\207" [inhibit-read-only bdata t emms-browser-format-line "\n"] 2]) (defalias 'emms-browser-make-indent #[(level) "\206 \302 S\303\\\304\"\207" [emms-browser-current-indent level make-string 0 32] 3]) (defalias 'emms-browser-format-elem #[(format-string elem) "\302 \"A\207" [elem format-string assoc] 3]) #@59 Return a propertized string to be inserted in the buffer. (defalias 'emms-browser-format-line #[(bdata &optional target) "\204\306\307 !\206 \310\311 !\312 !\313 !\314 !;\315;\302\"<\316 !2\317 \"=\320 D>\321 B\322\nB\323\315;\324\"B\325\315;\326\"B\327\315;\330\"B\331\315;\332\"B\333\315;\334\"B\335\315;\336\"B\337\340;!B\341\342<\343\"B\344\342<\345\"B\346\342<\347\"B\257\f?\350@\351=!\203\227= ?\"=\352\353!A\354\216rAq\210=c\210eb\210eB\355\356\350\357#\203\270`B\355\360\350\357#\203\303`B\361Bd\3622D#\210)\363 +@\364@?\"@\f\336=\203\355 \365\230\204\355\366@P@\367=\203\f\336=\203\370>\371;D\">\361\372@G>@$\210@. \207" [target bdata name level type indent browser emms-browser-bdata-name "misc" emms-browser-bdata-level emms-browser-bdata-type emms-browser-make-indent emms-browser-bdata-first-track emms-track-get emms-browser-get-face emms-browser-get-format emms-browser-bdata "i" "n" "y" info-year "A" info-album "a" info-artist "C" info-composer "p" info-performer "t" info-title "T" emms-browser-track-number "cS" emms-browser-get-cover-str small "cM" medium "cL" large nil functionp generate-new-buffer " *temp*" ((byte-code "\301!\203\n\302!\210\301\207" [#1=#:temp-buffer buffer-name kill-buffer] 2)) re-search-forward "%c[SML]" t "%i" add-text-properties face buffer-string emms-browser-format-spec "" " " playlist append emms-track 0 track path format props format-choices str #1# start] 15 (#$ . 43948)]) #@35 Return a suitable face for BDATA. (defalias 'emms-browser-get-face #[(bdata) "\303!\211\304=\204 \305=\203\306\202C \307=\203\310\202C \311=\203(\312\202C \313=\2032\314\202C \315=\203<\316\202C \317=\205C\320\321\322\n\323Q!*\207" [bdata type name emms-browser-bdata-type info-year info-genre "year/genre" info-artist "artist" info-composer "composer" info-performer "performer" info-album "album" info-title "track" intern "emms-browser-" "-face"] 5 (#$ . 45448)]) #@286 Return a string based on FORMAT and SPECIFICATION. FORMAT is a string containing `format'-like specs like "bash %u %k", while SPECIFICATION is an alist mapping from format spec characters to values. Any text properties on a %-spec itself are propagated to the text that it generates. (defalias 'emms-browser-format-spec #[(format specification) "\306\307!\310\216rq\210 c\210eb\210\311\312\313\314#\203q\313f\315=\203&\316\317!\210\202\320\321!\203j\322\317!\322\323!\324 \f\"A\211\204C\325\326 \"\210\301\312\n\327Q \"\330!\210\331\224G\\\331\225G\\|\210\331\224S\331\224|\210,\202\325\332!\210\202\333 +\207" [#1=#:temp-buffer format num spec specification val generate-new-buffer " *temp*" ((byte-code "\301!\203\n\302!\210\301\207" [#1# buffer-name kill-buffer] 2)) search-forward "%" nil t 37 delete-char 1 looking-at "\\([-0-9.]*\\)\\([a-zA-Z]+\\)" match-string 2 assoc error "Invalid format character: %s" "s" insert-and-inherit 0 "Invalid format string" buffer-string text] 5 (#$ . 45940)]) #@15 indent + name (defvar emms-browser-default-format "%i%n" (#$ . 46972)) (byte-code "\301B\302\301!\204\303\301\304\"\210\305B\302\305!\204\303\305\304\"\210\301\207" [current-load-list emms-browser-info-title-format default-boundp set-default emms-browser-track-artist-and-title-format emms-browser-playlist-info-title-format] 3) (defalias 'emms-browser-get-format #[(bdata target) "\306!\n\307=\203\310\202\311\n!\312P\313\314 \311 !\315R!\316\f!\203)\fJ\202* +\207" [bdata type target target-str sym emms-browser-default-format emms-browser-bdata-type browser "" symbol-name "-" intern "emms-browser-" "-format" boundp] 5]) (defalias 'emms-browser-track-artist-and-title-format #[(bdata fmt) "\302\303\304\"\211\203 \305\230\204\306\202\307)\310Q\207" [fmt track "%i" emms-browser-format-elem "T" "0" "%T. " "" "%n"] 5]) (byte-code "\301B\302\301!\204\303\301\304\"\210\305B\302\305!\204\303\305\306\"\210\301\207" [current-load-list emms-browser-info-album-format default-boundp set-default emms-browser-year-and-album-fmt emms-browser-playlist-info-album-format emms-browser-year-and-album-fmt-med] 3) (defalias 'emms-browser-year-and-album-fmt #[(bdata fmt) "\302\303\304\"\211\203 \305\230\204\306\202\307)\310Q\207" [fmt year "%i%cS" emms-browser-format-elem "y" "0" "(%y) " "" "%n"] 5]) (defalias 'emms-browser-year-and-album-fmt-med #[(bdata fmt) "\302\303\304\"\211\203 \305\230\204\306\202\307)\310Q\207" [fmt year "%i%cM" emms-browser-format-elem "y" "0" "(%y) " "" "%n"] 5]) (defalias 'emms-browser-make-face '(macro . #[(name dark-col light-col height) "\305\306\307Q!\310 \311\312\313\n\314 FD\315\313\f\314 FD\316\317\320\nDDFD\321\322Q)\323BBBB\207" [name face-name dark-col height light-col intern "emms-browser-" "-face" defface quote ((class color) (background dark)) :foreground :height ((class color) (background light)) (((type tty) (class mono)) (:inverse-video t)) t :background "Face for " " in a browser/playlist buffer." (:group 'emms-browser-mode)] 9])) (byte-code "\300\301\302\303\304\305%\210\300\306\307\310\304\305%\210\300\311\312\313\304\305%\210\300\314\315\316\304\305%\210\300\317\320\321\304\305%\210\300\322\323\324\304\305%\207" [custom-declare-face emms-browser-year/genre-face ((#1=((class color) (background dark)) (:foreground #2="#aaaaff" :height 1.5)) (#3=((class color) (background light)) (:foreground "#444477" :height 1.5)) #4=(((type tty) (class mono)) (:inverse-video t)) (t (:background #2#))) "Face for year/genre in a browser/playlist buffer." :group emms-browser-mode emms-browser-artist-face ((#1# (:foreground #5="#aaaaff" :height 1.3)) (#3# (:foreground "#444477" :height 1.3)) #4# (t (:background #5#))) "Face for artist in a browser/playlist buffer." emms-browser-composer-face ((#1# (:foreground #6="#aaaaff" :height 1.3)) (#3# (:foreground "#444477" :height 1.3)) #4# (t (:background #6#))) "Face for composer in a browser/playlist buffer." emms-browser-performer-face ((#1# (:foreground #7="#aaaaff" :height 1.3)) (#3# (:foreground "#444477" :height 1.3)) #4# (t (:background #7#))) "Face for performer in a browser/playlist buffer." emms-browser-album-face ((#1# (:foreground #8="#aaaaff" :height 1.1)) (#3# (:foreground "#444477" :height 1.1)) #4# (t (:background #8#))) "Face for album in a browser/playlist buffer." emms-browser-track-face ((#1# (:foreground #9="#aaaaff" :height 1.0)) (#3# (:foreground "#444477" :height 1.0)) #4# (t (:background #9#))) "Face for track in a browser/playlist buffer."] 6) #@30 A list of available filters. (defvar emms-browser-filters nil (#$ . 50506)) #@228 Make a user-level function for filtering tracks. This: - defines an interactive function M-x emms-browser-show-NAME. - defines a variable emms-browser-filter-NAME of (name . func). - adds the filter to emms-browser-filters. (defalias 'emms-browser-make-filter '(macro . #[(name func) "\305\306P!\305\307P!\310\311Q\312\313\n\314 F\315\n\316\fEE\317\320\nE\321 \314 \322\323\nD\257\257+\207" [name desc var funcnam func intern "emms-browser-show-" "emms-browser-filter-" "Filter the cache using rule '" "'" progn defvar nil setq cons add-to-list 'emms-browser-filters defun (interactive) emms-browser-refilter] 11 (#$ . 50589)])) #@93 Set the current filter to be used on next update. This does not refresh the current buffer. (defalias 'emms-browser-set-filter #[(filter) "A@\303\304!\207" [filter emms-browser-filter-tracks-hook emms-browser-current-filter-name run-hooks emms-browser-filter-changed-hook] 2 (#$ . 51236)]) #@41 Filter and render the top-level tracks. (defalias 'emms-browser-refilter #[(filter) "\303!\210\304 \206\n\n!\207" [filter emms-browser-top-level-type emms-browser-default-browse-type emms-browser-set-filter emms-browse-by] 2 (#$ . 51536)]) #@33 Redisplay with the next filter. (defalias 'emms-browser-next-filter #[(&optional reverse) "\203\n\300 !\202  \306\f\n\"\n\235\211A@)\211\204#\n@\307!+\207" [reverse emms-browser-filters list emms-browser-current-filter-name key x assoc emms-browser-refilter next] 4 (#$ . 51784) nil]) #@37 Redisplay with the previous filter. (defalias 'emms-browser-previous-filter #[nil "\300\301!\207" [emms-browser-next-filter t] 2 (#$ . 52089) nil]) #@96 Generate a function which checks if a track is in path. If the track is not in path, return t. (defalias 'emms-browser-filter-only-dir #[(path) "\301\302\303\304\305\306!P\307BBDE\207" [path lambda (track) not string-match "^" expand-file-name ((emms-track-get track 'name))] 7 (#$ . 52243)]) #@89 Generate a function which checks a track's type. If the track is not of TYPE, return t. (defalias 'emms-browser-filter-only-type #[(type) "\301\302\303\304\305D\306BBDE\207" [type lambda (track) not eq quote ((emms-track-get track 'type))] 6 (#$ . 52543)]) #@57 Show only tracks played within the last number of DAYS. (defalias 'emms-browser-filter-only-recent #[(days) "\301\302\303\304\305\306\307\310\311BBDED\312B\313BBE\207" [days lambda (track) let min-date time-subtract (current-time) seconds-to-time * (86400) (last-played) ((not (and (setq last-played (emms-track-get track 'last-played nil)) (time-less-p min-date last-played))))] 10 (#$ . 52807)]) (provide 'emms-browser)