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