From ec6de1e2eee67a7d5f14e1187b4edd28548e8639 Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Tue, 19 Jun 2012 13:05:41 -0400 Subject: [PATCH] * src/minibuf.c (Fread_string): Bind minibuffer-completion-table. --- src/ChangeLog | 4 ++++ src/minibuf.c | 10 +++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/ChangeLog b/src/ChangeLog index 019eb87df0..6db112d697 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,7 @@ +2012-06-19 Stefan Monnier + + * minibuf.c (Fread_string): Bind minibuffer-completion-table. + 2012-06-19 Dmitry Antipov * alloc.c, bytecode.c, ccl.c, coding.c, composite.c, data.c, dosfns.c: diff --git a/src/minibuf.c b/src/minibuf.c index d0e503486f..b0f4e3db6c 100644 --- a/src/minibuf.c +++ b/src/minibuf.c @@ -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, -- 2.20.1