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