bongo-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[bongo-patches] Make `bongo-switch-buffers' prompt for a Bongo buffer wh


From: Daniel Brockman
Subject: [bongo-patches] Make `bongo-switch-buffers' prompt for a Bongo buffer when given a prefix argument
Date: Thu, 24 May 2007 13:28:29 +0200
User-agent: Gnus/5.11 (Gnus v5.11) Emacs/22.0.92 (gnu/linux)

Make `bongo-switch-buffers' prompt for a Bongo buffer when
given a prefix argument.

diff -rN -u old-bongo/bongo.el new-bongo/bongo.el
--- old-bongo/bongo.el  2007-05-24 13:28:26.000000000 +0200
+++ new-bongo/bongo.el  2007-05-24 13:28:26.000000000 +0200
@@ -4732,6 +4732,13 @@
   'bongo-best-backend-for-file
   'bongo-backend-for-file)
 
+(defun bongo-completing-read (&rest args)
+  (if (and (boundp 'ido-mode) ido-mode)
+      ;; XXX: This shouldn't be necessary.
+      (let ((ido-merged-indicator nil))
+        (apply 'ido-completing-read args))
+    (apply 'completing-read args)))
+
 (defun bongo-set-backend-for-track (backend &optional point)
   "Specify that BACKEND is to be used for playing the track at POINT."
   (interactive
@@ -10387,19 +10394,40 @@
                 (progn (bury-buffer)
                        (not (eq first-buffer (current-buffer))))))))
 
-(defun bongo-switch-buffers (&optional other-window)
-  "Switch from a Bongo playlist to a Bongo library, or vice versa.
-If prefix argument OTHER-WINDOW is non-nil, display the other buffer
-in another window."
+(defun bongo-buffers ()
+  (let (result)
+    (dolist (buffer (buffer-list) result)
+      (when (bongo-buffer-p buffer)
+        (push buffer result)))))
+
+(defun bongo-switch-to-buffer ()
+  (interactive)
+  (let* ((buffer-name
+          (bongo-completing-read "Switch to Bongo buffer: "
+                                 (mapcar 'buffer-name (bongo-buffers))))
+         (buffer (get-buffer buffer-name)))
+    (cond (buffer
+           (switch-to-buffer buffer))
+          ((y-or-n-p (format "No buffer matching `%s', create one? "
+                             buffer-name))
+           (if (prog1 (y-or-n-p (format "Make `%s' a library buffer? "
+                                        buffer-name))
+                 (switch-to-buffer buffer-name))
+               (bongo-library-mode)
+             (bongo-playlist-mode))))))
+
+(defun bongo-switch-buffers (&optional prompt)
+  "In Bongo, switch from a playlist to a library, or vice versa.
+With prefix argument PROMPT, prompt for the buffer to switch to."
   (interactive "P")
-  (let* ((buffer (if (bongo-playlist-buffer-p)
-                     (bongo-library-buffer)
-                   (bongo-playlist-buffer)))
-         (window (get-buffer-window buffer)))
-    (if window
-        (select-window window)
-      (if other-window
-          (pop-to-buffer buffer)
+  (if prompt
+      (bongo-switch-to-buffer)
+    (let* ((buffer (if (bongo-playlist-buffer-p)
+                       (bongo-library-buffer)
+                     (bongo-playlist-buffer)))
+           (window (get-buffer-window buffer)))
+      (if window
+          (select-window window)
         (switch-to-buffer buffer)))))
 
 (defun bongo-list-buffers ()
-- 
Daniel Brockman <address@hidden>

reply via email to

[Prev in Thread] Current Thread [Next in Thread]