aboutsummaryrefslogtreecommitdiff
path: root/emms-browser.el
diff options
context:
space:
mode:
authorNix <Nix>2007-08-18 13:34:00 +0000
committerNix <nix@esperi.org.uk>2007-08-18 13:34:00 +0000
commitd4e5e5f2f58f45b79296b907ccac28272703a7fb (patch)
treeb19874b35a117855578b5a25eb9d9795579a96fe /emms-browser.el
parent44f24c3b68c3155099fdc484804d00ddd909170d (diff)
Add support for composer and performer tags.
The browser keybindings are somewhat discontiguous to avoid breaking people's finger macros: browsing by composer and performer are `b 5' and `b 6' respectively, where artist is `b 1'. In the tag editor, I changed the note format character to %;, making room for composer as %c. I've not added support to last.fm for composer or performer, as it doesn't seem to support either. (I suspect that in most cases the composer should be reported as the artist if it is present, but that is not impolemented here.) darcs-hash:20070818133412-984cd-07ed55c9bf357ee6119f6d70fc2f267e9e8ecef9.gz
Diffstat (limited to 'emms-browser.el')
-rw-r--r--emms-browser.el69
1 files changed, 63 insertions, 6 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)