Mercurial > emacs
changeset 7333:7a0395228878
(choose-completion-string): Barf if completing into
a minibuffer but it's not now active.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Thu, 05 May 1994 05:27:59 +0000 |
parents | e30a34bfc536 |
children | fcea4173315d |
files | lisp/simple.el |
diffstat | 1 files changed, 16 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/simple.el Thu May 05 05:08:57 1994 +0000 +++ b/lisp/simple.el Thu May 05 05:27:59 1994 +0000 @@ -2461,14 +2461,22 @@ (defun choose-completion-string (choice &optional buffer) (let ((buffer (or buffer completion-reference-buffer))) - (set-buffer buffer) - (choose-completion-delete-max-match choice) - (insert choice) - ;; Update point in the window that BUFFER is showing in. - (let ((window (get-buffer-window buffer t))) - (set-window-point window (point))) - (and (equal buffer (window-buffer (minibuffer-window))) - (minibuffer-complete-and-exit)))) + ;; If BUFFER is a minibuffer, barf unless it's the currently + ;; active minibuffer. + (if (and (string-match "\\` \\*Minibuf-[0-9]+\\*\\'" (buffer-name buffer)) + (or (not (minibuffer-window-active-p (minibuffer-window))) + (not (equal buffer (window-buffer (minibuffer-window)))))) + (error "Minibuffer is not active for completion") + ;; Insert the completion into the buffer where completion was requested. + (set-buffer buffer) + (choose-completion-delete-max-match choice) + (insert choice) + ;; Update point in the window that BUFFER is showing in. + (let ((window (get-buffer-window buffer t))) + (set-window-point window (point))) + ;; If completing for the minibuffer, exit it with this choice. + (and (equal buffer (window-buffer (minibuffer-window))) + (minibuffer-complete-and-exit))))) (defun completion-list-mode () "Major mode for buffers showing lists of possible completions.