aboutsummaryrefslogtreecommitdiff
path: root/emms-playlist-mode.el
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 /emms-playlist-mode.el
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
Diffstat (limited to 'emms-playlist-mode.el')
-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))