changeset 94248:63d5fa94ea09

(read-buffer-to-switch): New function. (switch-to-buffer-other-window, switch-to-buffer-other-frame): Change interactive spec to call read-buffer-to-switch instead of using the letter "B".
author Juri Linkov <juri@jurta.org>
date Tue, 22 Apr 2008 19:48:02 +0000
parents 57c8f6a6456a
children 982b68f17589
files lisp/files.el
diffstat 1 files changed, 15 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/files.el	Tue Apr 22 19:47:13 2008 +0000
+++ b/lisp/files.el	Tue Apr 22 19:48:02 2008 +0000
@@ -1039,6 +1039,17 @@
     (rename-file encoded new-encoded ok-if-already-exists)
     newname))
 
+(defun read-buffer-to-switch (prompt)
+  "Read the name of a buffer to switch to and return as a string.
+It is intended for `switch-to-buffer' family of commands since they
+need to omit the name of current buffer from the list of complations
+and default values."
+  (minibuffer-with-setup-hook
+      (lambda ()
+	(set (make-local-variable 'minibuffer-completion-table)
+	     (internal-complete-buffer-except (other-buffer (current-buffer) t))))
+    (read-buffer prompt (other-buffer (current-buffer)))))
+
 (defun switch-to-buffer-other-window (buffer &optional norecord)
   "Select buffer BUFFER in another window.
 If BUFFER does not identify an existing buffer, then this function
@@ -1053,7 +1064,8 @@
 
 This uses the function `display-buffer' as a subroutine; see its
 documentation for additional customization information."
-  (interactive "BSwitch to buffer in other window: ")
+  (interactive
+   (list (read-buffer-to-switch "Switch to buffer in other window: ")))
   (let ((pop-up-windows t)
 	;; Don't let these interfere.
 	same-window-buffer-names same-window-regexps)
@@ -1067,7 +1079,8 @@
 
 This uses the function `display-buffer' as a subroutine; see its
 documentation for additional customization information."
-  (interactive "BSwitch to buffer in other frame: ")
+  (interactive
+   (list (read-buffer-to-switch "Switch to buffer in other frame: ")))
   (let ((pop-up-frames t)
 	same-window-buffer-names same-window-regexps)
     (prog1