diff options
-rw-r--r-- | emms-browser.el | 69 | ||||
-rw-r--r-- | emms-info-ogg.el | 2 | ||||
-rw-r--r-- | emms-info.el | 2 | ||||
-rw-r--r-- | emms-player-mpd.el | 2 | ||||
-rw-r--r-- | emms-playlist-limit.el | 4 | ||||
-rw-r--r-- | emms-playlist-sort.el | 10 | ||||
-rw-r--r-- | emms-tag-editor.el | 10 |
7 files changed, 87 insertions, 12 deletions
diff --git a/emms-browser.el b/emms-browser.el index 48df21c..171eaaa 100644 --- a/emms-browser.el +++ b/emms-browser.el @@ -46,8 +46,8 @@ ;; c) the extra window closed, and both buffers buried ;; If you just want access to the browser, try M-x -;; emms-browse-by-TYPE, where TYPE is one of artist, album, genre or -;; year. These commands can also be used while smart browsing to +;; emms-browse-by-TYPE, where TYPE is one of artist, album, composer, +;; genre or year. These commands can also be used while smart browsing to ;; change the browsing category. ;; If you don't want to activate the code with (emms-devel), you can @@ -82,13 +82,17 @@ ;; s A emms-browser-search-by-album ;; s a emms-browser-search-by-artist +;; s c emms-browser-search-by-composer ;; s s emms-browser-search-by-names ;; s t emms-browser-search-by-title +;; s p emms-browser-search-by-performer ;; b 1 emms-browse-by-artist ;; b 2 emms-browse-by-album ;; b 3 emms-browse-by-genre ;; b 4 emms-browse-by-year +;; b 5 emms-browse-by-composer +;; b 6 emms-browse-by-performer ;; W a p emms-browser-lookup-album-on-pitchfork ;; W a w emms-browser-lookup-album-on-wikipedia @@ -96,6 +100,12 @@ ;; W A p emms-browser-lookup-artist-on-pitchfork ;; W A w emms-browser-lookup-artist-on-wikipedia +;; W C p emms-browser-lookup-composer-on-pitchfork +;; W C w emms-browser-lookup-composer-on-wikipedia + +;; W P p emms-browser-lookup-performer-on-pitchfork +;; W P w emms-browser-lookup-performer-on-wikipedia + ;; Displaying covers ;; ------------------------------------------------------------------- @@ -221,6 +231,8 @@ ;; %y the album year ;; %A the album name ;; %a the artist name of the track +;; %C the composer name of the track +;; %p the performer name of the track ;; %t the title of the track ;; %T the track number ;; %cS a small album cover @@ -235,9 +247,10 @@ ;; The faces used to display the various fields are also customizable. ;; They are in the format emms-browser-<type>-face, where type is one -;; of "year/genre", "artist", "album" or "track". Note that faces lack -;; the initial "info-" part. For example, to change the artist face, -;; type M-x customize-face emms-browser-artist-face. +;; of "year/genre", "artist", "composer", "performer", "album" or +;; "track". Note that faces lack the initial "info-" part. For example, +;; to change the artist face, type +;; M-x customize-face emms-browser-artist-face. ;; Deleting files ;; ------------------------------------------------------------------- @@ -437,12 +450,20 @@ Called once for each directory." (define-key map (kbd "b 2") 'emms-browse-by-album) (define-key map (kbd "b 3") 'emms-browse-by-genre) (define-key map (kbd "b 4") 'emms-browse-by-year) + (define-key map (kbd "b 5") 'emms-browse-by-composer) + (define-key map (kbd "b 6") 'emms-browse-by-performer) (define-key map (kbd "s a") 'emms-browser-search-by-artist) + (define-key map (kbd "s c") 'emms-browser-search-by-composer) + (define-key map (kbd "s p") 'emms-browser-search-by-performer) (define-key map (kbd "s A") 'emms-browser-search-by-album) (define-key map (kbd "s t") 'emms-browser-search-by-title) (define-key map (kbd "s s") 'emms-browser-search-by-names) (define-key map (kbd "W A w") 'emms-browser-lookup-artist-on-wikipedia) (define-key map (kbd "W A p") 'emms-browser-lookup-artist-on-pitchfork) + (define-key map (kbd "W C w") 'emms-browser-lookup-composer-on-wikipedia) + (define-key map (kbd "W C p") 'emms-browser-lookup-composer-on-pitchfork) + (define-key map (kbd "W P w") 'emms-browser-lookup-performer-on-wikipedia) + (define-key map (kbd "W P p") 'emms-browser-lookup-performer-on-pitchfork) (define-key map (kbd "W a w") 'emms-browser-lookup-album-on-wikipedia) (define-key map (kbd "W a p") 'emms-browser-lookup-album-on-pitchfork) (define-key map (kbd ">") 'emms-browser-next-filter) @@ -590,6 +611,8 @@ example function is `emms-browse-by-artist'." (goto-char (point-min)))) (emms-browser-add-category "artist" 'info-artist) +(emms-browser-add-category "composer" 'info-composer) +(emms-browser-add-category "performer" 'info-performer) (emms-browser-add-category "album" 'info-album) (emms-browser-add-category "genre" 'info-genre) (emms-browser-add-category "year" 'info-year) @@ -693,6 +716,8 @@ browser, and hit 'b 1' to refresh."))) Eg. if CURRENT-MAPPING is currently 'info-artist, return 'info-album." (cond ((eq current-mapping 'info-artist) 'info-album) + ((eq current-mapping 'info-composer) 'info-album) + ((eq current-mapping 'info-performer) 'info-album) ((eq current-mapping 'info-album) 'info-title) ((eq current-mapping 'info-genre) 'info-artist) ((eq current-mapping 'info-year) 'info-artist))) @@ -882,6 +907,8 @@ Uses `emms-browser-alpha-sort-function'." (cond ((or (eq type 'info-artist) + (eq type 'info-composer) + (eq type 'info-performer) (eq type 'info-year) (eq type 'info-genre)) 'emms-browser-sort-by-name) @@ -1312,6 +1339,14 @@ Disabled by default." (interactive) (emms-browser-lookup-wikipedia 'info-artist)) +(defun emms-browser-lookup-composer-on-wikipedia () + (interactive) + (emms-browser-lookup-wikipedia 'info-composer)) + +(defun emms-browser-lookup-performer-on-wikipedia () + (interactive) + (emms-browser-lookup-wikipedia 'info-performer)) + (defun emms-browser-lookup-album-on-wikipedia () (interactive) (emms-browser-lookup-wikipedia 'info-album)) @@ -1320,6 +1355,14 @@ Disabled by default." (interactive) (emms-browser-lookup-pitchfork 'info-artist)) +(defun emms-browser-lookup-composer-on-pitchfork () + (interactive) + (emms-browser-lookup-pitchfork 'info-composer)) + +(defun emms-browser-lookup-composer-on-pitchfork () + (interactive) + (emms-browser-lookup-pitchfork 'info-composer)) + (defun emms-browser-lookup-album-on-pitchfork () (interactive) (emms-browser-lookup-pitchfork 'info-album)) @@ -1506,6 +1549,14 @@ included." (interactive) (emms-browser-search '(info-artist))) +(defun emms-browser-search-by-composer () + (interactive) + (emms-browser-search '(info-composer))) + +(defun emms-browser-search-by-performer () + (interactive) + (emms-browser-search '(info-performer))) + (defun emms-browser-search-by-title () (interactive) (emms-browser-search '(info-title))) @@ -1516,7 +1567,7 @@ included." (defun emms-browser-search-by-names () (interactive) - (emms-browser-search '(info-artist info-title info-album))) + (emms-browser-search '(info-artist info-composer info-performer info-title info-album))) ;; -------------------------------------------------- ;; Album covers @@ -1618,6 +1669,8 @@ If > album level, most of the track data will not make sense." ("y" . ,(emms-track-get track 'info-year)) ("A" . ,(emms-track-get track 'info-album)) ("a" . ,(emms-track-get track 'info-artist)) + ("C" . ,(emms-track-get track 'info-composer)) + ("p" . ,(emms-track-get track 'info-performer)) ("t" . ,(emms-track-get track 'info-title)) ("T" . ,(emms-browser-track-number track)) ("cS" . ,(emms-browser-get-cover-str path 'small)) @@ -1668,6 +1721,8 @@ If > album level, most of the track data will not make sense." ((or (eq type 'info-year) (eq type 'info-genre)) "year/genre") ((eq type 'info-artist) "artist") + ((eq type 'info-composer) "composer") + ((eq type 'info-performer) "performer") ((eq type 'info-album) "album") ((eq type 'info-title) "track")))) (intern @@ -1797,6 +1852,8 @@ the text that it generates." (emms-browser-make-face "year/genre" "#aaaaff" "#444477" 1.5) (emms-browser-make-face "artist" "#aaaaff" "#444477" 1.3) +(emms-browser-make-face "composer" "#aaaaff" "#444477" 1.3) +(emms-browser-make-face "performer" "#aaaaff" "#444477" 1.3) (emms-browser-make-face "album" "#aaaaff" "#444477" 1.1) (emms-browser-make-face "track" "#aaaaff" "#444477" 1.0) diff --git a/emms-info-ogg.el b/emms-info-ogg.el index f8db9d4..035a8c6 100644 --- a/emms-info-ogg.el +++ b/emms-info-ogg.el @@ -77,6 +77,8 @@ ogg-comments.el" (emms-track-set track 'info-title (emms-info-ogg-get-comment "title" info)) (emms-track-set track 'info-artist (emms-info-ogg-get-comment "artist" info)) + (emms-track-set track 'info-composer (emms-info-ogg-get-comment "composer" info)) + (emms-track-set track 'info-performer (emms-info-ogg-get-comment "performer" info)) (emms-track-set track 'info-album (emms-info-ogg-get-comment "album" info)) (emms-track-set track 'info-note (emms-info-ogg-get-comment "comment" info)) (emms-track-set track 'info-year (emms-info-ogg-get-comment "date" info)) diff --git a/emms-info.el b/emms-info.el index 57c66d1..d60edb9 100644 --- a/emms-info.el +++ b/emms-info.el @@ -30,6 +30,8 @@ ;; are defined: ;; info-artist - string naming the artist +;; info-composer - string naming the composer +;; info-performer - string naming the performer ;; info-title - string naming the title of the song ;; info-album - string naming the album ;; info-tracknumber - string(?) naming the track number diff --git a/emms-player-mpd.el b/emms-player-mpd.el index b80f76d..b1a0d04 100644 --- a/emms-player-mpd.el +++ b/emms-player-mpd.el @@ -1064,6 +1064,8 @@ rather than EMMS." (let ((name (car data)) (value (cdr data))) (setq name (cond ((string= name "artist") 'info-artist) + ((string= name "composer") 'info-composer) + ((string= name "performer") 'info-performer) ((string= name "title") 'info-title) ((string= name "album") 'info-album) ((string= name "track") 'info-tracknumber) diff --git a/emms-playlist-limit.el b/emms-playlist-limit.el index f532ca2..6b67986 100644 --- a/emms-playlist-limit.el +++ b/emms-playlist-limit.el @@ -85,6 +85,8 @@ (emms-playlist-limit-do (quote ,attribute) regexp))) (define-emms-playlist-limit info-artist) +(define-emms-playlist-limit info-composer) +(define-emms-playlist-limit info-performer) (define-emms-playlist-limit info-title) (define-emms-playlist-limit info-album) (define-emms-playlist-limit info-year) @@ -98,6 +100,8 @@ (define-key emms-playlist-mode-map (kbd "/ n") 'emms-playlist-limit-to-name) (define-key emms-playlist-mode-map (kbd "/ a") 'emms-playlist-limit-to-info-artist) +(define-key emms-playlist-mode-map (kbd "/ c") 'emms-playlist-limit-to-info-composer) +(define-key emms-playlist-mode-map (kbd "/ p") 'emms-playlist-limit-to-info-performer) (define-key emms-playlist-mode-map (kbd "/ t") 'emms-playlist-limit-to-info-title) (define-key emms-playlist-mode-map (kbd "/ b") 'emms-playlist-limit-to-info-album) (define-key emms-playlist-mode-map (kbd "/ y") 'emms-playlist-limit-to-info-year) diff --git a/emms-playlist-sort.el b/emms-playlist-sort.el index 00398da..0977eb5 100644 --- a/emms-playlist-sort.el +++ b/emms-playlist-sort.el @@ -36,8 +36,8 @@ (defcustom emms-playlist-sort-list '(info-artist info-album) "Sorting list used by `emms-playlist-sort-by-list'. Currently it understands the following fields: name info-artist -info-title info-album info-genre info-playing-time -info-tracknumber." +imfo-composer info-performer info-title info-album info-genre +info-playing-time info-tracknumber." :type 'symbol :group 'emms-playlist-sort) @@ -56,6 +56,8 @@ info-tracknumber." (define-emms-playlist-sort name) (define-emms-playlist-sort info-artist) +(define-emms-playlist-sort info-composer) +(define-emms-playlist-sort info-performer) (define-emms-playlist-sort info-title) (define-emms-playlist-sort info-album) (define-emms-playlist-sort info-year) @@ -86,6 +88,8 @@ increasingly." '(progn (define-key emms-playlist-mode-map (kbd "S n") 'emms-playlist-sort-by-name) (define-key emms-playlist-mode-map (kbd "S a") 'emms-playlist-sort-by-info-artist) + (define-key emms-playlist-mode-map (kbd "S c") 'emms-playlist-sort-by-info-composer) + (define-key emms-playlist-mode-map (kbd "S p") 'emms-playlist-sort-by-info-performer) (define-key emms-playlist-mode-map (kbd "S t") 'emms-playlist-sort-by-info-title) (define-key emms-playlist-mode-map (kbd "S b") 'emms-playlist-sort-by-info-album) (define-key emms-playlist-mode-map (kbd "S y") 'emms-playlist-sort-by-info-year) @@ -140,7 +144,7 @@ ie. by album name and then by track number." (catch 'return (dolist (info emms-playlist-sort-list) (case info - ((name info-artist info-title info-album info-genre) + ((name info-artist info-composer info-performer info-title info-album info-genre) (when (emms-string< (emms-track-get a info) (emms-track-get b info)) (throw 'return t))) diff --git a/emms-tag-editor.el b/emms-tag-editor.el index 1f7cbbb..ae79faa 100644 --- a/emms-tag-editor.el +++ b/emms-tag-editor.el @@ -37,13 +37,15 @@ (defvar emms-tag-editor-tags '((info-artist . "a") + (info-composer . "c") + (info-performer . "p") (info-title . "t") (info-album . "l") (info-tracknumber . "n") (info-year . "y") (info-genre . "g") (info-date . "d") - (info-note . "c")) + (info-note . ";")) "An alist to determine the format of various info tags.") (defvar emms-tag-editor-edit-buffer "*EMMS-TAGS*" @@ -79,12 +81,14 @@ is the format template. The format specification is like: m -- Track description f -- Track name a -- Track info-artist + c -- Track info-composer + p -- Track info-performer t -- Track info-title l -- Track info-album n -- Track info-tracknumber y -- Track info-year g -- Track info-genre - c -- Track info-note + ; -- Track info-note You can add new specifications in `emms-tag-editor-tags', and use `emms-tag-editor-make-format' to create a new format string. @@ -134,7 +138,7 @@ See also `emms-tag-editor-tag-file' and `emms-tag-editor-tag-ogg'.") (let ((info-tag (intern (concat "info-" tag)))) (when (> (length (setq val (emms-track-get track info-tag))) 0) (setq args (append (list "-t" (concat (upcase tag) "=" val)) args))))) - '("artist" "title" "album" "tracknumber" "date" "genre" "note")) + '("artist" "composer" "performer" "title" "album" "tracknumber" "date" "genre" "note")) (when args (apply #'call-process "vorbiscomment" nil (get-buffer-create emms-tag-editor-log-buffer) |