From: Stephen Eglen Date: Tue, 25 Nov 2003 14:45:32 +0000 (+0000) Subject: iswitchb-read-buffer: check that iswitchb-exit is not 'usefirst (set X-Git-Tag: ttn-vms-21-2-B4~8273 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=4dddd07f26ce4fb14adeda46465809e04e2b6cef;p=emacs.git iswitchb-read-buffer: check that iswitchb-exit is not 'usefirst (set when user presses RETURN to select buffer) before running: ;; This happens for example if the buffer was chosen with the mouse. (setq iswitchb-matches (list iswitchb-final-text))) iswitchb-exit-minibuffer: set iswitchb-exit to 'usefirst. These changes were made to fix the following bug reported by Markus Rost and John Wiegley: Evaluate: (progn (iswitchb-mode 1) (get-buffer-create "12") (get-buffer-create "1") (iswitchb-buffer)) You get prompted in the minibuffer. Type "1". The minibuffer shows iswitch 1{12,1} Hit RET. You find yourself in buffer "1" instead of "12", as you would expect from the documentation. This bug was introduced when iswitchb-read-buffer was updated to allow user to select items from the *Completions* buffer with the mouse. --- diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 6ed8101077d..4eaab18202c 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,10 @@ +2003-11-25 Stephen Eglen + + * iswitchb.el (iswitchb-read-buffer,iswitchb-exit-minibuffer): + iswitchb-exit is set to 'usefirst when user selects buffer at head + of list using RET. (Selecting buffers at the head of the list was + broken if the substring was also a complete buffername.) + 2003-11-23 Kim F. Storm * progmodes/compile.el (grep-command, grep-use-null-device) diff --git a/lisp/iswitchb.el b/lisp/iswitchb.el index d8f2a5cb214..51797da5605 100644 --- a/lisp/iswitchb.el +++ b/lisp/iswitchb.el @@ -610,7 +610,8 @@ If REQUIRE-MATCH is non-nil, an existing-buffer must be selected." nil ;require-match [handled elsewhere] nil ;initial-contents 'iswitchb-history))) - (if (get-buffer iswitchb-final-text) + (if (and (not (eq iswitchb-exit 'usefirst)) + (get-buffer iswitchb-final-text)) ;; This happens for example if the buffer was chosen with the mouse. (setq iswitchb-matches (list iswitchb-final-text))) @@ -712,7 +713,9 @@ The result is stored in `iswitchb-common-match-string'." (interactive) (if (or (not iswitchb-require-match) (iswitchb-existing-buffer-p)) - (throw 'exit nil))) + (progn + (setq iswitchb-exit 'usefirst) + (throw 'exit nil)))) (defun iswitchb-select-buffer-text () "Select the buffer named by the prompt.