changeset 10086:77b5eb8fc9e3

(Fminibuffer_complete_and_exit): Catch errors in do_completion. (complete_and_exit_1, complete_and_exit_2): New subroutines.
author Richard M. Stallman <rms@gnu.org>
date Mon, 28 Nov 1994 20:31:00 +0000
parents f7b9813ea757
children 20769d80bc88
files src/minibuf.c
diffstat 1 files changed, 26 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/minibuf.c	Mon Nov 28 19:44:16 1994 +0000
+++ b/src/minibuf.c	Mon Nov 28 20:31:00 1994 +0000
@@ -1237,6 +1237,26 @@
 
   return Qt;
 }
+
+/* Subroutines of Fminibuffer_complete_and_exit.  */
+
+/* This one is called by internal_condition_case to do the real work.  */
+
+Lisp_Object
+complete_and_exit_1 ()
+{
+  return make_number (do_completion ());
+}
+
+/* This one is called by internal_condition_case if an error happens.
+   Pretend the current value is an exact match.  */
+
+Lisp_Object
+complete_and_exit_2 (ignore)
+     Lisp_Object ignore;
+{
+  return make_number (1);
+}
 
 DEFUN ("minibuffer-complete-and-exit", Fminibuffer_complete_and_exit,
         Sminibuffer_complete_and_exit, 0, 0, "",
@@ -1246,6 +1266,7 @@
   ()
 {
   register int i;
+  Lisp_Object val;
 
   /* Allow user to specify null string */
   if (BEGV == ZV)
@@ -1254,7 +1275,11 @@
   if (!NILP (test_completion (Fbuffer_string ())))
     goto exit;
 
-  i = do_completion ();
+  /* Call do_completion, but ignore errors.  */
+  val = internal_condition_case (complete_and_exit_1, Qerror,
+				 complete_and_exit_2);
+
+  i = XFASTINT (val);
   switch (i)
     {
     case 1: