changeset 75558:f7b5b15084ef

(read_minibuf): Save and clear Vminibuffer_completing_file_name. (read_minibuf_unwind): Restore it. (Vminibuffer_completion_table, Qminibuffer_completion_table) (Vminibuffer_completion_predicate, Qminibuffer_completion_predicate) (Vminibuffer_completion_confirm, Qminibuffer_completion_confirm) (Vminibuffer_completing_file_name): Definitions moved up.
author Richard M. Stallman <rms@gnu.org>
date Tue, 30 Jan 2007 23:49:33 +0000
parents 21cbf755a07c
children 305f8aa6d4fe
files src/minibuf.c
diffstat 1 files changed, 13 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/src/minibuf.c	Tue Jan 30 23:47:57 2007 +0000
+++ b/src/minibuf.c	Tue Jan 30 23:49:33 2007 +0000
@@ -135,6 +135,11 @@
 /* Keymap for reading expressions.  */
 Lisp_Object Vread_expression_map;
 
+Lisp_Object Vminibuffer_completion_table, Qminibuffer_completion_table;
+Lisp_Object Vminibuffer_completion_predicate, Qminibuffer_completion_predicate;
+Lisp_Object Vminibuffer_completion_confirm, Qminibuffer_completion_confirm;
+Lisp_Object Vminibuffer_completing_file_name;
+
 Lisp_Object Quser_variable_p;
 
 Lisp_Object Qminibuffer_default;
@@ -571,7 +576,9 @@
      specpdl slots.  */
   minibuf_save_list
     = Fcons (Voverriding_local_map,
-	     Fcons (minibuf_window, minibuf_save_list));
+	     Fcons (minibuf_window,
+		    Fcons (Vminibuffer_completing_file_name,
+			   minibuf_save_list)));
   minibuf_save_list
     = Fcons (minibuf_prompt,
 	     Fcons (make_number (minibuf_prompt_width),
@@ -597,6 +604,9 @@
   Vminibuffer_history_position = histpos;
   Vminibuffer_history_variable = histvar;
   Vhelp_form = Vminibuffer_help_form;
+  /* If this minibuffer is reading a file name,
+     that doesn't mean recursive ones are.  */
+  Vminibuffer_completing_file_name = Qnil;
 
   if (inherit_input_method)
     {
@@ -918,6 +928,8 @@
     minibuf_window = temp;
 #endif
   minibuf_save_list = Fcdr (minibuf_save_list);
+  Vminibuffer_completing_file_name = Fcar (minibuf_save_list);
+  minibuf_save_list = Fcdr (minibuf_save_list);
 
   /* Erase the minibuffer we were using at this level.  */
   {
@@ -1684,11 +1696,6 @@
   return Fnreverse (allmatches);
 }
 
-Lisp_Object Vminibuffer_completion_table, Qminibuffer_completion_table;
-Lisp_Object Vminibuffer_completion_predicate, Qminibuffer_completion_predicate;
-Lisp_Object Vminibuffer_completion_confirm, Qminibuffer_completion_confirm;
-Lisp_Object Vminibuffer_completing_file_name;
-
 DEFUN ("completing-read", Fcompleting_read, Scompleting_read, 2, 8, 0,
        doc: /* Read a string in the minibuffer, with completion.
 PROMPT is a string to prompt with; normally it ends in a colon and a space.