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