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