Merge from trunk
[bpt/emacs.git] / src / minibuf.c
CommitLineData
f927c5ae 1/* Minibuffer input and completion.
c11136ec 2
73b0cd50 3Copyright (C) 1985-1986, 1993-2011 Free Software Foundation, Inc.
f927c5ae
JB
4
5This file is part of GNU Emacs.
6
9ec0b715 7GNU Emacs is free software: you can redistribute it and/or modify
f927c5ae 8it under the terms of the GNU General Public License as published by
9ec0b715
GM
9the Free Software Foundation, either version 3 of the License, or
10(at your option) any later version.
f927c5ae
JB
11
12GNU Emacs is distributed in the hope that it will be useful,
13but WITHOUT ANY WARRANTY; without even the implied warranty of
14MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15GNU General Public License for more details.
16
17You should have received a copy of the GNU General Public License
9ec0b715 18along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
f927c5ae
JB
19
20
18160b98 21#include <config.h>
3f708f4c 22#include <stdio.h>
d7306fe6 23#include <setjmp.h>
af52c32d 24
f927c5ae
JB
25#include "lisp.h"
26#include "commands.h"
27#include "buffer.h"
83be827a 28#include "character.h"
f927c5ae 29#include "dispextern.h"
2538fae4 30#include "keyboard.h"
ff11dfa1 31#include "frame.h"
f927c5ae
JB
32#include "window.h"
33#include "syntax.h"
0c21eeeb 34#include "intervals.h"
8feddab4 35#include "keymap.h"
fa971ac3 36#include "termhooks.h"
f927c5ae 37
f927c5ae 38/* List of buffers for use as minibuffers.
4d04c1f1
KH
39 The first element of the list is used for the outermost minibuffer
40 invocation, the next element is used for a recursive minibuffer
41 invocation, etc. The list is extended at the end as deeper
42 minibuffer recursions are encountered. */
279cf52c 43
f927c5ae
JB
44Lisp_Object Vminibuffer_list;
45
4d04c1f1 46/* Data to remember during recursive minibuffer invocations */
279cf52c 47
4d04c1f1 48Lisp_Object minibuf_save_list;
f927c5ae
JB
49
50/* Depth in minibuffer invocations. */
279cf52c 51
f927c5ae
JB
52int minibuf_level;
53
77aa8edf 54/* The maximum length of a minibuffer history. */
279cf52c 55
29208e82 56Lisp_Object Qhistory_length;
179a4ca7 57
b278606c 58/* Fread_minibuffer leaves the input here as a string. */
279cf52c 59
f927c5ae
JB
60Lisp_Object last_minibuf_string;
61
406e55df 62Lisp_Object Qminibuffer_history, Qbuffer_name_history;
770970cb 63
719b4a40
RS
64Lisp_Object Qread_file_name_internal;
65
177aecf9 66/* Normal hooks for entry to and exit from minibuffer. */
5c781212 67
29208e82
TT
68Lisp_Object Qminibuffer_setup_hook;
69Lisp_Object Qminibuffer_exit_hook;
eebbfb01 70
9fa5c213 71Lisp_Object Qcompletion_ignore_case;
29208e82
TT
72Lisp_Object Qminibuffer_completion_table;
73Lisp_Object Qminibuffer_completion_predicate;
74Lisp_Object Qminibuffer_completion_confirm;
5744fa7c
RS
75Lisp_Object Quser_variable_p;
76
77Lisp_Object Qminibuffer_default;
78
cee54539
KH
79Lisp_Object Qcurrent_input_method, Qactivate_input_method;
80
6b61353c
KH
81Lisp_Object Qcase_fold_search;
82
627fb581
RS
83Lisp_Object Qread_expression_history;
84
f927c5ae 85\f
89fdc4a0
KH
86/* Put minibuf on currently selected frame's minibuffer.
87 We do this whenever the user starts a new minibuffer
88 or when a minibuffer exits. */
89
90void
971de7fb 91choose_minibuf_frame (void)
89fdc4a0 92{
a4aafc54
GM
93 if (FRAMEP (selected_frame)
94 && FRAME_LIVE_P (XFRAME (selected_frame))
95 && !EQ (minibuf_window, XFRAME (selected_frame)->minibuffer_window))
89fdc4a0 96 {
a4aafc54
GM
97 struct frame *sf = XFRAME (selected_frame);
98 Lisp_Object buffer;
9ab4a725 99
89fdc4a0
KH
100 /* I don't think that any frames may validly have a null minibuffer
101 window anymore. */
a4aafc54 102 if (NILP (sf->minibuffer_window))
89fdc4a0
KH
103 abort ();
104
a4aafc54
GM
105 /* Under X, we come here with minibuf_window being the
106 minibuffer window of the unused termcap window created in
107 init_window_once. That window doesn't have a buffer. */
108 buffer = XWINDOW (minibuf_window)->buffer;
109 if (BUFFERP (buffer))
cbbfe056 110 Fset_window_buffer (sf->minibuffer_window, buffer, Qnil);
a4aafc54 111 minibuf_window = sf->minibuffer_window;
89fdc4a0 112 }
914860c2
RS
113
114 /* Make sure no other frame has a minibuffer as its selected window,
115 because the text would not be displayed in it, and that would be
07d402c8
RS
116 confusing. Only allow the selected frame to do this,
117 and that only if the minibuffer is active. */
914860c2
RS
118 {
119 Lisp_Object tail, frame;
120
121 FOR_EACH_FRAME (tail, frame)
07d402c8 122 if (MINI_WINDOW_P (XWINDOW (FRAME_SELECTED_WINDOW (XFRAME (frame))))
a4aafc54 123 && !(EQ (frame, selected_frame)
07d402c8 124 && minibuf_level > 0))
c8938ab6 125 Fset_frame_selected_window (frame, Fframe_first_window (frame), Qnil);
914860c2 126 }
89fdc4a0 127}
68313ed8 128
0c94f256 129Lisp_Object
971de7fb 130choose_minibuf_frame_1 (Lisp_Object ignore)
0c94f256
RS
131{
132 choose_minibuf_frame ();
133 return Qnil;
134}
135
68313ed8
RS
136DEFUN ("set-minibuffer-window", Fset_minibuffer_window,
137 Sset_minibuffer_window, 1, 1, 0,
af52c32d 138 doc: /* Specify which minibuffer window to use for the minibuffer.
6b61353c 139This affects where the minibuffer is displayed if you put text in it
af52c32d 140without invoking the usual minibuffer commands. */)
5842a27b 141 (Lisp_Object window)
68313ed8 142{
b7826503 143 CHECK_WINDOW (window);
68313ed8
RS
144 if (! MINI_WINDOW_P (XWINDOW (window)))
145 error ("Window is not a minibuffer window");
146
147 minibuf_window = window;
148
149 return window;
150}
151
89fdc4a0 152\f
f927c5ae
JB
153/* Actual minibuffer invocation. */
154
f57e2426
J
155static Lisp_Object read_minibuf_unwind (Lisp_Object);
156static Lisp_Object run_exit_minibuf_hook (Lisp_Object);
157static Lisp_Object read_minibuf (Lisp_Object, Lisp_Object,
158 Lisp_Object, Lisp_Object,
159 int, Lisp_Object,
160 Lisp_Object, Lisp_Object,
161 int, int);
162static Lisp_Object read_minibuf_noninteractive (Lisp_Object, Lisp_Object,
163 Lisp_Object, Lisp_Object,
164 int, Lisp_Object,
165 Lisp_Object, Lisp_Object,
166 int, int);
167static Lisp_Object string_to_object (Lisp_Object, Lisp_Object);
edfef199
GM
168
169
170/* Read a Lisp object from VAL and return it. If VAL is an empty
171 string, and DEFALT is a string, read from DEFALT instead of VAL. */
172
173static Lisp_Object
971de7fb 174string_to_object (Lisp_Object val, Lisp_Object defalt)
edfef199
GM
175{
176 struct gcpro gcpro1, gcpro2;
177 Lisp_Object expr_and_pos;
da43f021 178 EMACS_INT pos;
9ab4a725 179
edfef199 180 GCPRO2 (val, defalt);
9ab4a725 181
fb30dfd2
JL
182 if (STRINGP (val) && SCHARS (val) == 0)
183 {
184 if (STRINGP (defalt))
185 val = defalt;
186 else if (CONSP (defalt) && STRINGP (XCAR (defalt)))
187 val = XCAR (defalt);
188 }
9ab4a725 189
edfef199
GM
190 expr_and_pos = Fread_from_string (val, Qnil, Qnil);
191 pos = XINT (Fcdr (expr_and_pos));
d5db4077 192 if (pos != SCHARS (val))
edfef199
GM
193 {
194 /* Ignore trailing whitespace; any other trailing junk
195 is an error. */
da43f021 196 EMACS_INT i;
edfef199 197 pos = string_char_to_byte (val, pos);
d5db4077 198 for (i = pos; i < SBYTES (val); i++)
edfef199 199 {
d5db4077 200 int c = SREF (val, i);
edfef199
GM
201 if (c != ' ' && c != '\t' && c != '\n')
202 error ("Trailing garbage following expression");
203 }
204 }
9ab4a725 205
edfef199
GM
206 val = Fcar (expr_and_pos);
207 RETURN_UNGCPRO (val);
208}
209
210
211/* Like read_minibuf but reading from stdin. This function is called
212 from read_minibuf to do the job if noninteractive. */
213
214static Lisp_Object
d5a3eaaf
AS
215read_minibuf_noninteractive (Lisp_Object map, Lisp_Object initial,
216 Lisp_Object prompt, Lisp_Object backup_n,
217 int expflag,
218 Lisp_Object histvar, Lisp_Object histpos,
219 Lisp_Object defalt,
220 int allow_props, int inherit_input_method)
edfef199
GM
221{
222 int size, len;
223 char *line, *s;
edfef199
GM
224 Lisp_Object val;
225
d5db4077 226 fprintf (stdout, "%s", SDATA (prompt));
edfef199
GM
227 fflush (stdout);
228
6bbd7a29 229 val = Qnil;
edfef199
GM
230 size = 100;
231 len = 0;
232 line = (char *) xmalloc (size * sizeof *line);
233 while ((s = fgets (line + len, size - len, stdin)) != NULL
234 && (len = strlen (line),
235 len == size - 1 && line[len - 1] != '\n'))
236 {
237 size *= 2;
238 line = (char *) xrealloc (line, size);
239 }
240
241 if (s)
242 {
243 len = strlen (line);
9ab4a725 244
edfef199
GM
245 if (len > 0 && line[len - 1] == '\n')
246 line[--len] = '\0';
9ab4a725 247
edfef199
GM
248 val = build_string (line);
249 xfree (line);
250 }
251 else
252 {
253 xfree (line);
254 error ("Error reading from stdin");
255 }
9ab4a725 256
edfef199
GM
257 /* If Lisp form desired instead of string, parse it. */
258 if (expflag)
fb30dfd2 259 val = string_to_object (val, CONSP (defalt) ? XCAR (defalt) : defalt);
9ab4a725 260
edfef199
GM
261 return val;
262}
1011edb5 263\f
873ef78e 264DEFUN ("minibufferp", Fminibufferp,
6d1b1d7b
JPW
265 Sminibufferp, 0, 1, 0,
266 doc: /* Return t if BUFFER is a minibuffer.
6b61353c
KH
267No argument or nil as argument means use current buffer as BUFFER.
268BUFFER can be a buffer or a buffer name. */)
5842a27b 269 (Lisp_Object buffer)
873ef78e
RS
270{
271 Lisp_Object tem;
272
6d1b1d7b
JPW
273 if (NILP (buffer))
274 buffer = Fcurrent_buffer ();
275 else if (STRINGP (buffer))
276 buffer = Fget_buffer (buffer);
277 else
278 CHECK_BUFFER (buffer);
279
280 tem = Fmemq (buffer, Vminibuffer_list);
873ef78e
RS
281 return ! NILP (tem) ? Qt : Qnil;
282}
283
a346ec72
MB
284DEFUN ("minibuffer-prompt-end", Fminibuffer_prompt_end,
285 Sminibuffer_prompt_end, 0, 0, 0,
af52c32d 286 doc: /* Return the buffer position of the end of the minibuffer prompt.
eb7c9b64 287Return (point-min) if current buffer is not a minibuffer. */)
5842a27b 288 (void)
a346ec72
MB
289{
290 /* This function is written to be most efficient when there's a prompt. */
873ef78e
RS
291 Lisp_Object beg, end, tem;
292 beg = make_number (BEGV);
293
294 tem = Fmemq (Fcurrent_buffer (), Vminibuffer_list);
295 if (NILP (tem))
296 return beg;
297
298 end = Ffield_end (beg, Qnil, Qnil);
9ab4a725 299
a346ec72 300 if (XINT (end) == ZV && NILP (Fget_char_property (beg, Qfield, Qnil)))
b056f36d 301 return beg;
a346ec72
MB
302 else
303 return end;
304}
305
306DEFUN ("minibuffer-contents", Fminibuffer_contents,
307 Sminibuffer_contents, 0, 0, 0,
029a305c 308 doc: /* Return the user input in a minibuffer as a string.
6cc62df0 309If the current buffer is not a minibuffer, return its entire contents. */)
5842a27b 310 (void)
a346ec72 311{
413d18e7 312 EMACS_INT prompt_end = XINT (Fminibuffer_prompt_end ());
a346ec72
MB
313 return make_buffer_string (prompt_end, ZV, 1);
314}
315
316DEFUN ("minibuffer-contents-no-properties", Fminibuffer_contents_no_properties,
317 Sminibuffer_contents_no_properties, 0, 0, 0,
029a305c 318 doc: /* Return the user input in a minibuffer as a string, without text-properties.
6cc62df0 319If the current buffer is not a minibuffer, return its entire contents. */)
5842a27b 320 (void)
a346ec72 321{
413d18e7 322 EMACS_INT prompt_end = XINT (Fminibuffer_prompt_end ());
a346ec72
MB
323 return make_buffer_string (prompt_end, ZV, 0);
324}
325
b5e1e449
JL
326DEFUN ("minibuffer-completion-contents", Fminibuffer_completion_contents,
327 Sminibuffer_completion_contents, 0, 0, 0,
328 doc: /* Return the user input in a minibuffer before point as a string.
329That is what completion commands operate on.
6cc62df0 330If the current buffer is not a minibuffer, return its entire contents. */)
5842a27b 331 (void)
b5e1e449 332{
413d18e7 333 EMACS_INT prompt_end = XINT (Fminibuffer_prompt_end ());
b5e1e449
JL
334 if (PT < prompt_end)
335 error ("Cannot do completion in the prompt");
336 return make_buffer_string (prompt_end, PT, 1);
337}
338
1011edb5 339\f
6b61353c
KH
340/* Read from the minibuffer using keymap MAP and initial contents INITIAL,
341 putting point minus BACKUP_N bytes from the end of INITIAL,
770970cb 342 prompting with PROMPT (a string), using history list HISTVAR
6b61353c
KH
343 with initial position HISTPOS. INITIAL should be a string or a
344 cons of a string and an integer. BACKUP_N should be <= 0, or
345 Qnil, which is equivalent to 0. If INITIAL is a cons, BACKUP_N is
346 ignored and replaced with an integer that puts point at one-indexed
347 position N in INITIAL, where N is the CDR of INITIAL, or at the
348 beginning of INITIAL if N <= 0.
770970cb
RS
349
350 Normally return the result as a string (the text that was read),
3ab14176 351 but if EXPFLAG is nonzero, read it and return the object read.
b278606c
BF
352 If HISTVAR is given, save the value read on that history only if it doesn't
353 match the front of that history list exactly. The value is pushed onto
e5d4686b 354 the list as the string that was read.
770970cb 355
4f9f637a 356 DEFALT specifies the default value for the sake of history commands.
c3421833 357
cee54539
KH
358 If ALLOW_PROPS is nonzero, we do not throw away text properties.
359
6b61353c 360 if INHERIT_INPUT_METHOD is nonzero, the minibuffer inherits the
cee54539 361 current input method. */
e5d4686b
RS
362
363static Lisp_Object
d5a3eaaf
AS
364read_minibuf (Lisp_Object map, Lisp_Object initial, Lisp_Object prompt,
365 Lisp_Object backup_n, int expflag,
366 Lisp_Object histvar, Lisp_Object histpos, Lisp_Object defalt,
367 int allow_props, int inherit_input_method)
f927c5ae 368{
00a34088 369 Lisp_Object val;
aed13378 370 int count = SPECPDL_INDEX ();
cee54539
KH
371 Lisp_Object mini_frame, ambient_dir, minibuffer, input_method;
372 struct gcpro gcpro1, gcpro2, gcpro3, gcpro4, gcpro5;
c75000c7 373 Lisp_Object enable_multibyte;
6b61353c 374 int pos = INTEGERP (backup_n) ? XINT (backup_n) : 0;
4f9f637a
RS
375 /* String to add to the history. */
376 Lisp_Object histstring;
377
b20de1cd
RS
378 Lisp_Object empty_minibuf;
379 Lisp_Object dummy, frame;
380
e5d4686b
RS
381 specbind (Qminibuffer_default, defalt);
382
ef72eaff
KS
383 /* If Vminibuffer_completing_file_name is `lambda' on entry, it was t
384 in previous recursive minibuffer, but was not set explicitly
385 to t for this invocation, so set it to nil in this minibuffer.
386 Save the old value now, before we change it. */
387 specbind (intern ("minibuffer-completing-file-name"), Vminibuffer_completing_file_name);
388 if (EQ (Vminibuffer_completing_file_name, Qlambda))
389 Vminibuffer_completing_file_name = Qnil;
390
d148e14d 391#ifdef HAVE_WINDOW_SYSTEM
526a058f
GM
392 if (display_hourglass_p)
393 cancel_hourglass ();
e5baa1a7 394#endif
718d3251 395
6b61353c
KH
396 if (!NILP (initial))
397 {
398 if (CONSP (initial))
399 {
400 backup_n = Fcdr (initial);
401 initial = Fcar (initial);
402 CHECK_STRING (initial);
403 if (!NILP (backup_n))
404 {
405 CHECK_NUMBER (backup_n);
406 /* Convert to distance from end of input. */
407 if (XINT (backup_n) < 1)
408 /* A number too small means the beginning of the string. */
409 pos = - SCHARS (initial);
410 else
411 pos = XINT (backup_n) - 1 - SCHARS (initial);
412 }
413 }
414 else
415 CHECK_STRING (initial);
416 }
00a34088 417 val = Qnil;
57ceaa8a 418 ambient_dir = current_buffer->directory;
cee54539 419 input_method = Qnil;
c75000c7 420 enable_multibyte = Qnil;
57ceaa8a 421
00a34088
RS
422 /* Don't need to protect PROMPT, HISTVAR, and HISTPOS because we
423 store them away before we can GC. Don't need to protect
424 BACKUP_N because we use the value only if it is an integer. */
cee54539 425 GCPRO5 (map, initial, val, ambient_dir, input_method);
f927c5ae 426
7510b296 427 if (!STRINGP (prompt))
a2665596 428 prompt = empty_unibyte_string;
f927c5ae 429
f927c5ae 430 if (!enable_recursive_minibuffers
be15a518
RS
431 && minibuf_level > 0)
432 {
433 if (EQ (selected_window, minibuf_window))
434 error ("Command attempted to use minibuffer while in minibuffer");
435 else
436 /* If we're in another window, cancel the minibuffer that's active. */
437 Fthrow (Qexit,
438 build_string ("Command attempted to use minibuffer while in minibuffer"));
439 }
f927c5ae 440
a9051c88
DN
441 if ((noninteractive
442 /* In case we are running as a daemon, only do this before
443 detaching from the terminal. */
444 || (IS_DAEMON && (daemon_pipe[1] >= 0)))
445 && NILP (Vexecuting_kbd_macro))
c28b847b 446 {
6b61353c
KH
447 val = read_minibuf_noninteractive (map, initial, prompt,
448 make_number (pos),
c28b847b
GM
449 expflag, histvar, histpos, defalt,
450 allow_props, inherit_input_method);
f9b9ccef 451 UNGCPRO;
c28b847b
GM
452 return unbind_to (count, val);
453 }
edfef199 454
748dc60a 455 /* Choose the minibuffer window and frame, and take action on them. */
f927c5ae 456
c5b6b680
RS
457 choose_minibuf_frame ();
458
0c94f256
RS
459 record_unwind_protect (choose_minibuf_frame_1, Qnil);
460
f927c5ae 461 record_unwind_protect (Fset_window_configuration,
b2b2c677
JB
462 Fcurrent_window_configuration (Qnil));
463
ff11dfa1
JB
464 /* If the minibuffer window is on a different frame, save that
465 frame's configuration too. */
75f00e72 466 mini_frame = WINDOW_FRAME (XWINDOW (minibuf_window));
a4aafc54 467 if (!EQ (mini_frame, selected_frame))
5061d9c3
RS
468 record_unwind_protect (Fset_window_configuration,
469 Fcurrent_window_configuration (mini_frame));
5563e8e8
KH
470
471 /* If the minibuffer is on an iconified or invisible frame,
472 make it visible now. */
473 Fmake_frame_visible (mini_frame);
474
6a9ee000
RS
475 if (minibuffer_auto_raise)
476 Fraise_frame (mini_frame);
f927c5ae 477
b3e6f69c 478 temporarily_switch_to_single_kboard (XFRAME (mini_frame));
256c9c3a 479
748dc60a
RS
480 /* We have to do this after saving the window configuration
481 since that is what restores the current buffer. */
482
483 /* Arrange to restore a number of minibuffer-related variables.
484 We could bind each variable separately, but that would use lots of
485 specpdl slots. */
486 minibuf_save_list
487 = Fcons (Voverriding_local_map,
3372a51b 488 Fcons (minibuf_window,
ef72eaff 489 minibuf_save_list));
748dc60a
RS
490 minibuf_save_list
491 = Fcons (minibuf_prompt,
492 Fcons (make_number (minibuf_prompt_width),
493 Fcons (Vhelp_form,
494 Fcons (Vcurrent_prefix_arg,
495 Fcons (Vminibuffer_history_position,
496 Fcons (Vminibuffer_history_variable,
497 minibuf_save_list))))));
498
499 record_unwind_protect (read_minibuf_unwind, Qnil);
500 minibuf_level++;
7292839d
SM
501 /* We are exiting the minibuffer one way or the other, so run the hook.
502 It should be run before unwinding the minibuf settings. Do it
503 separately from read_minibuf_unwind because we need to make sure that
504 read_minibuf_unwind is fully executed even if exit-minibuffer-hook
505 signals an error. --Stef */
506 record_unwind_protect (run_exit_minibuf_hook, Qnil);
748dc60a
RS
507
508 /* Now that we can restore all those variables, start changing them. */
509
1e3f16d5 510 minibuf_prompt_width = 0;
748dc60a
RS
511 minibuf_prompt = Fcopy_sequence (prompt);
512 Vminibuffer_history_position = histpos;
513 Vminibuffer_history_variable = histvar;
514 Vhelp_form = Vminibuffer_help_form;
ef72eaff
KS
515 /* If this minibuffer is reading a file name, that doesn't mean
516 recursive ones are. But we cannot set it to nil, because
517 completion code still need to know the minibuffer is completing a
518 file name. So use `lambda' as intermediate value meaning
519 "t" in this minibuffer, but "nil" in next minibuffer. */
520 if (!NILP (Vminibuffer_completing_file_name))
521 Vminibuffer_completing_file_name = Qlambda;
748dc60a 522
cee54539 523 if (inherit_input_method)
c75000c7 524 {
fd771ceb 525 /* `current-input-method' is buffer local. So, remember it in
c75000c7
RS
526 INPUT_METHOD before changing the current buffer. */
527 input_method = Fsymbol_value (Qcurrent_input_method);
528 enable_multibyte = current_buffer->enable_multibyte_characters;
529 }
cee54539 530
748dc60a
RS
531 /* Switch to the minibuffer. */
532
4f69d8f6
RS
533 minibuffer = get_minibuffer (minibuf_level);
534 Fset_buffer (minibuffer);
64a3a3c0 535
1d69c502
RS
536 /* If appropriate, copy enable-multibyte-characters into the minibuffer. */
537 if (inherit_input_method)
538 current_buffer->enable_multibyte_characters = enable_multibyte;
539
64a3a3c0
JB
540 /* The current buffer's default directory is usually the right thing
541 for our minibuffer here. However, if you're typing a command at
542 a minibuffer-only frame when minibuf_level is zero, then buf IS
543 the current_buffer, so reset_buffer leaves buf's default
544 directory unchanged. This is a bummer when you've just started
545 up Emacs and buf's default directory is Qnil. Here's a hack; can
546 you think of something better to do? Find another buffer with a
547 better directory, and use that one instead. */
748dc60a
RS
548 if (STRINGP (ambient_dir))
549 current_buffer->directory = ambient_dir;
64a3a3c0
JB
550 else
551 {
552 Lisp_Object buf_list;
553
554 for (buf_list = Vbuffer_alist;
555 CONSP (buf_list);
7539e11f 556 buf_list = XCDR (buf_list))
64a3a3c0 557 {
1e62748e 558 Lisp_Object other_buf;
64a3a3c0 559
7539e11f 560 other_buf = XCDR (XCAR (buf_list));
7510b296 561 if (STRINGP (XBUFFER (other_buf)->directory))
64a3a3c0
JB
562 {
563 current_buffer->directory = XBUFFER (other_buf)->directory;
564 break;
565 }
566 }
567 }
568
a4aafc54
GM
569 if (!EQ (mini_frame, selected_frame))
570 Fredirect_frame_focus (selected_frame, mini_frame);
43bad991 571
f927c5ae 572 Vminibuf_scroll_window = selected_window;
6122844a 573 if (minibuf_level == 1 || !EQ (minibuf_window, selected_window))
5705966b 574 minibuf_selected_window = selected_window;
b20de1cd
RS
575
576 /* Empty out the minibuffers of all frames other than the one
577 where we are going to display one now.
578 Set them to point to ` *Minibuf-0*', which is always empty. */
579 empty_minibuf = Fget_buffer (build_string (" *Minibuf-0*"));
580
581 FOR_EACH_FRAME (dummy, frame)
582 {
583 Lisp_Object root_window = Fframe_root_window (frame);
584 Lisp_Object mini_window = XWINDOW (root_window)->next;
585
dd95745a
RS
586 if (! NILP (mini_window) && ! EQ (mini_window, minibuf_window)
587 && !NILP (Fwindow_minibuffer_p (mini_window)))
b20de1cd
RS
588 Fset_window_buffer (mini_window, empty_minibuf, Qnil);
589 }
590
591 /* Display this minibuffer in the proper window. */
cbbfe056 592 Fset_window_buffer (minibuf_window, Fcurrent_buffer (), Qnil);
f1321dc3 593 Fselect_window (minibuf_window, Qnil);
5a866662 594 XSETFASTINT (XWINDOW (minibuf_window)->hscroll, 0);
f927c5ae 595
748dc60a
RS
596 Fmake_local_variable (Qprint_escape_newlines);
597 print_escape_newlines = 1;
598
599 /* Erase the buffer. */
59115a22 600 {
331379bf 601 int count1 = SPECPDL_INDEX ();
59115a22 602 specbind (Qinhibit_read_only, Qt);
a41edd99 603 specbind (Qinhibit_modification_hooks, Qt);
59115a22 604 Ferase_buffer ();
d9d7b298
SM
605
606 if (!NILP (current_buffer->enable_multibyte_characters)
607 && ! STRING_MULTIBYTE (minibuf_prompt))
608 minibuf_prompt = Fstring_make_multibyte (minibuf_prompt);
6cc62df0 609
d9d7b298
SM
610 /* Insert the prompt, record where it ends. */
611 Finsert (1, &minibuf_prompt);
612 if (PT > BEG)
613 {
614 Fput_text_property (make_number (BEG), make_number (PT),
615 Qfront_sticky, Qt, Qnil);
616 Fput_text_property (make_number (BEG), make_number (PT),
617 Qrear_nonsticky, Qt, Qnil);
618 Fput_text_property (make_number (BEG), make_number (PT),
619 Qfield, Qt, Qnil);
620 Fadd_text_properties (make_number (BEG), make_number (PT),
621 Vminibuffer_prompt_properties, Qnil);
622 }
59115a22
RS
623 unbind_to (count1, Qnil);
624 }
625
9ab4a725
TTN
626 minibuf_prompt_width = (int) current_column (); /* iftc */
627
748dc60a 628 /* Put in the initial input. */
56a98455 629 if (!NILP (initial))
f927c5ae
JB
630 {
631 Finsert (1, &initial);
6b61353c 632 Fforward_char (make_number (pos));
f927c5ae
JB
633 }
634
39e98b38 635 clear_message (1, 1);
f927c5ae
JB
636 current_buffer->keymap = map;
637
cee54539 638 /* Turn on an input method stored in INPUT_METHOD if any. */
6801b300 639 if (STRINGP (input_method) && !NILP (Ffboundp (Qactivate_input_method)))
cee54539
KH
640 call1 (Qactivate_input_method, input_method);
641
5c781212
RS
642 /* Run our hook, but not if it is empty.
643 (run-hooks would do nothing if it is empty,
fd771ceb 644 but it's important to save time here in the usual case.) */
92d3b06e
RS
645 if (!NILP (Vminibuffer_setup_hook) && !EQ (Vminibuffer_setup_hook, Qunbound)
646 && !NILP (Vrun_hooks))
5c781212
RS
647 call1 (Vrun_hooks, Qminibuffer_setup_hook);
648
4e6b7204
MB
649 /* Don't allow the user to undo past this point. */
650 current_buffer->undo_list = Qnil;
651
f927c5ae
JB
652 recursive_edit_1 ();
653
654 /* If cursor is on the minibuffer line,
655 show the user we have exited by putting it in column 0. */
279cf52c 656 if (XWINDOW (minibuf_window)->cursor.vpos >= 0
f927c5ae
JB
657 && !noninteractive)
658 {
279cf52c
GM
659 XWINDOW (minibuf_window)->cursor.hpos = 0;
660 XWINDOW (minibuf_window)->cursor.x = 0;
661 XWINDOW (minibuf_window)->must_be_updated_p = 1;
a4aafc54 662 update_frame (XFRAME (selected_frame), 1, 1);
fa971ac3
KL
663 {
664 struct frame *f = XFRAME (XWINDOW (minibuf_window)->frame);
665 struct redisplay_interface *rif = FRAME_RIF (f);
666 if (rif && rif->flush_display)
667 rif->flush_display (f);
668 }
f927c5ae
JB
669 }
670
c3421833 671 /* Make minibuffer contents into a string. */
4f69d8f6 672 Fset_buffer (minibuffer);
be95a9b6 673 if (allow_props)
a346ec72 674 val = Fminibuffer_contents ();
be95a9b6 675 else
a346ec72 676 val = Fminibuffer_contents_no_properties ();
770970cb 677
b278606c 678 /* VAL is the string of minibuffer text. */
7019cca7 679
b278606c
BF
680 last_minibuf_string = val;
681
4f9f637a 682 /* Choose the string to add to the history. */
b35cd215 683 if (SCHARS (val) != 0)
4f9f637a
RS
684 histstring = val;
685 else if (STRINGP (defalt))
686 histstring = defalt;
fb30dfd2
JL
687 else if (CONSP (defalt) && STRINGP (XCAR (defalt)))
688 histstring = XCAR (defalt);
4f9f637a
RS
689 else
690 histstring = Qnil;
691
692 /* Add the value to the appropriate history list, if any. */
179a4ca7
JL
693 if (!NILP (Vhistory_add_new_input)
694 && SYMBOLP (Vminibuffer_history_variable)
4f9f637a 695 && !NILP (histstring))
3ab14176
KH
696 {
697 /* If the caller wanted to save the value read on a history list,
698 then do so if the value is not already the front of the list. */
699 Lisp_Object histval;
c6d65724
RS
700
701 /* If variable is unbound, make it nil. */
c6d65724 702
8c2dccbf
SM
703 histval = find_symbol_value (Vminibuffer_history_variable);
704 if (EQ (histval, Qunbound))
705 Fset (Vminibuffer_history_variable, Qnil);
3ab14176
KH
706
707 /* The value of the history variable must be a cons or nil. Other
708 values are unacceptable. We silently ignore these values. */
4f9f637a 709
3ab14176 710 if (NILP (histval)
9f6131cf 711 || (CONSP (histval)
4f9f637a 712 /* Don't duplicate the most recent entry in the history. */
b35cd215 713 && (NILP (Fequal (histstring, Fcar (histval))))))
77aa8edf
RS
714 {
715 Lisp_Object length;
716
0da4d471 717 if (history_delete_duplicates) Fdelete (histstring, histval);
4f9f637a 718 histval = Fcons (histstring, histval);
77aa8edf
RS
719 Fset (Vminibuffer_history_variable, histval);
720
721 /* Truncate if requested. */
722 length = Fget (Vminibuffer_history_variable, Qhistory_length);
723 if (NILP (length)) length = Vhistory_length;
e5d4686b
RS
724 if (INTEGERP (length))
725 {
726 if (XINT (length) <= 0)
727 Fset (Vminibuffer_history_variable, Qnil);
728 else
729 {
730 Lisp_Object temp;
731
732 temp = Fnthcdr (Fsub1 (length), histval);
733 if (CONSP (temp)) Fsetcdr (temp, Qnil);
734 }
735 }
77aa8edf 736 }
9f6131cf
RS
737 }
738
739 /* If Lisp form desired instead of string, parse it. */
740 if (expflag)
edfef199 741 val = string_to_object (val, defalt);
3ab14176 742
00a34088
RS
743 /* The appropriate frame will get selected
744 in set-window-configuration. */
f9b9ccef
SM
745 UNGCPRO;
746 return unbind_to (count, val);
f927c5ae
JB
747}
748
749/* Return a buffer to be used as the minibuffer at depth `depth'.
750 depth = 0 is the lowest allowed argument, and that is the value
751 used for nonrecursive minibuffer invocations */
752
753Lisp_Object
971de7fb 754get_minibuffer (int depth)
f927c5ae
JB
755{
756 Lisp_Object tail, num, buf;
9f6c23bc 757 char name[24];
f927c5ae 758
5a866662 759 XSETFASTINT (num, depth);
f927c5ae 760 tail = Fnthcdr (num, Vminibuffer_list);
56a98455 761 if (NILP (tail))
f927c5ae
JB
762 {
763 tail = Fcons (Qnil, Qnil);
764 Vminibuffer_list = nconc2 (Vminibuffer_list, tail);
765 }
766 buf = Fcar (tail);
56a98455 767 if (NILP (buf) || NILP (XBUFFER (buf)->name))
f927c5ae
JB
768 {
769 sprintf (name, " *Minibuf-%d*", depth);
770 buf = Fget_buffer_create (build_string (name));
5d6533f1
JB
771
772 /* Although the buffer's name starts with a space, undo should be
773 enabled in it. */
774 Fbuffer_enable_undo (buf);
775
f3fbd155 776 XSETCAR (tail, buf);
f927c5ae
JB
777 }
778 else
5956f71d 779 {
aed13378 780 int count = SPECPDL_INDEX ();
7f856567
SM
781 /* `reset_buffer' blindly sets the list of overlays to NULL, so we
782 have to empty the list, otherwise we end up with overlays that
783 think they belong to this buffer while the buffer doesn't know about
784 them any more. */
599ca9c2
SM
785 delete_all_overlays (XBUFFER (buf));
786 reset_buffer (XBUFFER (buf));
6b3faad8
RS
787 record_unwind_protect (Fset_buffer, Fcurrent_buffer ());
788 Fset_buffer (buf);
789 Fkill_all_local_variables ();
790 unbind_to (count, Qnil);
5956f71d 791 }
64a3a3c0 792
f927c5ae
JB
793 return buf;
794}
795
7292839d 796static Lisp_Object
971de7fb 797run_exit_minibuf_hook (Lisp_Object data)
7292839d
SM
798{
799 if (!NILP (Vminibuffer_exit_hook) && !EQ (Vminibuffer_exit_hook, Qunbound)
800 && !NILP (Vrun_hooks))
801 safe_run_hooks (Qminibuffer_exit_hook);
802
803 return Qnil;
804}
805
279cf52c
GM
806/* This function is called on exiting minibuffer, whether normally or
807 not, and it restores the current window, buffer, etc. */
f927c5ae 808
9d815fd9 809static Lisp_Object
971de7fb 810read_minibuf_unwind (Lisp_Object data)
f927c5ae 811{
c24e1160 812 Lisp_Object old_deactivate_mark;
59115a22 813 Lisp_Object window;
c24e1160 814
f927c5ae 815 /* If this was a recursive minibuffer,
59115a22 816 tie the minibuffer window back to the outer level minibuffer buffer. */
f927c5ae 817 minibuf_level--;
f927c5ae 818
59115a22 819 window = minibuf_window;
279cf52c
GM
820 /* To keep things predictable, in case it matters, let's be in the
821 minibuffer when we reset the relevant variables. */
59115a22
RS
822 Fset_buffer (XWINDOW (window)->buffer);
823
824 /* Restore prompt, etc, from outer minibuffer level. */
4d04c1f1
KH
825 minibuf_prompt = Fcar (minibuf_save_list);
826 minibuf_save_list = Fcdr (minibuf_save_list);
827 minibuf_prompt_width = XFASTINT (Fcar (minibuf_save_list));
828 minibuf_save_list = Fcdr (minibuf_save_list);
829 Vhelp_form = Fcar (minibuf_save_list);
830 minibuf_save_list = Fcdr (minibuf_save_list);
ee9e37ab 831 Vcurrent_prefix_arg = Fcar (minibuf_save_list);
4d04c1f1
KH
832 minibuf_save_list = Fcdr (minibuf_save_list);
833 Vminibuffer_history_position = Fcar (minibuf_save_list);
834 minibuf_save_list = Fcdr (minibuf_save_list);
835 Vminibuffer_history_variable = Fcar (minibuf_save_list);
836 minibuf_save_list = Fcdr (minibuf_save_list);
30e13e56 837 Voverriding_local_map = Fcar (minibuf_save_list);
c5b6b680 838 minibuf_save_list = Fcdr (minibuf_save_list);
914860c2
RS
839#if 0
840 temp = Fcar (minibuf_save_list);
841 if (FRAME_LIVE_P (XFRAME (WINDOW_FRAME (XWINDOW (temp)))))
842 minibuf_window = temp;
843#endif
30e13e56 844 minibuf_save_list = Fcdr (minibuf_save_list);
59115a22
RS
845
846 /* Erase the minibuffer we were using at this level. */
847 {
aed13378 848 int count = SPECPDL_INDEX ();
59115a22
RS
849 /* Prevent error in erase-buffer. */
850 specbind (Qinhibit_read_only, Qt);
bd819d14 851 specbind (Qinhibit_modification_hooks, Qt);
59115a22
RS
852 old_deactivate_mark = Vdeactivate_mark;
853 Ferase_buffer ();
854 Vdeactivate_mark = old_deactivate_mark;
855 unbind_to (count, Qnil);
856 }
857
544e358d
GM
858 /* When we get to the outmost level, make sure we resize the
859 mini-window back to its normal size. */
860 if (minibuf_level == 0)
1e3f16d5 861 resize_mini_window (XWINDOW (window), 0);
544e358d 862
59115a22
RS
863 /* Make sure minibuffer window is erased, not ignored. */
864 windows_or_buffers_changed++;
865 XSETFASTINT (XWINDOW (window)->last_modified, 0);
193e4518 866 XSETFASTINT (XWINDOW (window)->last_overlay_modified, 0);
9d815fd9 867 return Qnil;
f927c5ae
JB
868}
869\f
b9d721de 870
b35cd215 871DEFUN ("read-from-minibuffer", Fread_from_minibuffer, Sread_from_minibuffer, 1, 7, 0,
af52c32d 872 doc: /* Read a string from the minibuffer, prompting with string PROMPT.
6b61353c
KH
873The optional second arg INITIAL-CONTENTS is an obsolete alternative to
874 DEFAULT-VALUE. It normally should be nil in new code, except when
875 HIST is a cons. It is discussed in more detail below.
a1f17501
PJ
876Third arg KEYMAP is a keymap to use whilst reading;
877 if omitted or nil, the default is `minibuffer-local-map'.
fd771ceb 878If fourth arg READ is non-nil, then interpret the result as a Lisp object
a1f17501
PJ
879 and return that object:
880 in other words, do `(car (read-from-string INPUT-STRING))'
6b61353c
KH
881Fifth arg HIST, if non-nil, specifies a history list and optionally
882 the initial position in the list. It can be a symbol, which is the
883 history list variable to use, or it can be a cons cell
884 (HISTVAR . HISTPOS). In that case, HISTVAR is the history list variable
885 to use, and HISTPOS is the initial position for use by the minibuffer
886 history commands. For consistency, you should also specify that
887 element of the history as the value of INITIAL-CONTENTS. Positions
888 are counted starting from 1 at the beginning of the list.
2e3148e2
JL
889Sixth arg DEFAULT-VALUE is the default value or the list of default values.
890 If non-nil, it is available for history commands, and as the value
891 (or the first element of the list of default values) to return
892 if the user enters the empty string. But, unless READ is non-nil,
893 `read-from-minibuffer' does NOT return DEFAULT-VALUE if the user enters
894 empty input! It returns the empty string.
a1f17501 895Seventh arg INHERIT-INPUT-METHOD, if non-nil, means the minibuffer inherits
029a305c 896 the current input method and the setting of `enable-multibyte-characters'.
a1f17501
PJ
897If the variable `minibuffer-allow-text-properties' is non-nil,
898 then the string which is returned includes whatever text properties
6b61353c
KH
899 were present in the minibuffer. Otherwise the value has no text properties.
900
901The remainder of this documentation string describes the
902INITIAL-CONTENTS argument in more detail. It is only relevant when
903studying existing code, or when HIST is a cons. If non-nil,
904INITIAL-CONTENTS is a string to be inserted into the minibuffer before
905reading input. Normally, point is put at the end of that string.
906However, if INITIAL-CONTENTS is \(STRING . POSITION), the initial
907input is STRING, but point is placed at _one-indexed_ position
908POSITION in the minibuffer. Any integer value less than or equal to
909one puts point at the beginning of the string. *Note* that this
910behavior differs from the way such arguments are used in `completing-read'
911and some related functions, which use zero-indexing for POSITION. */)
5842a27b 912 (Lisp_Object prompt, Lisp_Object initial_contents, Lisp_Object keymap, Lisp_Object read, Lisp_Object hist, Lisp_Object default_value, Lisp_Object inherit_input_method)
f927c5ae 913{
6b61353c 914 Lisp_Object histvar, histpos, val;
1d8d92f4
RS
915 struct gcpro gcpro1;
916
b7826503 917 CHECK_STRING (prompt);
56a98455 918 if (NILP (keymap))
f927c5ae
JB
919 keymap = Vminibuffer_local_map;
920 else
02067692 921 keymap = get_keymap (keymap, 1, 0);
770970cb 922
7510b296 923 if (SYMBOLP (hist))
770970cb
RS
924 {
925 histvar = hist;
926 histpos = Qnil;
927 }
928 else
929 {
930 histvar = Fcar_safe (hist);
931 histpos = Fcdr_safe (hist);
932 }
933 if (NILP (histvar))
934 histvar = Qminibuffer_history;
935 if (NILP (histpos))
5a866662 936 XSETFASTINT (histpos, 0);
770970cb 937
1d8d92f4 938 GCPRO1 (default_value);
e5d4686b 939 val = read_minibuf (keymap, initial_contents, prompt,
6b61353c 940 Qnil, !NILP (read),
c3421833 941 histvar, histpos, default_value,
cee54539 942 minibuffer_allow_text_properties,
b35cd215 943 !NILP (inherit_input_method));
1d8d92f4 944 UNGCPRO;
e5d4686b 945 return val;
f927c5ae
JB
946}
947
948DEFUN ("read-minibuffer", Fread_minibuffer, Sread_minibuffer, 1, 2, 0,
6b61353c 949 doc: /* Return a Lisp object read using the minibuffer, unevaluated.
a1f17501 950Prompt with PROMPT. If non-nil, optional second arg INITIAL-CONTENTS
6b61353c 951is a string to insert in the minibuffer before reading.
e298936f
JB
952\(INITIAL-CONTENTS can also be a cons of a string and an integer.
953Such arguments are used as in `read-from-minibuffer'.) */)
5842a27b 954 (Lisp_Object prompt, Lisp_Object initial_contents)
f927c5ae 955{
b7826503 956 CHECK_STRING (prompt);
770970cb 957 return read_minibuf (Vminibuffer_local_map, initial_contents,
e5d4686b 958 prompt, Qnil, 1, Qminibuffer_history,
b35cd215 959 make_number (0), Qnil, 0, 0);
f927c5ae
JB
960}
961
962DEFUN ("eval-minibuffer", Feval_minibuffer, Seval_minibuffer, 1, 2, 0,
af52c32d 963 doc: /* Return value of Lisp expression read using the minibuffer.
a1f17501 964Prompt with PROMPT. If non-nil, optional second arg INITIAL-CONTENTS
6b61353c 965is a string to insert in the minibuffer before reading.
e298936f
JB
966\(INITIAL-CONTENTS can also be a cons of a string and an integer.
967Such arguments are used as in `read-from-minibuffer'.) */)
5842a27b 968 (Lisp_Object prompt, Lisp_Object initial_contents)
f927c5ae 969{
627fb581
RS
970 return Feval (read_minibuf (Vread_expression_map, initial_contents,
971 prompt, Qnil, 1, Qread_expression_history,
a0ee6f27
SM
972 make_number (0), Qnil, 0, 0),
973 Qnil);
f927c5ae
JB
974}
975
976/* Functions that use the minibuffer to read various things. */
977
cee54539 978DEFUN ("read-string", Fread_string, Sread_string, 1, 5, 0,
af52c32d 979 doc: /* Read a string from the minibuffer, prompting with string PROMPT.
a1f17501 980If non-nil, second arg INITIAL-INPUT is a string to insert before reading.
6b61353c
KH
981 This argument has been superseded by DEFAULT-VALUE and should normally
982 be nil in new code. It behaves as in `read-from-minibuffer'. See the
983 documentation string of that function for details.
a1f17501
PJ
984The third arg HISTORY, if non-nil, specifies a history list
985 and optionally the initial position in the list.
986See `read-from-minibuffer' for details of HISTORY argument.
2e3148e2
JL
987Fourth arg DEFAULT-VALUE is the default value or the list of default values.
988 If non-nil, it is used for history commands, and as the value (or the first
989 element of the list of default values) to return if the user enters the
990 empty string.
a1f17501 991Fifth arg INHERIT-INPUT-METHOD, if non-nil, means the minibuffer inherits
029a305c 992 the current input method and the setting of `enable-multibyte-characters'. */)
5842a27b 993 (Lisp_Object prompt, Lisp_Object initial_input, Lisp_Object history, Lisp_Object default_value, Lisp_Object inherit_input_method)
f927c5ae 994{
b9a86585
RS
995 Lisp_Object val;
996 val = Fread_from_minibuffer (prompt, initial_input, Qnil,
997 Qnil, history, default_value,
b35cd215 998 inherit_input_method);
d5db4077 999 if (STRINGP (val) && SCHARS (val) == 0 && ! NILP (default_value))
fb30dfd2 1000 val = CONSP (default_value) ? XCAR (default_value) : default_value;
b9a86585 1001 return val;
f927c5ae
JB
1002}
1003
cee54539 1004DEFUN ("read-no-blanks-input", Fread_no_blanks_input, Sread_no_blanks_input, 1, 3, 0,
af52c32d 1005 doc: /* Read a string from the terminal, not allowing blanks.
6b61353c
KH
1006Prompt with PROMPT. Whitespace terminates the input. If INITIAL is
1007non-nil, it should be a string, which is used as initial input, with
1008point positioned at the end, so that SPACE will accept the input.
1009\(Actually, INITIAL can also be a cons of a string and an integer.
1010Such values are treated as in `read-from-minibuffer', but are normally
1011not useful in this function.)
a1f17501 1012Third arg INHERIT-INPUT-METHOD, if non-nil, means the minibuffer inherits
6b61353c 1013the current input method and the setting of`enable-multibyte-characters'. */)
5842a27b 1014 (Lisp_Object prompt, Lisp_Object initial, Lisp_Object inherit_input_method)
f927c5ae 1015{
b7826503 1016 CHECK_STRING (prompt);
c923ccc9 1017 return read_minibuf (Vminibuffer_local_ns_map, initial, prompt, Qnil,
cee54539 1018 0, Qminibuffer_history, make_number (0), Qnil, 0,
b35cd215 1019 !NILP (inherit_input_method));
f927c5ae
JB
1020}
1021
e5d4686b 1022DEFUN ("read-command", Fread_command, Sread_command, 1, 2, 0,
af52c32d 1023 doc: /* Read the name of a command and return as a symbol.
2e3148e2
JL
1024Prompt with PROMPT. By default, return DEFAULT-VALUE or its first element
1025if it is a list. */)
5842a27b 1026 (Lisp_Object prompt, Lisp_Object default_value)
f927c5ae 1027{
7c8d9931
RS
1028 Lisp_Object name, default_string;
1029
1030 if (NILP (default_value))
1031 default_string = Qnil;
1032 else if (SYMBOLP (default_value))
caa4733e 1033 default_string = SYMBOL_NAME (default_value);
7c8d9931
RS
1034 else
1035 default_string = default_value;
9ab4a725 1036
7c8d9931
RS
1037 name = Fcompleting_read (prompt, Vobarray, Qcommandp, Qt,
1038 Qnil, Qnil, default_string, Qnil);
1039 if (NILP (name))
1040 return name;
1041 return Fintern (name, Qnil);
f927c5ae
JB
1042}
1043
1044#ifdef NOTDEF
1045DEFUN ("read-function", Fread_function, Sread_function, 1, 1, 0,
af52c32d 1046 doc: /* One arg PROMPT, a string. Read the name of a function and return as a symbol.
fd771ceb 1047Prompt with PROMPT. */)
5842a27b 1048 (Lisp_Object prompt)
f927c5ae 1049{
cee54539 1050 return Fintern (Fcompleting_read (prompt, Vobarray, Qfboundp, Qt, Qnil, Qnil, Qnil, Qnil),
f927c5ae
JB
1051 Qnil);
1052}
1053#endif /* NOTDEF */
1054
e5d4686b 1055DEFUN ("read-variable", Fread_variable, Sread_variable, 1, 2, 0,
af52c32d 1056 doc: /* Read the name of a user variable and return it as a symbol.
2e3148e2
JL
1057Prompt with PROMPT. By default, return DEFAULT-VALUE or its first element
1058if it is a list.
316f9bfc 1059A user variable is one for which `user-variable-p' returns non-nil. */)
5842a27b 1060 (Lisp_Object prompt, Lisp_Object default_value)
f927c5ae 1061{
7c8d9931
RS
1062 Lisp_Object name, default_string;
1063
1064 if (NILP (default_value))
1065 default_string = Qnil;
1066 else if (SYMBOLP (default_value))
caa4733e 1067 default_string = SYMBOL_NAME (default_value);
7c8d9931
RS
1068 else
1069 default_string = default_value;
9ab4a725 1070
7c8d9931
RS
1071 name = Fcompleting_read (prompt, Vobarray,
1072 Quser_variable_p, Qt,
1073 Qnil, Qnil, default_string, Qnil);
1074 if (NILP (name))
1075 return name;
1076 return Fintern (name, Qnil);
f927c5ae
JB
1077}
1078
1079DEFUN ("read-buffer", Fread_buffer, Sread_buffer, 1, 3, 0,
fd771ceb
PJ
1080 doc: /* Read the name of a buffer and return as a string.
1081Prompt with PROMPT.
a1f17501 1082Optional second arg DEF is value to return if user enters an empty line.
2e3148e2 1083 If DEF is a list of default values, return its first element.
5fedada7
CY
1084Optional third arg REQUIRE-MATCH determines whether non-existing
1085 buffer names are allowed. It has the same meaning as the
a2a0d36b 1086 REQUIRE-MATCH argument of `completing-read'.
33df281c
CY
1087The argument PROMPT should be a string ending with a colon and a space.
1088If `read-buffer-completion-ignore-case' is non-nil, completion ignores
1089case while reading the buffer name.
1090If `read-buffer-function' is non-nil, this works by calling it as a
1091function, instead of the usual behavior. */)
5842a27b 1092 (Lisp_Object prompt, Lisp_Object def, Lisp_Object require_match)
f927c5ae 1093{
33df281c 1094 Lisp_Object args[4], result;
637de37e 1095 char *s;
97c3e4cc 1096 int len;
33df281c 1097 int count = SPECPDL_INDEX ();
9ab4a725 1098
7510b296 1099 if (BUFFERP (def))
f927c5ae 1100 def = XBUFFER (def)->name;
eebbfb01 1101
33df281c
CY
1102 specbind (Qcompletion_ignore_case,
1103 read_buffer_completion_ignore_case ? Qt : Qnil);
1104
eebbfb01
KH
1105 if (NILP (Vread_buffer_function))
1106 {
1107 if (!NILP (def))
1108 {
97c3e4cc
RF
1109 /* A default value was provided: we must change PROMPT,
1110 editing the default value in before the colon. To achieve
1111 this, we replace PROMPT with a substring that doesn't
1112 contain the terminal space and colon (if present). They
1113 are then added back using Fformat. */
1114
1115 if (STRINGP (prompt))
1116 {
637de37e 1117 s = SSDATA (prompt);
97c3e4cc
RF
1118 len = strlen (s);
1119 if (len >= 2 && s[len - 2] == ':' && s[len - 1] == ' ')
1120 len = len - 2;
1121 else if (len >= 1 && (s[len - 1] == ':' || s[len - 1] == ' '))
1122 len--;
1123
1124 prompt = make_specified_string (s, -1, len,
1125 STRING_MULTIBYTE (prompt));
1126 }
1127
1128 args[0] = build_string ("%s (default %s): ");
eebbfb01 1129 args[1] = prompt;
fb30dfd2 1130 args[2] = CONSP (def) ? XCAR (def) : def;
eebbfb01
KH
1131 prompt = Fformat (3, args);
1132 }
1133
33df281c
CY
1134 result = Fcompleting_read (prompt, intern ("internal-complete-buffer"),
1135 Qnil, require_match, Qnil, Qbuffer_name_history,
1136 def, Qnil);
eebbfb01
KH
1137 }
1138 else
f927c5ae 1139 {
eebbfb01 1140 args[0] = Vread_buffer_function;
f927c5ae
JB
1141 args[1] = prompt;
1142 args[2] = def;
eebbfb01 1143 args[3] = require_match;
33df281c 1144 result = Ffuncall(4, args);
f927c5ae 1145 }
33df281c 1146 return unbind_to (count, result);
f927c5ae
JB
1147}
1148\f
ec067ec7 1149static Lisp_Object
971de7fb 1150minibuf_conform_representation (Lisp_Object string, Lisp_Object basis)
ec067ec7
RS
1151{
1152 if (STRING_MULTIBYTE (string) == STRING_MULTIBYTE (basis))
1153 return string;
1154
1155 if (STRING_MULTIBYTE (string))
1156 return Fstring_make_unibyte (string);
1157 else
1158 return Fstring_make_multibyte (string);
1159}
1160
f927c5ae 1161DEFUN ("try-completion", Ftry_completion, Stry_completion, 2, 3, 0,
a284cdbb
RS
1162 doc: /* Return common substring of all completions of STRING in COLLECTION.
1163Test each possible completion specified by COLLECTION
1164to see if it begins with STRING. The possible completions may be
3809648a
KS
1165strings or symbols. Symbols are converted to strings before testing,
1166see `symbol-name'.
a284cdbb
RS
1167All that match STRING are compared together; the longest initial sequence
1168common to all these matches is the return value.
1169If there is no match at all, the return value is nil.
1170For a unique match which is exact, the return value is t.
1171
1172If COLLECTION is an alist, the keys (cars of elements) are the
1173possible completions. If an element is not a cons cell, then the
1174element itself is the possible completion.
1175If COLLECTION is a hash-table, all the keys that are strings or symbols
1176are the possible completions.
1177If COLLECTION is an obarray, the names of all symbols in the obarray
1178are the possible completions.
1179
1180COLLECTION can also be a function to do the completion itself.
a1f17501
PJ
1181It receives three arguments: the values STRING, PREDICATE and nil.
1182Whatever it returns becomes the value of `try-completion'.
1183
1184If optional third argument PREDICATE is non-nil,
1185it is used to test each possible match.
1186The match is a candidate only if PREDICATE returns non-nil.
1187The argument given to PREDICATE is the alist element
a284cdbb 1188or the symbol from the obarray. If COLLECTION is a hash-table,
85cd4372 1189predicate is called with two arguments: the key and the value.
a1f17501 1190Additionally to this predicate, `completion-regexp-list'
af52c32d 1191is used to further constrain the set of candidates. */)
5842a27b 1192 (Lisp_Object string, Lisp_Object collection, Lisp_Object predicate)
f927c5ae
JB
1193{
1194 Lisp_Object bestmatch, tail, elt, eltstring;
af2b7cd5 1195 /* Size in bytes of BESTMATCH. */
6bbd7a29 1196 int bestmatchsize = 0;
af2b7cd5 1197 /* These are in bytes, too. */
f927c5ae 1198 int compare, matchsize;
f6d4c7a4
RS
1199 enum { function_table, list_table, obarray_table, hash_table}
1200 type = (HASH_TABLE_P (collection) ? hash_table
1201 : VECTORP (collection) ? obarray_table
1202 : ((NILP (collection)
1203 || (CONSP (collection)
1204 && (!SYMBOLP (XCAR (collection))
1205 || NILP (XCAR (collection)))))
1206 ? list_table : function_table));
6bbd7a29 1207 int index = 0, obsize = 0;
f927c5ae 1208 int matchcount = 0;
acd81db9 1209 int bindcount = -1;
f927c5ae
JB
1210 Lisp_Object bucket, zero, end, tem;
1211 struct gcpro gcpro1, gcpro2, gcpro3, gcpro4;
1212
b7826503 1213 CHECK_STRING (string);
f6d4c7a4 1214 if (type == function_table)
a284cdbb 1215 return call3 (collection, string, predicate, Qnil);
f927c5ae 1216
6bbd7a29 1217 bestmatch = bucket = Qnil;
c8ae863b 1218 zero = make_number (0);
f927c5ae 1219
a284cdbb
RS
1220 /* If COLLECTION is not a list, set TAIL just for gc pro. */
1221 tail = collection;
f6d4c7a4 1222 if (type == obarray_table)
f927c5ae 1223 {
a284cdbb
RS
1224 collection = check_obarray (collection);
1225 obsize = XVECTOR (collection)->size;
1226 bucket = XVECTOR (collection)->contents[index];
f927c5ae
JB
1227 }
1228
1229 while (1)
1230 {
85cd4372 1231 /* Get the next element of the alist, obarray, or hash-table. */
f927c5ae
JB
1232 /* Exit the loop if the elements are all used up. */
1233 /* elt gets the alist element or symbol.
1234 eltstring gets the name to check as a completion. */
1235
f6d4c7a4 1236 if (type == list_table)
f927c5ae 1237 {
695deb18 1238 if (!CONSP (tail))
f927c5ae 1239 break;
695deb18
SM
1240 elt = XCAR (tail);
1241 eltstring = CONSP (elt) ? XCAR (elt) : elt;
1242 tail = XCDR (tail);
f927c5ae 1243 }
f6d4c7a4 1244 else if (type == obarray_table)
f927c5ae 1245 {
c8ae863b 1246 if (!EQ (bucket, zero))
f927c5ae 1247 {
9b6b374a
JB
1248 if (!SYMBOLP (bucket))
1249 error ("Bad data in guts of obarray");
f927c5ae 1250 elt = bucket;
3809648a 1251 eltstring = elt;
f927c5ae
JB
1252 if (XSYMBOL (bucket)->next)
1253 XSETSYMBOL (bucket, XSYMBOL (bucket)->next);
1254 else
5a866662 1255 XSETFASTINT (bucket, 0);
f927c5ae
JB
1256 }
1257 else if (++index >= obsize)
1258 break;
1259 else
1260 {
a284cdbb 1261 bucket = XVECTOR (collection)->contents[index];
f927c5ae
JB
1262 continue;
1263 }
1264 }
f6d4c7a4 1265 else /* if (type == hash_table) */
85cd4372 1266 {
a284cdbb
RS
1267 while (index < HASH_TABLE_SIZE (XHASH_TABLE (collection))
1268 && NILP (HASH_HASH (XHASH_TABLE (collection), index)))
85cd4372 1269 index++;
a284cdbb 1270 if (index >= HASH_TABLE_SIZE (XHASH_TABLE (collection)))
85cd4372
SM
1271 break;
1272 else
a284cdbb 1273 elt = eltstring = HASH_KEY (XHASH_TABLE (collection), index++);
85cd4372 1274 }
f927c5ae
JB
1275
1276 /* Is this element a possible completion? */
1277
3809648a
KS
1278 if (SYMBOLP (eltstring))
1279 eltstring = Fsymbol_name (eltstring);
1280
7510b296 1281 if (STRINGP (eltstring)
d5db4077 1282 && SCHARS (string) <= SCHARS (eltstring)
c8ae863b 1283 && (tem = Fcompare_strings (eltstring, zero,
d5db4077 1284 make_number (SCHARS (string)),
c8ae863b 1285 string, zero, Qnil,
6b61353c 1286 completion_ignore_case ? Qt : Qnil),
69f4ef20 1287 EQ (Qt, tem)))
f927c5ae
JB
1288 {
1289 /* Yes. */
42006772 1290 Lisp_Object regexps;
42006772
RS
1291
1292 /* Ignore this element if it fails to match all the regexps. */
6b61353c 1293 {
6b61353c
KH
1294 for (regexps = Vcompletion_regexp_list; CONSP (regexps);
1295 regexps = XCDR (regexps))
1296 {
acd81db9
DK
1297 if (bindcount < 0) {
1298 bindcount = SPECPDL_INDEX ();
1299 specbind (Qcase_fold_search,
1300 completion_ignore_case ? Qt : Qnil);
77443789 1301 }
6b61353c
KH
1302 tem = Fstring_match (XCAR (regexps), eltstring, zero);
1303 if (NILP (tem))
1304 break;
1305 }
6b61353c
KH
1306 if (CONSP (regexps))
1307 continue;
1308 }
42006772 1309
f927c5ae
JB
1310 /* Ignore this element if there is a predicate
1311 and the predicate doesn't like it. */
1312
7efd36fc 1313 if (!NILP (predicate))
f927c5ae 1314 {
7efd36fc 1315 if (EQ (predicate, Qcommandp))
c837f4f9 1316 tem = Fcommandp (elt, Qnil);
f927c5ae
JB
1317 else
1318 {
f6d4c7a4
RS
1319 if (bindcount >= 0)
1320 {
1321 unbind_to (bindcount, Qnil);
1322 bindcount = -1;
1323 }
f927c5ae 1324 GCPRO4 (tail, string, eltstring, bestmatch);
f6d4c7a4
RS
1325 tem = (type == hash_table
1326 ? call2 (predicate, elt,
1327 HASH_VALUE (XHASH_TABLE (collection),
1328 index - 1))
1329 : call1 (predicate, elt));
f927c5ae
JB
1330 UNGCPRO;
1331 }
56a98455 1332 if (NILP (tem)) continue;
f927c5ae
JB
1333 }
1334
1335 /* Update computation of how much all possible completions match */
1336
56a98455 1337 if (NILP (bestmatch))
af2b7cd5 1338 {
85cd4372 1339 matchcount = 1;
af2b7cd5 1340 bestmatch = eltstring;
d5db4077 1341 bestmatchsize = SCHARS (eltstring);
af2b7cd5 1342 }
f927c5ae
JB
1343 else
1344 {
d5db4077 1345 compare = min (bestmatchsize, SCHARS (eltstring));
c8ae863b 1346 tem = Fcompare_strings (bestmatch, zero,
69f4ef20 1347 make_number (compare),
c8ae863b 1348 eltstring, zero,
69f4ef20
RS
1349 make_number (compare),
1350 completion_ignore_case ? Qt : Qnil);
1351 if (EQ (tem, Qt))
1352 matchsize = compare;
1353 else if (XINT (tem) < 0)
1354 matchsize = - XINT (tem) - 1;
1355 else
1356 matchsize = XINT (tem) - 1;
1357
52b14ac0
JB
1358 if (completion_ignore_case)
1359 {
1360 /* If this is an exact match except for case,
1361 use it as the best match rather than one that is not an
1362 exact match. This way, we get the case pattern
1363 of the actual match. */
d5db4077
KR
1364 if ((matchsize == SCHARS (eltstring)
1365 && matchsize < SCHARS (bestmatch))
52b14ac0
JB
1366 ||
1367 /* If there is more than one exact match ignoring case,
1368 and one of them is exact including case,
1369 prefer that one. */
1370 /* If there is no exact match ignoring case,
1371 prefer a match that does not change the case
1372 of the input. */
d5db4077 1373 ((matchsize == SCHARS (eltstring))
52b14ac0 1374 ==
d5db4077 1375 (matchsize == SCHARS (bestmatch))
c8ae863b 1376 && (tem = Fcompare_strings (eltstring, zero,
d5db4077 1377 make_number (SCHARS (string)),
c8ae863b 1378 string, zero,
69f4ef20
RS
1379 Qnil,
1380 Qnil),
1381 EQ (Qt, tem))
c8ae863b 1382 && (tem = Fcompare_strings (bestmatch, zero,
d5db4077 1383 make_number (SCHARS (string)),
c8ae863b 1384 string, zero,
69f4ef20
RS
1385 Qnil,
1386 Qnil),
1387 ! EQ (Qt, tem))))
52b14ac0
JB
1388 bestmatch = eltstring;
1389 }
d5db4077 1390 if (bestmatchsize != SCHARS (eltstring)
85cd4372
SM
1391 || bestmatchsize != matchsize)
1392 /* Don't count the same string multiple times. */
1393 matchcount++;
52b14ac0 1394 bestmatchsize = matchsize;
d5db4077 1395 if (matchsize <= SCHARS (string)
78893e05
CY
1396 /* If completion-ignore-case is non-nil, don't
1397 short-circuit because we want to find the best
1398 possible match *including* case differences. */
1399 && !completion_ignore_case
695deb18
SM
1400 && matchcount > 1)
1401 /* No need to look any further. */
1402 break;
f927c5ae
JB
1403 }
1404 }
1405 }
1406
acd81db9
DK
1407 if (bindcount >= 0) {
1408 unbind_to (bindcount, Qnil);
1409 bindcount = -1;
1410 }
1411
56a98455 1412 if (NILP (bestmatch))
f927c5ae 1413 return Qnil; /* No completions found */
52b14ac0
JB
1414 /* If we are ignoring case, and there is no exact match,
1415 and no additional text was supplied,
1416 don't change the case of what the user typed. */
d5db4077
KR
1417 if (completion_ignore_case && bestmatchsize == SCHARS (string)
1418 && SCHARS (bestmatch) > bestmatchsize)
ec067ec7 1419 return minibuf_conform_representation (string, bestmatch);
52b14ac0
JB
1420
1421 /* Return t if the supplied string is an exact match (counting case);
1422 it does not require any change to be made. */
928b5acc 1423 if (matchcount == 1 && !NILP (Fequal (bestmatch, string)))
f927c5ae
JB
1424 return Qt;
1425
5a866662
KH
1426 XSETFASTINT (zero, 0); /* Else extract the part in which */
1427 XSETFASTINT (end, bestmatchsize); /* all completions agree */
f927c5ae
JB
1428 return Fsubstring (bestmatch, zero, end);
1429}
f927c5ae 1430\f
89a255dc 1431DEFUN ("all-completions", Fall_completions, Sall_completions, 2, 4, 0,
a284cdbb
RS
1432 doc: /* Search for partial matches to STRING in COLLECTION.
1433Test each of the possible completions specified by COLLECTION
1434to see if it begins with STRING. The possible completions may be
3809648a
KS
1435strings or symbols. Symbols are converted to strings before testing,
1436see `symbol-name'.
a284cdbb 1437The value is a list of all the possible completions that match STRING.
a1f17501 1438
a284cdbb
RS
1439If COLLECTION is an alist, the keys (cars of elements) are the
1440possible completions. If an element is not a cons cell, then the
1441element itself is the possible completion.
1442If COLLECTION is a hash-table, all the keys that are strings or symbols
1443are the possible completions.
1444If COLLECTION is an obarray, the names of all symbols in the obarray
1445are the possible completions.
a1f17501 1446
a284cdbb 1447COLLECTION can also be a function to do the completion itself.
a1f17501
PJ
1448It receives three arguments: the values STRING, PREDICATE and t.
1449Whatever it returns becomes the value of `all-completions'.
1450
1451If optional third argument PREDICATE is non-nil,
1452it is used to test each possible match.
1453The match is a candidate only if PREDICATE returns non-nil.
1454The argument given to PREDICATE is the alist element
a284cdbb 1455or the symbol from the obarray. If COLLECTION is a hash-table,
85cd4372 1456predicate is called with two arguments: the key and the value.
a1f17501
PJ
1457Additionally to this predicate, `completion-regexp-list'
1458is used to further constrain the set of candidates.
1459
782a943e 1460An obsolete optional fourth argument HIDE-SPACES is still accepted for
057bce6f 1461backward compatibility. If non-nil, strings in COLLECTION that start
4fcc3d32 1462with a space are ignored unless STRING itself starts with a space. */)
5842a27b 1463 (Lisp_Object string, Lisp_Object collection, Lisp_Object predicate, Lisp_Object hide_spaces)
f927c5ae
JB
1464{
1465 Lisp_Object tail, elt, eltstring;
1466 Lisp_Object allmatches;
a284cdbb
RS
1467 int type = HASH_TABLE_P (collection) ? 3
1468 : VECTORP (collection) ? 2
1469 : NILP (collection) || (CONSP (collection)
1470 && (!SYMBOLP (XCAR (collection))
1471 || NILP (XCAR (collection))));
6bbd7a29 1472 int index = 0, obsize = 0;
acd81db9 1473 int bindcount = -1;
c8ae863b 1474 Lisp_Object bucket, tem, zero;
f927c5ae
JB
1475 struct gcpro gcpro1, gcpro2, gcpro3, gcpro4;
1476
b7826503 1477 CHECK_STRING (string);
85cd4372 1478 if (type == 0)
a284cdbb 1479 return call3 (collection, string, predicate, Qt);
6bbd7a29 1480 allmatches = bucket = Qnil;
c8ae863b 1481 zero = make_number (0);
f927c5ae 1482
a284cdbb
RS
1483 /* If COLLECTION is not a list, set TAIL just for gc pro. */
1484 tail = collection;
85cd4372 1485 if (type == 2)
f927c5ae 1486 {
373bf2b7 1487 collection = check_obarray (collection);
a284cdbb 1488 obsize = XVECTOR (collection)->size;
657d4c0b 1489 bucket = XVECTOR (collection)->contents[index];
f927c5ae
JB
1490 }
1491
1492 while (1)
1493 {
85cd4372 1494 /* Get the next element of the alist, obarray, or hash-table. */
f927c5ae
JB
1495 /* Exit the loop if the elements are all used up. */
1496 /* elt gets the alist element or symbol.
1497 eltstring gets the name to check as a completion. */
1498
85cd4372 1499 if (type == 1)
f927c5ae 1500 {
695deb18 1501 if (!CONSP (tail))
f927c5ae 1502 break;
695deb18
SM
1503 elt = XCAR (tail);
1504 eltstring = CONSP (elt) ? XCAR (elt) : elt;
1505 tail = XCDR (tail);
f927c5ae 1506 }
85cd4372 1507 else if (type == 2)
f927c5ae 1508 {
373bf2b7 1509 if (!EQ (bucket, zero))
f927c5ae 1510 {
373bf2b7
AS
1511 if (!SYMBOLP (bucket))
1512 error ("Bad data in guts of obarray");
f927c5ae 1513 elt = bucket;
3809648a 1514 eltstring = elt;
f927c5ae
JB
1515 if (XSYMBOL (bucket)->next)
1516 XSETSYMBOL (bucket, XSYMBOL (bucket)->next);
1517 else
5a866662 1518 XSETFASTINT (bucket, 0);
f927c5ae
JB
1519 }
1520 else if (++index >= obsize)
1521 break;
1522 else
1523 {
a284cdbb 1524 bucket = XVECTOR (collection)->contents[index];
f927c5ae
JB
1525 continue;
1526 }
1527 }
85cd4372
SM
1528 else /* if (type == 3) */
1529 {
a284cdbb
RS
1530 while (index < HASH_TABLE_SIZE (XHASH_TABLE (collection))
1531 && NILP (HASH_HASH (XHASH_TABLE (collection), index)))
85cd4372 1532 index++;
a284cdbb 1533 if (index >= HASH_TABLE_SIZE (XHASH_TABLE (collection)))
85cd4372
SM
1534 break;
1535 else
a284cdbb 1536 elt = eltstring = HASH_KEY (XHASH_TABLE (collection), index++);
85cd4372 1537 }
f927c5ae
JB
1538
1539 /* Is this element a possible completion? */
1540
3809648a
KS
1541 if (SYMBOLP (eltstring))
1542 eltstring = Fsymbol_name (eltstring);
1543
7510b296 1544 if (STRINGP (eltstring)
d5db4077 1545 && SCHARS (string) <= SCHARS (eltstring)
89a255dc 1546 /* If HIDE_SPACES, reject alternatives that start with space
2cbaf886 1547 unless the input starts with space. */
11e3c684
CY
1548 && (NILP (hide_spaces)
1549 || (SBYTES (string) > 0
1550 && SREF (string, 0) == ' ')
1551 || SREF (eltstring, 0) != ' ')
c8ae863b 1552 && (tem = Fcompare_strings (eltstring, zero,
d5db4077 1553 make_number (SCHARS (string)),
c8ae863b 1554 string, zero,
d5db4077 1555 make_number (SCHARS (string)),
69f4ef20
RS
1556 completion_ignore_case ? Qt : Qnil),
1557 EQ (Qt, tem)))
f927c5ae
JB
1558 {
1559 /* Yes. */
42006772
RS
1560 Lisp_Object regexps;
1561 Lisp_Object zero;
5a866662 1562 XSETFASTINT (zero, 0);
42006772
RS
1563
1564 /* Ignore this element if it fails to match all the regexps. */
6b61353c 1565 {
6b61353c
KH
1566 for (regexps = Vcompletion_regexp_list; CONSP (regexps);
1567 regexps = XCDR (regexps))
1568 {
acd81db9
DK
1569 if (bindcount < 0) {
1570 bindcount = SPECPDL_INDEX ();
1571 specbind (Qcase_fold_search,
1572 completion_ignore_case ? Qt : Qnil);
77443789 1573 }
6b61353c
KH
1574 tem = Fstring_match (XCAR (regexps), eltstring, zero);
1575 if (NILP (tem))
1576 break;
1577 }
6b61353c
KH
1578 if (CONSP (regexps))
1579 continue;
1580 }
42006772 1581
f927c5ae
JB
1582 /* Ignore this element if there is a predicate
1583 and the predicate doesn't like it. */
1584
7efd36fc 1585 if (!NILP (predicate))
f927c5ae 1586 {
7efd36fc 1587 if (EQ (predicate, Qcommandp))
c837f4f9 1588 tem = Fcommandp (elt, Qnil);
f927c5ae
JB
1589 else
1590 {
acd81db9
DK
1591 if (bindcount >= 0) {
1592 unbind_to (bindcount, Qnil);
1593 bindcount = -1;
1594 }
f927c5ae 1595 GCPRO4 (tail, eltstring, allmatches, string);
85cd4372
SM
1596 tem = type == 3
1597 ? call2 (predicate, elt,
a284cdbb 1598 HASH_VALUE (XHASH_TABLE (collection), index - 1))
85cd4372 1599 : call1 (predicate, elt);
f927c5ae
JB
1600 UNGCPRO;
1601 }
56a98455 1602 if (NILP (tem)) continue;
f927c5ae
JB
1603 }
1604 /* Ok => put it on the list. */
1605 allmatches = Fcons (eltstring, allmatches);
1606 }
1607 }
1608
acd81db9
DK
1609 if (bindcount >= 0) {
1610 unbind_to (bindcount, Qnil);
1611 bindcount = -1;
1612 }
1613
f927c5ae
JB
1614 return Fnreverse (allmatches);
1615}
1616\f
cee54539 1617DEFUN ("completing-read", Fcompleting_read, Scompleting_read, 2, 8, 0,
af52c32d 1618 doc: /* Read a string in the minibuffer, with completion.
a1f17501 1619PROMPT is a string to prompt with; normally it ends in a colon and a space.
a284cdbb
RS
1620COLLECTION can be a list of strings, an alist, an obarray or a hash table.
1621COLLECTION can also be a function to do the completion itself.
1622PREDICATE limits completion to a subset of COLLECTION.
a1f17501 1623See `try-completion' and `all-completions' for more details
a284cdbb 1624 on completion, COLLECTION, and PREDICATE.
a1f17501 1625
4d02fc25
SM
1626REQUIRE-MATCH can take the following values:
1627- t means that the user is not allowed to exit unless
1628 the input is (or completes to) an element of COLLECTION or is null.
1629- nil means that the user can exit with any input.
b47d0e56
CY
1630- `confirm' means that the user can exit with any input, but she needs
1631 to confirm her choice if the input is not an element of COLLECTION.
1632- `confirm-after-completion' means that the user can exit with any
1633 input, but she needs to confirm her choice if she called
1634 `minibuffer-complete' right before `minibuffer-complete-and-exit'
1635 and the input is not an element of COLLECTION.
4d02fc25
SM
1636- anything else behaves like t except that typing RET does not exit if it
1637 does non-null completion.
1638
2e3148e2
JL
1639If the input is null, `completing-read' returns DEF, or the first element
1640of the list of default values, or an empty string if DEF is nil,
1641regardless of the value of REQUIRE-MATCH.
6b61353c
KH
1642
1643If INITIAL-INPUT is non-nil, insert it in the minibuffer initially,
1644 with point positioned at the end.
1645 If it is (STRING . POSITION), the initial input is STRING, but point
1646 is placed at _zero-indexed_ position POSITION in STRING. (*Note*
1647 that this is different from `read-from-minibuffer' and related
1648 functions, which use one-indexing for POSITION.) This feature is
1649 deprecated--it is best to pass nil for INITIAL-INPUT and supply the
1650 default value DEF instead. The user can yank the default value into
1651 the minibuffer easily using \\[next-history-element].
1652
1653HIST, if non-nil, specifies a history list and optionally the initial
1654 position in the list. It can be a symbol, which is the history list
1655 variable to use, or it can be a cons cell (HISTVAR . HISTPOS). In
1656 that case, HISTVAR is the history list variable to use, and HISTPOS
1657 is the initial position (the position in the list used by the
1658 minibuffer history commands). For consistency, you should also
1659 specify that element of the history as the value of
1fb101f3 1660 INITIAL-INPUT. (This is the only case in which you should use
6b61353c
KH
1661 INITIAL-INPUT instead of DEF.) Positions are counted starting from
1662 1 at the beginning of the list. The variable `history-length'
1663 controls the maximum length of a history list.
38668f81 1664
2e3148e2 1665DEF, if non-nil, is the default value or the list of default values.
a1f17501
PJ
1666
1667If INHERIT-INPUT-METHOD is non-nil, the minibuffer inherits
029a305c 1668 the current input method and the setting of `enable-multibyte-characters'.
a1f17501
PJ
1669
1670Completion ignores case if the ambient value of
af52c32d 1671 `completion-ignore-case' is non-nil. */)
5842a27b 1672 (Lisp_Object prompt, Lisp_Object collection, Lisp_Object predicate, Lisp_Object require_match, Lisp_Object initial_input, Lisp_Object hist, Lisp_Object def, Lisp_Object inherit_input_method)
f927c5ae 1673{
770970cb 1674 Lisp_Object val, histvar, histpos, position;
d43f85c2 1675 Lisp_Object init;
770970cb 1676 int pos = 0;
aed13378 1677 int count = SPECPDL_INDEX ();
0c8ee1a2
RS
1678 struct gcpro gcpro1;
1679
d43f85c2 1680 init = initial_input;
0c8ee1a2
RS
1681 GCPRO1 (def);
1682
a284cdbb 1683 specbind (Qminibuffer_completion_table, collection);
7efd36fc 1684 specbind (Qminibuffer_completion_predicate, predicate);
f927c5ae 1685 specbind (Qminibuffer_completion_confirm,
695deb18 1686 EQ (require_match, Qt) ? Qnil : require_match);
770970cb
RS
1687
1688 position = Qnil;
1689 if (!NILP (init))
1690 {
7510b296 1691 if (CONSP (init))
770970cb
RS
1692 {
1693 position = Fcdr (init);
1694 init = Fcar (init);
1695 }
b7826503 1696 CHECK_STRING (init);
770970cb
RS
1697 if (!NILP (position))
1698 {
b7826503 1699 CHECK_NUMBER (position);
770970cb 1700 /* Convert to distance from end of input. */
d5db4077 1701 pos = XINT (position) - SCHARS (init);
770970cb
RS
1702 }
1703 }
1704
7510b296 1705 if (SYMBOLP (hist))
770970cb
RS
1706 {
1707 histvar = hist;
1708 histpos = Qnil;
1709 }
1710 else
1711 {
1712 histvar = Fcar_safe (hist);
1713 histpos = Fcdr_safe (hist);
1714 }
1715 if (NILP (histvar))
1716 histvar = Qminibuffer_history;
1717 if (NILP (histpos))
5a866662 1718 XSETFASTINT (histpos, 0);
770970cb 1719
56a98455 1720 val = read_minibuf (NILP (require_match)
bb0bdf70 1721 ? (NILP (Vminibuffer_completing_file_name)
ef72eaff 1722 || EQ (Vminibuffer_completing_file_name, Qlambda)
bb0bdf70
EZ
1723 ? Vminibuffer_local_completion_map
1724 : Vminibuffer_local_filename_completion_map)
1725 : (NILP (Vminibuffer_completing_file_name)
ef72eaff 1726 || EQ (Vminibuffer_completing_file_name, Qlambda)
bb0bdf70 1727 ? Vminibuffer_local_must_match_map
8ba31f36 1728 : Vminibuffer_local_filename_must_match_map),
85b5fe07 1729 init, prompt, make_number (pos), 0,
cee54539 1730 histvar, histpos, def, 0,
b35cd215 1731 !NILP (inherit_input_method));
b9a86585 1732
d5db4077 1733 if (STRINGP (val) && SCHARS (val) == 0 && ! NILP (def))
fb30dfd2 1734 val = CONSP (def) ? XCAR (def) : def;
b9a86585 1735
0c8ee1a2 1736 RETURN_UNGCPRO (unbind_to (count, val));
f927c5ae
JB
1737}
1738\f
971de7fb 1739Lisp_Object Fassoc_string (register Lisp_Object key, Lisp_Object list, Lisp_Object case_fold);
5d2ca7ae
RS
1740
1741/* Test whether TXT is an exact completion. */
695deb18
SM
1742DEFUN ("test-completion", Ftest_completion, Stest_completion, 2, 3, 0,
1743 doc: /* Return non-nil if STRING is a valid completion.
1744Takes the same arguments as `all-completions' and `try-completion'.
a284cdbb 1745If COLLECTION is a function, it is called with three arguments:
695deb18 1746the values STRING, PREDICATE and `lambda'. */)
5842a27b 1747 (Lisp_Object string, Lisp_Object collection, Lisp_Object predicate)
5d2ca7ae 1748{
6b61353c 1749 Lisp_Object regexps, tail, tem = Qnil;
85cd4372 1750 int i = 0;
5d2ca7ae 1751
695deb18
SM
1752 CHECK_STRING (string);
1753
a284cdbb
RS
1754 if ((CONSP (collection)
1755 && (!SYMBOLP (XCAR (collection)) || NILP (XCAR (collection))))
1756 || NILP (collection))
695deb18 1757 {
a284cdbb 1758 tem = Fassoc_string (string, collection, completion_ignore_case ? Qt : Qnil);
9f4a578d 1759 if (NILP (tem))
695deb18
SM
1760 return Qnil;
1761 }
a284cdbb 1762 else if (VECTORP (collection))
5d2ca7ae 1763 {
695deb18 1764 /* Bypass intern-soft as that loses for nil. */
a284cdbb 1765 tem = oblookup (collection,
42a5b22f 1766 SSDATA (string),
d5db4077
KR
1767 SCHARS (string),
1768 SBYTES (string));
44472c88 1769 if (!SYMBOLP (tem))
9404446f 1770 {
695deb18
SM
1771 if (STRING_MULTIBYTE (string))
1772 string = Fstring_make_unibyte (string);
9404446f 1773 else
695deb18 1774 string = Fstring_make_multibyte (string);
9404446f 1775
a284cdbb 1776 tem = oblookup (collection,
42a5b22f 1777 SSDATA (string),
d5db4077
KR
1778 SCHARS (string),
1779 SBYTES (string));
9404446f 1780 }
6b61353c
KH
1781
1782 if (completion_ignore_case && !SYMBOLP (tem))
1783 {
a284cdbb 1784 for (i = XVECTOR (collection)->size - 1; i >= 0; i--)
6b61353c 1785 {
a284cdbb 1786 tail = XVECTOR (collection)->contents[i];
6b61353c
KH
1787 if (SYMBOLP (tail))
1788 while (1)
1789 {
1790 if (EQ((Fcompare_strings (string, make_number (0), Qnil,
1791 Fsymbol_name (tail),
1792 make_number (0) , Qnil, Qt)),
1793 Qt))
1794 {
1795 tem = tail;
1796 break;
1797 }
1798 if (XSYMBOL (tail)->next == 0)
1799 break;
1800 XSETSYMBOL (tail, XSYMBOL (tail)->next);
1801 }
1802 }
1803 }
1804
1805 if (!SYMBOLP (tem))
1806 return Qnil;
5d2ca7ae 1807 }
a284cdbb 1808 else if (HASH_TABLE_P (collection))
85cd4372 1809 {
a284cdbb 1810 struct Lisp_Hash_Table *h = XHASH_TABLE (collection);
6b61353c 1811 i = hash_lookup (h, string, NULL);
85cd4372 1812 if (i >= 0)
6b61353c 1813 tem = HASH_KEY (h, i);
85cd4372 1814 else
6b61353c
KH
1815 for (i = 0; i < HASH_TABLE_SIZE (h); ++i)
1816 if (!NILP (HASH_HASH (h, i)) &&
1817 EQ (Fcompare_strings (string, make_number (0), Qnil,
1818 HASH_KEY (h, i), make_number (0) , Qnil,
1819 completion_ignore_case ? Qt : Qnil),
1820 Qt))
1821 {
1822 tem = HASH_KEY (h, i);
1823 break;
1824 }
1825 if (!STRINGP (tem))
85cd4372
SM
1826 return Qnil;
1827 }
5d2ca7ae 1828 else
a284cdbb 1829 return call3 (collection, string, predicate, Qlambda);
695deb18
SM
1830
1831 /* Reject this element if it fails to match all the regexps. */
77443789
AS
1832 if (CONSP (Vcompletion_regexp_list))
1833 {
1834 int count = SPECPDL_INDEX ();
1835 specbind (Qcase_fold_search, completion_ignore_case ? Qt : Qnil);
1836 for (regexps = Vcompletion_regexp_list; CONSP (regexps);
1837 regexps = XCDR (regexps))
1838 {
1839 if (NILP (Fstring_match (XCAR (regexps),
1840 SYMBOLP (tem) ? string : tem,
1841 Qnil)))
1842 return unbind_to (count, Qnil);
1843 }
1844 unbind_to (count, Qnil);
1845 }
695deb18
SM
1846
1847 /* Finally, check the predicate. */
1848 if (!NILP (predicate))
6b61353c 1849 {
a284cdbb
RS
1850 return HASH_TABLE_P (collection)
1851 ? call2 (predicate, tem, HASH_VALUE (XHASH_TABLE (collection), i))
6b61353c
KH
1852 : call1 (predicate, tem);
1853 }
695deb18
SM
1854 else
1855 return Qt;
5d2ca7ae 1856}
f927c5ae 1857
655ea21c
JD
1858DEFUN ("internal-complete-buffer", Finternal_complete_buffer, Sinternal_complete_buffer, 3, 3, 0,
1859 doc: /* Perform completion on buffer names.
1860If the argument FLAG is nil, invoke `try-completion', if it's t, invoke
1861`all-completions', otherwise invoke `test-completion'.
1862
ba5524f4 1863The arguments STRING and PREDICATE are as in `try-completion',
655ea21c 1864`all-completions', and `test-completion'. */)
5842a27b 1865 (Lisp_Object string, Lisp_Object predicate, Lisp_Object flag)
655ea21c
JD
1866{
1867 if (NILP (flag))
1868 return Ftry_completion (string, Vbuffer_alist, predicate);
1869 else if (EQ (flag, Qt))
8c2dccbf 1870 {
73913e2e 1871 Lisp_Object res = Fall_completions (string, Vbuffer_alist, predicate, Qnil);
8c2dccbf
SM
1872 if (SCHARS (string) > 0)
1873 return res;
1874 else
1875 { /* Strip out internal buffers. */
1876 Lisp_Object bufs = res;
1877 /* First, look for a non-internal buffer in `res'. */
1878 while (CONSP (bufs) && SREF (XCAR (bufs), 0) == ' ')
1879 bufs = XCDR (bufs);
1880 if (NILP (bufs))
1881 /* All bufs in `res' are internal, so don't trip them out. */
1882 return res;
1883 res = bufs;
1884 while (CONSP (XCDR (bufs)))
1885 if (SREF (XCAR (XCDR (bufs)), 0) == ' ')
1886 XSETCDR (bufs, XCDR (XCDR (bufs)));
1887 else
1888 bufs = XCDR (bufs);
1889 return res;
1890 }
1891 }
655ea21c
JD
1892 else /* assume `lambda' */
1893 return Ftest_completion (string, Vbuffer_alist, predicate);
1894}
1895
52b14ac0
JB
1896/* Like assoc but assumes KEY is a string, and ignores case if appropriate. */
1897
695deb18 1898DEFUN ("assoc-string", Fassoc_string, Sassoc_string, 2, 3, 0,
d3fc66fb 1899 doc: /* Like `assoc' but specifically for strings (and symbols).
c6a82c18
CY
1900
1901This returns the first element of LIST whose car matches the string or
1902symbol KEY, or nil if no match exists. When performing the
1903comparison, symbols are first converted to strings, and unibyte
1904strings to multibyte. If the optional arg CASE-FOLD is non-nil, case
1905is ignored.
1906
1907Unlike `assoc', KEY can also match an entry in LIST consisting of a
1908single string, rather than a cons cell whose car is a string. */)
5842a27b 1909 (register Lisp_Object key, Lisp_Object list, Lisp_Object case_fold)
52b14ac0
JB
1910{
1911 register Lisp_Object tail;
1912
d3fc66fb
KS
1913 if (SYMBOLP (key))
1914 key = Fsymbol_name (key);
1915
99784d63 1916 for (tail = list; CONSP (tail); tail = XCDR (tail))
52b14ac0
JB
1917 {
1918 register Lisp_Object elt, tem, thiscar;
99784d63 1919 elt = XCAR (tail);
695deb18 1920 thiscar = CONSP (elt) ? XCAR (elt) : elt;
1954495f
KS
1921 if (SYMBOLP (thiscar))
1922 thiscar = Fsymbol_name (thiscar);
1923 else if (!STRINGP (thiscar))
52b14ac0 1924 continue;
9404446f
RS
1925 tem = Fcompare_strings (thiscar, make_number (0), Qnil,
1926 key, make_number (0), Qnil,
695deb18 1927 case_fold);
9404446f
RS
1928 if (EQ (tem, Qt))
1929 return elt;
52b14ac0
JB
1930 QUIT;
1931 }
1932 return Qnil;
1933}
f927c5ae 1934
e4c97a67 1935\f
f927c5ae 1936DEFUN ("minibuffer-depth", Fminibuffer_depth, Sminibuffer_depth, 0, 0, 0,
af52c32d 1937 doc: /* Return current depth of activations of minibuffer, a nonnegative integer. */)
5842a27b 1938 (void)
f927c5ae
JB
1939{
1940 return make_number (minibuf_level);
1941}
1942
37e9a934 1943DEFUN ("minibuffer-prompt", Fminibuffer_prompt, Sminibuffer_prompt, 0, 0, 0,
af52c32d
MB
1944 doc: /* Return the prompt string of the currently-active minibuffer.
1945If no minibuffer is active, return nil. */)
5842a27b 1946 (void)
37e9a934 1947{
4d04c1f1 1948 return Fcopy_sequence (minibuf_prompt);
37e9a934
KH
1949}
1950
f927c5ae 1951\f
9d815fd9 1952void
971de7fb 1953init_minibuf_once (void)
f927c5ae
JB
1954{
1955 Vminibuffer_list = Qnil;
1956 staticpro (&Vminibuffer_list);
1957}
1958
9d815fd9 1959void
971de7fb 1960syms_of_minibuf (void)
f927c5ae
JB
1961{
1962 minibuf_level = 0;
4d04c1f1
KH
1963 minibuf_prompt = Qnil;
1964 staticpro (&minibuf_prompt);
1965
1966 minibuf_save_list = Qnil;
1967 staticpro (&minibuf_save_list);
f927c5ae 1968
d67b4f80 1969 Qcompletion_ignore_case = intern_c_string ("completion-ignore-case");
9fa5c213
GM
1970 staticpro (&Qcompletion_ignore_case);
1971
d67b4f80 1972 Qread_file_name_internal = intern_c_string ("read-file-name-internal");
719b4a40
RS
1973 staticpro (&Qread_file_name_internal);
1974
d67b4f80 1975 Qminibuffer_default = intern_c_string ("minibuffer-default");
e5d4686b
RS
1976 staticpro (&Qminibuffer_default);
1977 Fset (Qminibuffer_default, Qnil);
1978
d67b4f80 1979 Qminibuffer_completion_table = intern_c_string ("minibuffer-completion-table");
f927c5ae
JB
1980 staticpro (&Qminibuffer_completion_table);
1981
d67b4f80 1982 Qminibuffer_completion_confirm = intern_c_string ("minibuffer-completion-confirm");
f927c5ae
JB
1983 staticpro (&Qminibuffer_completion_confirm);
1984
d67b4f80 1985 Qminibuffer_completion_predicate = intern_c_string ("minibuffer-completion-predicate");
f927c5ae
JB
1986 staticpro (&Qminibuffer_completion_predicate);
1987
1988 staticpro (&last_minibuf_string);
1989 last_minibuf_string = Qnil;
1990
d67b4f80 1991 Quser_variable_p = intern_c_string ("user-variable-p");
f927c5ae
JB
1992 staticpro (&Quser_variable_p);
1993
d67b4f80 1994 Qminibuffer_history = intern_c_string ("minibuffer-history");
770970cb 1995 staticpro (&Qminibuffer_history);
f927c5ae 1996
d67b4f80 1997 Qbuffer_name_history = intern_c_string ("buffer-name-history");
406e55df 1998 staticpro (&Qbuffer_name_history);
33d0a17f 1999 Fset (Qbuffer_name_history, Qnil);
406e55df 2000
d67b4f80 2001 Qminibuffer_setup_hook = intern_c_string ("minibuffer-setup-hook");
5c781212
RS
2002 staticpro (&Qminibuffer_setup_hook);
2003
d67b4f80 2004 Qminibuffer_exit_hook = intern_c_string ("minibuffer-exit-hook");
177aecf9
KH
2005 staticpro (&Qminibuffer_exit_hook);
2006
d67b4f80 2007 Qhistory_length = intern_c_string ("history-length");
77aa8edf
RS
2008 staticpro (&Qhistory_length);
2009
d67b4f80 2010 Qcurrent_input_method = intern_c_string ("current-input-method");
cee54539
KH
2011 staticpro (&Qcurrent_input_method);
2012
d67b4f80 2013 Qactivate_input_method = intern_c_string ("activate-input-method");
cee54539
KH
2014 staticpro (&Qactivate_input_method);
2015
d67b4f80 2016 Qcase_fold_search = intern_c_string ("case-fold-search");
6b61353c
KH
2017 staticpro (&Qcase_fold_search);
2018
c11136ec
GM
2019 DEFVAR_LISP ("read-expression-history", Vread_expression_history,
2020 doc: /* A history list for arguments that are Lisp expressions to evaluate.
2021For example, `eval-expression' uses this. */);
2022 Vread_expression_history = Qnil;
2023
d67b4f80 2024 Qread_expression_history = intern_c_string ("read-expression-history");
627fb581
RS
2025 staticpro (&Qread_expression_history);
2026
29208e82 2027 DEFVAR_LISP ("read-buffer-function", Vread_buffer_function,
b4f588fa
JB
2028 doc: /* If this is non-nil, `read-buffer' does its work by calling this function.
2029The function is called with the arguments passed to `read-buffer'. */);
eebbfb01
KH
2030 Vread_buffer_function = Qnil;
2031
33df281c 2032 DEFVAR_BOOL ("read-buffer-completion-ignore-case",
29208e82 2033 read_buffer_completion_ignore_case,
33df281c
CY
2034 doc: /* *Non-nil means completion ignores case when reading a buffer name. */);
2035 read_buffer_completion_ignore_case = 0;
2036
29208e82 2037 DEFVAR_LISP ("minibuffer-setup-hook", Vminibuffer_setup_hook,
af52c32d 2038 doc: /* Normal hook run just after entry to minibuffer. */);
5c781212
RS
2039 Vminibuffer_setup_hook = Qnil;
2040
29208e82 2041 DEFVAR_LISP ("minibuffer-exit-hook", Vminibuffer_exit_hook,
af52c32d 2042 doc: /* Normal hook run just after exit from minibuffer. */);
177aecf9
KH
2043 Vminibuffer_exit_hook = Qnil;
2044
29208e82 2045 DEFVAR_LISP ("history-length", Vhistory_length,
af52c32d 2046 doc: /* *Maximum length for history lists before truncation takes place.
a1f17501 2047A number means that length; t means infinite. Truncation takes place
f4b46bb9 2048just after a new element is inserted. Setting the `history-length'
a1f17501 2049property of a history variable overrides this default. */);
77aa8edf
RS
2050 XSETFASTINT (Vhistory_length, 30);
2051
29208e82 2052 DEFVAR_BOOL ("history-delete-duplicates", history_delete_duplicates,
0da4d471
JL
2053 doc: /* *Non-nil means to delete duplicates in history.
2054If set to t when adding a new history element, all previous identical
179a4ca7 2055elements are deleted from the history list. */);
0da4d471
JL
2056 history_delete_duplicates = 0;
2057
29208e82 2058 DEFVAR_LISP ("history-add-new-input", Vhistory_add_new_input,
179a4ca7
JL
2059 doc: /* *Non-nil means to add new elements in history.
2060If set to nil, minibuffer reading functions don't add new elements to the
2061history list, so it is possible to do this afterwards by calling
2062`add-to-history' explicitly. */);
2063 Vhistory_add_new_input = Qt;
2064
29208e82 2065 DEFVAR_BOOL ("completion-ignore-case", completion_ignore_case,
75028673 2066 doc: /* Non-nil means don't consider case significant in completion.
f562df03
CY
2067For file-name completion, `read-file-name-completion-ignore-case'
2068controls the behavior, rather than this variable.
2069For buffer name completion, `read-buffer-completion-ignore-case'
d9a03ad2 2070controls the behavior, rather than this variable. */);
f927c5ae
JB
2071 completion_ignore_case = 0;
2072
29208e82 2073 DEFVAR_BOOL ("enable-recursive-minibuffers", enable_recursive_minibuffers,
af52c32d 2074 doc: /* *Non-nil means to allow minibuffer commands while in the minibuffer.
a1f17501 2075This variable makes a difference whenever the minibuffer window is active. */);
f927c5ae
JB
2076 enable_recursive_minibuffers = 0;
2077
29208e82 2078 DEFVAR_LISP ("minibuffer-completion-table", Vminibuffer_completion_table,
af52c32d 2079 doc: /* Alist or obarray used for completion in the minibuffer.
6b61353c
KH
2080This becomes the ALIST argument to `try-completion' and `all-completions'.
2081The value can also be a list of strings or a hash table.
a1f17501
PJ
2082
2083The value may alternatively be a function, which is given three arguments:
2084 STRING, the current buffer contents;
2085 PREDICATE, the predicate for filtering possible matches;
2086 CODE, which says what kind of things to do.
b2ef9714
JB
2087CODE can be nil, t or `lambda':
2088 nil -- return the best completion of STRING, or nil if there is none.
2089 t -- return a list of all possible completions of STRING.
2090 lambda -- return t if STRING is a valid completion as it stands. */);
f927c5ae
JB
2091 Vminibuffer_completion_table = Qnil;
2092
29208e82 2093 DEFVAR_LISP ("minibuffer-completion-predicate", Vminibuffer_completion_predicate,
af52c32d 2094 doc: /* Within call to `completing-read', this holds the PREDICATE argument. */);
f927c5ae
JB
2095 Vminibuffer_completion_predicate = Qnil;
2096
29208e82 2097 DEFVAR_LISP ("minibuffer-completion-confirm", Vminibuffer_completion_confirm,
b47d0e56
CY
2098 doc: /* Whether to demand confirmation of completion before exiting minibuffer.
2099If nil, confirmation is not required.
2100If the value is `confirm', the user may exit with an input that is not
2101 a valid completion alternative, but Emacs asks for confirmation.
2102If the value is `confirm-after-completion', the user may exit with an
2103 input that is not a valid completion alternative, but Emacs asks for
1b79e224
CY
2104 confirmation if the user submitted the input right after any of the
2105 completion commands listed in `minibuffer-confirm-exit-commands'. */);
f927c5ae
JB
2106 Vminibuffer_completion_confirm = Qnil;
2107
ccf330a6 2108 DEFVAR_LISP ("minibuffer-completing-file-name",
29208e82 2109 Vminibuffer_completing_file_name,
6ddfc113 2110 doc: /* Non-nil means completing file names. */);
ccf330a6
RS
2111 Vminibuffer_completing_file_name = Qnil;
2112
29208e82 2113 DEFVAR_LISP ("minibuffer-help-form", Vminibuffer_help_form,
af52c32d 2114 doc: /* Value that `help-form' takes on inside the minibuffer. */);
f927c5ae
JB
2115 Vminibuffer_help_form = Qnil;
2116
29208e82 2117 DEFVAR_LISP ("minibuffer-history-variable", Vminibuffer_history_variable,
af52c32d 2118 doc: /* History list symbol to add minibuffer values to.
a1f17501
PJ
2119Each string of minibuffer input, as it appears on exit from the minibuffer,
2120is added with
2121 (set minibuffer-history-variable
2122 (cons STRING (symbol-value minibuffer-history-variable))) */);
5a866662 2123 XSETFASTINT (Vminibuffer_history_variable, 0);
770970cb 2124
29208e82 2125 DEFVAR_LISP ("minibuffer-history-position", Vminibuffer_history_position,
af52c32d 2126 doc: /* Current position of redoing in the history list. */);
770970cb
RS
2127 Vminibuffer_history_position = Qnil;
2128
29208e82 2129 DEFVAR_BOOL ("minibuffer-auto-raise", minibuffer_auto_raise,
af52c32d 2130 doc: /* *Non-nil means entering the minibuffer raises the minibuffer's frame.
a1f17501 2131Some uses of the echo area also raise that frame (since they use it too). */);
6a9ee000
RS
2132 minibuffer_auto_raise = 0;
2133
29208e82 2134 DEFVAR_LISP ("completion-regexp-list", Vcompletion_regexp_list,
6b61353c
KH
2135 doc: /* List of regexps that should restrict possible completions.
2136The basic completion functions only consider a completion acceptable
2137if it matches all regular expressions in this list, with
2138`case-fold-search' bound to the value of `completion-ignore-case'.
2139See Info node `(elisp)Basic Completion', for a description of these
2140functions. */);
42006772
RS
2141 Vcompletion_regexp_list = Qnil;
2142
c3421833 2143 DEFVAR_BOOL ("minibuffer-allow-text-properties",
29208e82 2144 minibuffer_allow_text_properties,
af52c32d 2145 doc: /* Non-nil means `read-from-minibuffer' should not discard text properties.
a1f17501
PJ
2146This also affects `read-string', but it does not affect `read-minibuffer',
2147`read-no-blanks-input', or any of the functions that do minibuffer input
2148with completion; they always discard text properties. */);
c3421833
RS
2149 minibuffer_allow_text_properties = 0;
2150
29208e82 2151 DEFVAR_LISP ("minibuffer-prompt-properties", Vminibuffer_prompt_properties,
af52c32d 2152 doc: /* Text properties that are added to minibuffer prompts.
a1f17501
PJ
2153These are in addition to the basic `field' property, and stickiness
2154properties. */);
cc64f5c9
MB
2155 /* We use `intern' here instead of Qread_only to avoid
2156 initialization-order problems. */
2157 Vminibuffer_prompt_properties
d67b4f80 2158 = Fcons (intern_c_string ("read-only"), Fcons (Qt, Qnil));
cc64f5c9 2159
29208e82 2160 DEFVAR_LISP ("read-expression-map", Vread_expression_map,
627fb581
RS
2161 doc: /* Minibuffer keymap used for reading Lisp expressions. */);
2162 Vread_expression_map = Qnil;
2163
68313ed8 2164 defsubr (&Sset_minibuffer_window);
f927c5ae
JB
2165 defsubr (&Sread_from_minibuffer);
2166 defsubr (&Seval_minibuffer);
2167 defsubr (&Sread_minibuffer);
2168 defsubr (&Sread_string);
2169 defsubr (&Sread_command);
2170 defsubr (&Sread_variable);
ff137f16 2171 defsubr (&Sinternal_complete_buffer);
f927c5ae
JB
2172 defsubr (&Sread_buffer);
2173 defsubr (&Sread_no_blanks_input);
2174 defsubr (&Sminibuffer_depth);
37e9a934 2175 defsubr (&Sminibuffer_prompt);
f927c5ae 2176
873ef78e 2177 defsubr (&Sminibufferp);
a346ec72
MB
2178 defsubr (&Sminibuffer_prompt_end);
2179 defsubr (&Sminibuffer_contents);
2180 defsubr (&Sminibuffer_contents_no_properties);
b5e1e449 2181 defsubr (&Sminibuffer_completion_contents);
a346ec72 2182
f927c5ae
JB
2183 defsubr (&Stry_completion);
2184 defsubr (&Sall_completions);
695deb18
SM
2185 defsubr (&Stest_completion);
2186 defsubr (&Sassoc_string);
f927c5ae 2187 defsubr (&Scompleting_read);
f927c5ae 2188}