el/dot-emacs.el: Restore mode lines to tag-browser windows.
[profile] / el / dot-emacs.el
index c189f4d..3ea5cd5 100644 (file)
@@ -3769,13 +3769,6 @@ there is sadness."
 ;;;--------------------------------------------------------------------------
 ;;; MPC configuration.
 
-(defun mdw-mpc-play-or-pause ()
-  (interactive)
-  (require 'mpc)
-  (if (member (cdr (assq 'state (mpc-cmd-status))) '("play"))
-      (mpc-pause)
-    (mpc-play)))
-
 (setq mpc-browser-tags '(Artist|Composer|Performer Album|Playlist))
 
 (defun mdw-mpc-now-playing ()
@@ -3820,9 +3813,21 @@ there is sadness."
          (t
           (message "mpd in unknown state `%s'" state)))))
 
-(autoload 'mpc-next "mpc")
-(autoload 'mpc-prev "mpc")
-(autoload 'mpc-stop "mpc")
+(defmacro mdw-define-mpc-wrapper (func bvl interactive &rest body)
+  `(defun ,func ,bvl
+     (interactive ,@interactive)
+     (require 'mpc)
+     ,@body
+     (mdw-mpc-now-playing)))
+
+(mdw-define-mpc-wrapper mdw-mpc-play-or-pause () nil
+  (if (member (cdr (assq 'state (mpc-cmd-status))) '("play"))
+      (mpc-pause)
+    (mpc-play)))
+
+(mdw-define-mpc-wrapper mdw-mpc-next () nil (mpc-next))
+(mdw-define-mpc-wrapper mdw-mpc-prev () nil (mpc-prev))
+(mdw-define-mpc-wrapper mdw-mpc-stop () nil (mpc-stop))
 
 (defun mdw-mpc-hack-lines (arg interactivep func)
   (if (and interactivep (use-region-p))
@@ -3852,7 +3857,8 @@ there is sadness."
               (decf n)))))))
 
 (defun mdw-mpc-select-one ()
-  (unless (get-char-property (point) 'mpc-select)
+  (when (and (get-char-property (point) 'mpc-file)
+            (not (get-char-property (point) 'mpc-select)))
     (mpc-select-toggle)))
 
 (defun mdw-mpc-unselect-one ()
@@ -3861,18 +3867,15 @@ there is sadness."
 
 (defun mdw-mpc-select (&optional arg interactivep)
   (interactive (list current-prefix-arg t))
-  (mdw-mpc-hack-lines arg interactivep 'mdw-mpc-select-one)
-  (mpc-selection-refresh))
+  (mdw-mpc-hack-lines arg interactivep 'mdw-mpc-select-one))
 
 (defun mdw-mpc-unselect (&optional arg interactivep)
   (interactive (list current-prefix-arg t))
-  (mdw-mpc-hack-lines arg interactivep 'mdw-mpc-unselect-one)
-  (mpc-selection-refresh))
+  (mdw-mpc-hack-lines arg interactivep 'mdw-mpc-unselect-one))
 
 (defun mdw-mpc-unselect-backwards (arg)
   (interactive "p")
-  (mdw-mpc-hack-lines (- arg) t 'mdw-mpc-unselect-one)
-  (mpc-selection-refresh))
+  (mdw-mpc-hack-lines (- arg) t 'mdw-mpc-unselect-one))
 
 (defun mdw-mpc-unselect-all ()
   (interactive)
@@ -3889,6 +3892,13 @@ there is sadness."
   (beginning-of-line)
   (forward-line (- arg)))
 
+(defun mdw-mpc-hack-tagbrowsers ()
+  (setq-local mode-line-format
+             '("%e"
+               mode-line-frame-identification
+               mode-line-buffer-identification)))
+(add-hook 'mpc-tagbrowser-mode-hook 'mdw-mpc-hack-tagbrowsers)
+
 (eval-after-load "mpc"
   '(progn
      (define-key mpc-mode-map "m" 'mdw-mpc-select)
@@ -3897,11 +3907,13 @@ there is sadness."
      (define-key mpc-mode-map "\e\177" 'mdw-mpc-unselect-all)
      (define-key mpc-mode-map "n" 'mdw-mpc-next-line)
      (define-key mpc-mode-map "p" 'mdw-mpc-previous-line)
+     (define-key mpc-mode-map "/" 'mpc-songs-search)
      (setq mpc-songs-mode-map (make-sparse-keymap))
      (set-keymap-parent mpc-songs-mode-map mpc-mode-map)
      (define-key mpc-songs-mode-map "l" 'mpc-playlist)
      (define-key mpc-songs-mode-map "+" 'mpc-playlist-add)
-     (define-key mpc-songs-mode-map "-" 'mpc-playlist-delete)))
+     (define-key mpc-songs-mode-map "-" 'mpc-playlist-delete)
+     (define-key mpc-songs-mode-map "\r" 'mpc-songs-jump-to)))
 
 ;;;--------------------------------------------------------------------------
 ;;; Inferior Emacs Lisp.