From f8079a700d8074cd591effa969d80975794363fc Mon Sep 17 00:00:00 2001 From: Michael Olson Date: Wed, 30 Jan 2008 06:41:00 +0000 Subject: 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 --- emms-playlist-mode.el | 39 +++++++++++++++++++++++++++++++-------- 1 file 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 @@ -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 "") '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)) -- cgit v1.2.3