# HG changeset patch # User Stefan Monnier # Date 1111762666 0 # Node ID 1d033a2c8af38133faf419ad3a125b9e92f4f786 # Parent 494d942e49fef78e2f9eef51acf6555b4070b92f (Fminibuffer_complete_and_exit, Fself_insert_and_exit): Use Fexit_minibuffer. (Fexit_minibuffer): Mark it as no-return, deactivate the mark. diff -r 494d942e49fe -r 1d033a2c8af3 src/minibuf.c --- a/src/minibuf.c Fri Mar 25 14:36:08 2005 +0000 +++ b/src/minibuf.c Fri Mar 25 14:57:46 2005 +0000 @@ -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 @@ 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 @@ return Qnil; } exit: - return Fthrow (Qexit, Qnil); + return Fexit_minibuffer (); /* NOTREACHED */ } @@ -2549,14 +2551,21 @@ 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,