Updated faces for 27.1.
[emus.git] / emus.el
diff --git a/emus.el b/emus.el
index 2c879c4..cfa674a 100644 (file)
--- a/emus.el
+++ b/emus.el
   :type '(string))
 
 (defface emus-artist
-  '((t :inherit font-lock-string-face :background "#333"))
+  '(((background dark) :inherit font-lock-string-face :inverse-video t :extend t)
+    (t :inherit font-lock-string-face :background "#ddd" :extend t))
   "Face used for artist names in browser.")
 
 (defface emus-album
-  '((t :inherit font-lock-constant-face :background "#222"))
+  '(((background dark) :inherit font-lock-constant-face :inverse-video t :extend t)
+    (t :inherit font-lock-constant-face :background "#eee" :extend t))
   "Face used for album names in browser.")
 
 (defface emus-track
@@ -115,7 +117,6 @@ Used to prevent commands from interfering with library construction.")
         emus-process
       (let ((proc
              (make-process :name "emus-process"
-                           ;; :buffer (get-buffer-create "*emus-process*")
                            :command `(,emus-mpg123-program "-R"))))
         (set-process-query-on-exit-flag proc nil)
         (process-send-string proc "silence\n")
@@ -141,7 +142,10 @@ be used by `emus--load-library'."
 
 (defun emus-get-audio-files ()
   "Get all mp3 files in main emus directory."
-  (directory-files-recursively emus-directory ".*\\.mp3"))
+  (mapcar
+   (lambda (f)
+     (expand-file-name f))
+   (directory-files-recursively emus-directory ".*\\.mp3")))
 
 (defun emus-make-track (artist album title filename &optional pos)
   "Create an object representing an emus track.
@@ -238,7 +242,7 @@ by the filesystem."
 (defmacro emus--with-library (&rest body)
   "Evaluate BODY with the library initialized."
   `(if emus-tracks
-       (progn ,@body)
+       (unless emus--proc-in-use ,@body)
      (emus--load-library
       (lambda () ,@body))))
 
@@ -433,7 +437,8 @@ and thus requires both artist and album headers."
   (let* ((artist (emus-track-artist track))
          (album (emus-track-album track))
          (title (emus-track-title track))
-         (help-str (format "mouse-1, RET: Play '%.30s' (%.20s)" title artist)))
+         (help-str (format "mouse-1, RET: Play '%.30s' (%.20s)" title artist))
+         (field (intern album))) ;Allows easy jumping between albums with cursor.
     (when (or prev-track first)
       (unless (equal (emus-track-artist prev-track) artist)
         (insert-text-button
@@ -441,16 +446,22 @@ and thus requires both artist and album headers."
          'action #'emus--click-track
          'follow-link t
          'help-echo help-str
-         'emus-track track)
-        (insert (propertize "\n" 'face 'emus-artist)))
+         'emus-track track
+         'field field)
+        (insert (propertize "\n"
+                            'face 'emus-artist
+                            'field field)))
       (unless (equal (emus-track-album prev-track) album)
         (insert-text-button
          (propertize (concat "  " album) 'face 'emus-album)
          'action #'emus--click-track
          'follow-link t
          'help-echo help-str
-         'emus-track track)
-        (insert (propertize "\n" 'face 'emus-album))))
+         'emus-track track
+         'field field)
+        (insert (propertize "\n"
+                            'face 'emus-album
+                            'field field))))
     (emus-set-track-browser-pos track (point))
     (let ((is-current (equal track emus-current-track)))
       (insert-text-button
@@ -470,11 +481,13 @@ and thus requires both artist and album headers."
        'action #'emus--click-track
        'follow-link t
        'help-echo help-str
-       'emus-track track)
+       'emus-track track
+       'field field)
       (insert (propertize "\n"
                           'face (if is-current
                                     'emus-track-current
-                                  'emus-track))))))
+                                  'emus-track)
+                          'field field)))))
 
 (defun emus--update-track (track)
   "Rerender entry for TRACK in emus browser buffer.
@@ -522,7 +535,7 @@ Used to update browser display when `emus-current-track' and/or `emus-state' cha
   "Switch to *emus* audio library browser."
   (interactive)
   (emus--with-library
-   (pop-to-buffer "*emus*")
+   (pop-to-buffer-same-window "*emus*")
    (emus-browser-mode)
    (emus--render-tracks)
    (emus-goto-current)))