From d850b038c365891af9b9c67c7d06b06b4e3a7137 Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Fri, 25 Mar 2005 14:57:46 +0000 Subject: [PATCH] (Fminibuffer_complete_and_exit, Fself_insert_and_exit): Use Fexit_minibuffer. (Fexit_minibuffer): Mark it as no-return, deactivate the mark. --- src/minibuf.c | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/minibuf.c b/src/minibuf.c index b6db7f1db21..b47d075de4a 100644 --- a/src/minibuf.c +++ b/src/minibuf.c @@ -1,5 +1,5 @@ /* Minibuffer input and completion. - Copyright (C) 1985,86,93,94,95,96,97,98,99,2000,01,03,04 + Copyright (C) 1985,86,93,94,95,96,97,98,99,2000,01,03,04,05 Free Software Foundation, Inc. This file is part of GNU Emacs. @@ -2080,6 +2080,8 @@ complete_and_exit_2 (ignore) return make_number (1); } +EXFUN (Fexit_minibuffer, 0) NO_RETURN; + DEFUN ("minibuffer-complete-and-exit", Fminibuffer_complete_and_exit, Sminibuffer_complete_and_exit, 0, 0, "", doc: /* If the minibuffer contents is a valid completion then exit. @@ -2142,7 +2144,7 @@ a repetition of this command will exit. */) return Qnil; } exit: - return Fthrow (Qexit, Qnil); + return Fexit_minibuffer (); /* NOTREACHED */ } @@ -2549,14 +2551,21 @@ DEFUN ("self-insert-and-exit", Fself_insert_and_exit, Sself_insert_and_exit, 0, else bitch_at_user (); - return Fthrow (Qexit, Qnil); + return Fexit_minibuffer (); } DEFUN ("exit-minibuffer", Fexit_minibuffer, Sexit_minibuffer, 0, 0, "", doc: /* Terminate this minibuffer argument. */) () { - return Fthrow (Qexit, Qnil); + /* If the command that uses this has made modifications in the minibuffer, + we don't want them to cause deactivation of the mark in the original + buffer. + A better solution would be to make deactivate-mark buffer-local + (or to turn it into a list of buffers, ...), but in the mean time, + this should do the trick in most cases. */ + Vdeactivate_mark = Qnil; + Fthrow (Qexit, Qnil); } DEFUN ("minibuffer-depth", Fminibuffer_depth, Sminibuffer_depth, 0, 0, 0, -- 2.39.2