aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Olson <mwolson@gnu.org>2008-01-30 06:41:00 +0000
committerMichael Olson <mwolson@gnu.org>2008-01-30 06:41:00 +0000
commitf8079a700d8074cd591effa969d80975794363fc (patch)
treecd64dc5e465377711fcc1694ea85b26af09893c7
parent639b1fed1ceff6cbc64f2e5724f82d31b271d0ef (diff)
emms-playlist-mode: Use current buffer for clear and kill.
In this case of the clear and kill commands, it makes the most sense to operate on the current buffer, rather than the currently-designated EMMS playlist buffer. Additionally, fix a bug when doing "a" or "RET" on something that isn't the current EMMS track. darcs-hash:20080130064148-1bfb2-0cf2b8b59d0f338d67cd21e272bb305bd9b9ada1.gz
-rw-r--r--emms-playlist-mode.el39
1 files changed, 31 insertions, 8 deletions
diff --git a/emms-playlist-mode.el b/emms-playlist-mode.el
index 66b6a87..35c1291 100644
--- a/emms-playlist-mode.el
+++ b/emms-playlist-mode.el
@@ -1,6 +1,6 @@
;;; emms-playlist-mode.el --- Playlist mode for Emms.
-;; Copyright (C) 2005, 2006, 2007 Free Software Foundation, Inc.
+;; Copyright (C) 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
;; Author: Yoni Rabkin <yonirabkin@member.fsf.org>
@@ -139,10 +139,10 @@ This is true for every invocation of `emms-playlist-mode-go'."
(define-key map (kbd "f") 'emms-show)
(define-key map (kbd "c") 'emms-playlist-mode-center-current)
(define-key map (kbd "q") 'emms-playlist-mode-bury-buffer)
- (define-key map (kbd "k") 'emms-playlist-current-kill)
+ (define-key map (kbd "k") 'emms-playlist-mode-current-kill)
(define-key map (kbd "?") 'describe-mode)
(define-key map (kbd "r") 'emms-random)
- (define-key map (kbd "C") 'emms-playlist-clear)
+ (define-key map (kbd "C") 'emms-playlist-mode-clear)
(define-key map (kbd "<mouse-2>") 'emms-playlist-mode-play-current-track)
(define-key map (kbd "RET") 'emms-playlist-mode-play-smart)
map)
@@ -177,6 +177,26 @@ FUN should be a function."
(setq emms-playlist-mode-popup-enabled nil))
(bury-buffer)))
+(defun emms-playlist-mode-current-kill ()
+ "If the current buffer is an EMMS playlist buffer, kill it.
+Otherwise, kill the current EMMS playlist buffer."
+ (interactive)
+ (if (and emms-playlist-buffer-p
+ (not (eq (current-buffer) emms-playlist-buffer)))
+ (kill-buffer (current-buffer))
+ (emms-playlist-current-kill)))
+
+(defun emms-playlist-mode-clear ()
+ "If the current buffer is an EMMS playlist buffer, clear it.
+Otherwise, clear the current EMMS playlist buffer."
+ (interactive)
+ (if (and emms-playlist-buffer-p
+ (not (eq (current-buffer) emms-playlist-buffer)))
+ (let ((inhibit-read-only t))
+ (widen)
+ (delete-region (point-min) (point-max)))
+ (emms-playlist-clear)))
+
(defun emms-playlist-mode-last ()
"Move to directly after the last track in the current buffer."
(interactive)
@@ -194,15 +214,14 @@ FUN should be a function."
(defun emms-playlist-mode-center-current ()
"Move point to the currently selected track."
(interactive)
- (with-current-emms-playlist
- (goto-char (if emms-playlist-mode-selected-overlay
- (overlay-start emms-playlist-mode-selected-overlay)
- (point-min)))))
+ (goto-char (if emms-playlist-mode-selected-overlay
+ (overlay-start emms-playlist-mode-selected-overlay)
+ (point-min))))
(defun emms-playlist-mode-play-current-track ()
"Start playing track at point."
(interactive)
- (emms-playlist-set-playlist-buffer)
+ (emms-playlist-set-playlist-buffer (current-buffer))
(unless (emms-playlist-track-at (point))
(emms-playlist-next))
(emms-playlist-select (point))
@@ -224,6 +243,8 @@ Otherwise play the track immediately."
(emms-move-beginning-of-line nil)
(if (not emms-playlist-mode-open-playlists)
(emms-playlist-mode-play-current-track)
+ (unless (emms-playlist-track-at)
+ (emms-playlist-next))
(let* ((track (emms-playlist-track-at))
(name (emms-track-get track 'name))
(type (emms-track-get track 'type)))
@@ -266,6 +287,8 @@ set it as current."
(interactive)
(save-excursion
(emms-move-beginning-of-line nil)
+ (unless (emms-playlist-track-at)
+ (emms-playlist-next))
(let* ((track (emms-playlist-track-at))
(name (emms-track-get track 'name))
(type (emms-track-get track 'type))