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