* src/minibuf.c (Fread_string): Bind minibuffer-completion-table.
authorStefan Monnier <monnier@iro.umontreal.ca>
Tue, 19 Jun 2012 17:05:41 +0000 (13:05 -0400)
committerStefan Monnier <monnier@iro.umontreal.ca>
Tue, 19 Jun 2012 17:05:41 +0000 (13:05 -0400)
src/ChangeLog
src/minibuf.c

index 019eb87..6db112d 100644 (file)
@@ -1,3 +1,7 @@
+2012-06-19  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * minibuf.c (Fread_string): Bind minibuffer-completion-table.
+
 2012-06-19  Dmitry Antipov  <dmantipov@yandex.ru>
 
        * alloc.c, bytecode.c, ccl.c, coding.c, composite.c, data.c, dosfns.c:
index d0e5034..b0f4e3d 100644 (file)
@@ -1035,12 +1035,20 @@ Fifth arg INHERIT-INPUT-METHOD, if non-nil, means the minibuffer inherits
   (Lisp_Object prompt, Lisp_Object initial_input, Lisp_Object history, Lisp_Object default_value, Lisp_Object inherit_input_method)
 {
   Lisp_Object val;
+  ptrdiff_t count = SPECPDL_INDEX ();
+
+  /* Just in case we're in a recursive minibuffer, make it clear that the
+     previous minibuffer's completion table does not apply to the new
+     minibuffer.
+     FIXME: `minibuffer-completion-table' should be buffer-local instead.  */
+  specbind (Qminibuffer_completion_table, Qnil);
+
   val = Fread_from_minibuffer (prompt, initial_input, Qnil,
                               Qnil, history, default_value,
                               inherit_input_method);
   if (STRINGP (val) && SCHARS (val) == 0 && ! NILP (default_value))
     val = CONSP (default_value) ? XCAR (default_value) : default_value;
-  return val;
+  return unbind_to (count, val);
 }
 
 DEFUN ("read-no-blanks-input", Fread_no_blanks_input, Sread_no_blanks_input, 1, 3, 0,