X-Git-Url: https://thelambdalab.xyz/gitweb/index.cgi?a=blobdiff_plain;f=emus.el;h=23a1da113b5f5ce0d18bdd5b34912a623d5955e0;hb=91912da763a84f486701b222b0c53da598833d09;hp=2c879c46b541db102bf863ea164a91ff1e253baf;hpb=869c7b36b90740b4ac744270ef38d20226f2c391;p=emus.git diff --git a/emus.el b/emus.el index 2c879c4..23a1da1 100644 --- a/emus.el +++ b/emus.el @@ -115,7 +115,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 +140,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 +240,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 +435,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 +444,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 +479,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 +533,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)))