; doc/emacs/misc.texi (Network Security): Fix typo.
[emacs.git] / src / minibuf.c
blobe18c99bef28f78a44cb89e1c87fcc759fda1f0be
1 /* Minibuffer input and completion.
3 Copyright (C) 1985-1986, 1993-2018 Free Software Foundation, Inc.
5 This file is part of GNU Emacs.
7 GNU Emacs is free software: you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation, either version 3 of the License, or (at
10 your option) any later version.
12 GNU Emacs is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
17 You should have received a copy of the GNU General Public License
18 along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */
21 #include <config.h>
22 #include <errno.h>
24 #include <binary-io.h>
26 #include "lisp.h"
27 #include "character.h"
28 #include "buffer.h"
29 #include "keyboard.h"
30 #include "frame.h"
31 #include "window.h"
32 #include "keymap.h"
33 #include "sysstdio.h"
34 #include "systty.h"
36 /* List of buffers for use as minibuffers.
37 The first element of the list is used for the outermost minibuffer
38 invocation, the next element is used for a recursive minibuffer
39 invocation, etc. The list is extended at the end as deeper
40 minibuffer recursions are encountered. */
42 Lisp_Object Vminibuffer_list;
44 /* Data to remember during recursive minibuffer invocations. */
46 static Lisp_Object minibuf_save_list;
48 /* Depth in minibuffer invocations. */
50 EMACS_INT minibuf_level;
52 /* Fread_minibuffer leaves the input here as a string. */
54 Lisp_Object last_minibuf_string;
56 /* Prompt to display in front of the mini-buffer contents. */
58 static Lisp_Object minibuf_prompt;
60 /* Width of current mini-buffer prompt. Only set after display_line
61 of the line that contains the prompt. */
63 static ptrdiff_t minibuf_prompt_width;
66 /* Put minibuf on currently selected frame's minibuffer.
67 We do this whenever the user starts a new minibuffer
68 or when a minibuffer exits. */
70 static void
71 choose_minibuf_frame (void)
73 if (FRAMEP (selected_frame)
74 && FRAME_LIVE_P (XFRAME (selected_frame))
75 && !EQ (minibuf_window, XFRAME (selected_frame)->minibuffer_window))
77 struct frame *sf = XFRAME (selected_frame);
78 Lisp_Object buffer;
80 /* I don't think that any frames may validly have a null minibuffer
81 window anymore. */
82 if (NILP (sf->minibuffer_window))
83 emacs_abort ();
85 /* Under X, we come here with minibuf_window being the
86 minibuffer window of the unused termcap window created in
87 init_window_once. That window doesn't have a buffer. */
88 buffer = XWINDOW (minibuf_window)->contents;
89 if (BUFFERP (buffer))
90 /* Use set_window_buffer instead of Fset_window_buffer (see
91 discussion of bug#11984, bug#12025, bug#12026). */
92 set_window_buffer (sf->minibuffer_window, buffer, 0, 0);
93 minibuf_window = sf->minibuffer_window;
96 /* Make sure no other frame has a minibuffer as its selected window,
97 because the text would not be displayed in it, and that would be
98 confusing. Only allow the selected frame to do this,
99 and that only if the minibuffer is active. */
101 Lisp_Object tail, frame;
103 FOR_EACH_FRAME (tail, frame)
104 if (MINI_WINDOW_P (XWINDOW (FRAME_SELECTED_WINDOW (XFRAME (frame))))
105 && !(EQ (frame, selected_frame)
106 && minibuf_level > 0))
107 Fset_frame_selected_window (frame, Fframe_first_window (frame), Qnil);
111 DEFUN ("active-minibuffer-window", Factive_minibuffer_window,
112 Sactive_minibuffer_window, 0, 0, 0,
113 doc: /* Return the currently active minibuffer window, or nil if none. */)
114 (void)
116 return minibuf_level ? minibuf_window : Qnil;
119 DEFUN ("set-minibuffer-window", Fset_minibuffer_window,
120 Sset_minibuffer_window, 1, 1, 0,
121 doc: /* Specify which minibuffer window to use for the minibuffer.
122 This affects where the minibuffer is displayed if you put text in it
123 without invoking the usual minibuffer commands. */)
124 (Lisp_Object window)
126 CHECK_WINDOW (window);
127 if (! MINI_WINDOW_P (XWINDOW (window)))
128 error ("Window is not a minibuffer window");
130 minibuf_window = window;
132 return window;
136 /* Actual minibuffer invocation. */
138 static void read_minibuf_unwind (void);
139 static void run_exit_minibuf_hook (void);
142 /* Read a Lisp object from VAL and return it. If VAL is an empty
143 string, and DEFALT is a string, read from DEFALT instead of VAL. */
145 static Lisp_Object
146 string_to_object (Lisp_Object val, Lisp_Object defalt)
148 Lisp_Object expr_and_pos;
149 ptrdiff_t pos;
151 if (STRINGP (val) && SCHARS (val) == 0)
153 if (STRINGP (defalt))
154 val = defalt;
155 else if (CONSP (defalt) && STRINGP (XCAR (defalt)))
156 val = XCAR (defalt);
159 expr_and_pos = Fread_from_string (val, Qnil, Qnil);
160 pos = XINT (Fcdr (expr_and_pos));
161 if (pos != SCHARS (val))
163 /* Ignore trailing whitespace; any other trailing junk
164 is an error. */
165 ptrdiff_t i;
166 pos = string_char_to_byte (val, pos);
167 for (i = pos; i < SBYTES (val); i++)
169 int c = SREF (val, i);
170 if (c != ' ' && c != '\t' && c != '\n')
171 error ("Trailing garbage following expression");
175 val = Fcar (expr_and_pos);
176 return val;
180 /* Like read_minibuf but reading from stdin. This function is called
181 from read_minibuf to do the job if noninteractive. */
183 static Lisp_Object
184 read_minibuf_noninteractive (Lisp_Object map, Lisp_Object initial,
185 Lisp_Object prompt, Lisp_Object backup_n,
186 bool expflag,
187 Lisp_Object histvar, Lisp_Object histpos,
188 Lisp_Object defalt,
189 bool allow_props, bool inherit_input_method)
191 ptrdiff_t size, len;
192 char *line;
193 Lisp_Object val;
194 int c;
195 unsigned char hide_char = 0;
196 struct emacs_tty etty;
197 bool etty_valid UNINIT;
199 /* Check, whether we need to suppress echoing. */
200 if (CHARACTERP (Vread_hide_char))
201 hide_char = XFASTINT (Vread_hide_char);
203 /* Manipulate tty. */
204 if (hide_char)
206 etty_valid = emacs_get_tty (STDIN_FILENO, &etty) == 0;
207 if (etty_valid)
208 set_binary_mode (STDIN_FILENO, O_BINARY);
209 suppress_echo_on_tty (STDIN_FILENO);
212 fwrite_unlocked (SDATA (prompt), 1, SBYTES (prompt), stdout);
213 fflush_unlocked (stdout);
215 val = Qnil;
216 size = 100;
217 len = 0;
218 line = xmalloc (size);
220 while ((c = getchar_unlocked ()) != '\n' && c != '\r')
222 if (c == EOF)
224 if (errno != EINTR)
225 break;
227 else
229 if (hide_char)
230 fprintf (stdout, "%c", hide_char);
231 if (len == size)
232 line = xpalloc (line, &size, 1, -1, sizeof *line);
233 line[len++] = c;
237 /* Reset tty. */
238 if (hide_char)
240 fprintf (stdout, "\n");
241 if (etty_valid)
243 emacs_set_tty (STDIN_FILENO, &etty, 0);
244 set_binary_mode (STDIN_FILENO, O_TEXT);
248 if (len || c == '\n' || c == '\r')
250 val = make_string (line, len);
251 xfree (line);
253 else
255 xfree (line);
256 error ("Error reading from stdin");
259 /* If Lisp form desired instead of string, parse it. */
260 if (expflag)
261 val = string_to_object (val, CONSP (defalt) ? XCAR (defalt) : defalt);
263 return val;
266 DEFUN ("minibufferp", Fminibufferp,
267 Sminibufferp, 0, 1, 0,
268 doc: /* Return t if BUFFER is a minibuffer.
269 No argument or nil as argument means use current buffer as BUFFER.
270 BUFFER can be a buffer or a buffer name. */)
271 (Lisp_Object buffer)
273 Lisp_Object tem;
275 if (NILP (buffer))
276 buffer = Fcurrent_buffer ();
277 else if (STRINGP (buffer))
278 buffer = Fget_buffer (buffer);
279 else
280 CHECK_BUFFER (buffer);
282 tem = Fmemq (buffer, Vminibuffer_list);
283 return ! NILP (tem) ? Qt : Qnil;
286 DEFUN ("minibuffer-prompt-end", Fminibuffer_prompt_end,
287 Sminibuffer_prompt_end, 0, 0, 0,
288 doc: /* Return the buffer position of the end of the minibuffer prompt.
289 Return (point-min) if current buffer is not a minibuffer. */)
290 (void)
292 /* This function is written to be most efficient when there's a prompt. */
293 Lisp_Object beg, end, tem;
294 beg = make_number (BEGV);
296 tem = Fmemq (Fcurrent_buffer (), Vminibuffer_list);
297 if (NILP (tem))
298 return beg;
300 end = Ffield_end (beg, Qnil, Qnil);
302 if (XINT (end) == ZV && NILP (Fget_char_property (beg, Qfield, Qnil)))
303 return beg;
304 else
305 return end;
308 DEFUN ("minibuffer-contents", Fminibuffer_contents,
309 Sminibuffer_contents, 0, 0, 0,
310 doc: /* Return the user input in a minibuffer as a string.
311 If the current buffer is not a minibuffer, return its entire contents. */)
312 (void)
314 ptrdiff_t prompt_end = XINT (Fminibuffer_prompt_end ());
315 return make_buffer_string (prompt_end, ZV, 1);
318 DEFUN ("minibuffer-contents-no-properties", Fminibuffer_contents_no_properties,
319 Sminibuffer_contents_no_properties, 0, 0, 0,
320 doc: /* Return the user input in a minibuffer as a string, without text-properties.
321 If the current buffer is not a minibuffer, return its entire contents. */)
322 (void)
324 ptrdiff_t prompt_end = XINT (Fminibuffer_prompt_end ());
325 return make_buffer_string (prompt_end, ZV, 0);
329 /* Read from the minibuffer using keymap MAP and initial contents INITIAL,
330 putting point minus BACKUP_N bytes from the end of INITIAL,
331 prompting with PROMPT (a string), using history list HISTVAR
332 with initial position HISTPOS. INITIAL should be a string or a
333 cons of a string and an integer. BACKUP_N should be <= 0, or
334 Qnil, which is equivalent to 0. If INITIAL is a cons, BACKUP_N is
335 ignored and replaced with an integer that puts point at one-indexed
336 position N in INITIAL, where N is the CDR of INITIAL, or at the
337 beginning of INITIAL if N <= 0.
339 Normally return the result as a string (the text that was read),
340 but if EXPFLAG, read it and return the object read.
341 If HISTVAR is given, save the value read on that history only if it doesn't
342 match the front of that history list exactly. The value is pushed onto
343 the list as the string that was read.
345 DEFALT specifies the default value for the sake of history commands.
347 If ALLOW_PROPS, do not throw away text properties.
349 if INHERIT_INPUT_METHOD, the minibuffer inherits the
350 current input method. */
352 static Lisp_Object
353 read_minibuf (Lisp_Object map, Lisp_Object initial, Lisp_Object prompt,
354 bool expflag,
355 Lisp_Object histvar, Lisp_Object histpos, Lisp_Object defalt,
356 bool allow_props, bool inherit_input_method)
358 Lisp_Object val;
359 ptrdiff_t count = SPECPDL_INDEX ();
360 Lisp_Object mini_frame, ambient_dir, minibuffer, input_method;
361 Lisp_Object enable_multibyte;
362 EMACS_INT pos = 0;
363 /* String to add to the history. */
364 Lisp_Object histstring;
365 Lisp_Object histval;
367 Lisp_Object empty_minibuf;
368 Lisp_Object dummy, frame;
370 specbind (Qminibuffer_default, defalt);
371 specbind (Qinhibit_read_only, Qnil);
373 /* If Vminibuffer_completing_file_name is `lambda' on entry, it was t
374 in previous recursive minibuffer, but was not set explicitly
375 to t for this invocation, so set it to nil in this minibuffer.
376 Save the old value now, before we change it. */
377 specbind (intern ("minibuffer-completing-file-name"),
378 Vminibuffer_completing_file_name);
379 if (EQ (Vminibuffer_completing_file_name, Qlambda))
380 Vminibuffer_completing_file_name = Qnil;
382 #ifdef HAVE_WINDOW_SYSTEM
383 if (display_hourglass_p)
384 cancel_hourglass ();
385 #endif
387 if (!NILP (initial))
389 if (CONSP (initial))
391 Lisp_Object backup_n = XCDR (initial);
392 initial = XCAR (initial);
393 CHECK_STRING (initial);
394 if (!NILP (backup_n))
396 CHECK_NUMBER (backup_n);
397 /* Convert to distance from end of input. */
398 if (XINT (backup_n) < 1)
399 /* A number too small means the beginning of the string. */
400 pos = - SCHARS (initial);
401 else
402 pos = XINT (backup_n) - 1 - SCHARS (initial);
405 else
406 CHECK_STRING (initial);
408 val = Qnil;
409 ambient_dir = BVAR (current_buffer, directory);
410 input_method = Qnil;
411 enable_multibyte = Qnil;
413 if (!STRINGP (prompt))
414 prompt = empty_unibyte_string;
416 if (!enable_recursive_minibuffers
417 && minibuf_level > 0)
419 if (EQ (selected_window, minibuf_window))
420 error ("Command attempted to use minibuffer while in minibuffer");
421 else
422 /* If we're in another window, cancel the minibuffer that's active. */
423 Fthrow (Qexit,
424 build_string ("Command attempted to use minibuffer while in minibuffer"));
427 if ((noninteractive
428 /* In case we are running as a daemon, only do this before
429 detaching from the terminal. */
430 || (IS_DAEMON && DAEMON_RUNNING))
431 && NILP (Vexecuting_kbd_macro))
433 val = read_minibuf_noninteractive (map, initial, prompt,
434 make_number (pos),
435 expflag, histvar, histpos, defalt,
436 allow_props, inherit_input_method);
437 return unbind_to (count, val);
440 /* Choose the minibuffer window and frame, and take action on them. */
442 /* Prepare for restoring the current buffer since choose_minibuf_frame
443 calling Fset_frame_selected_window may change it (Bug#12766). */
444 record_unwind_protect (restore_buffer, Fcurrent_buffer ());
446 choose_minibuf_frame ();
448 record_unwind_protect_void (choose_minibuf_frame);
450 record_unwind_protect (restore_window_configuration,
451 Fcurrent_window_configuration (Qnil));
453 /* If the minibuffer window is on a different frame, save that
454 frame's configuration too. */
455 mini_frame = WINDOW_FRAME (XWINDOW (minibuf_window));
456 if (!EQ (mini_frame, selected_frame))
457 record_unwind_protect (restore_window_configuration,
458 Fcurrent_window_configuration (mini_frame));
460 /* If the minibuffer is on an iconified or invisible frame,
461 make it visible now. */
462 Fmake_frame_visible (mini_frame);
464 if (minibuffer_auto_raise)
465 Fraise_frame (mini_frame);
467 temporarily_switch_to_single_kboard (XFRAME (mini_frame));
469 /* We have to do this after saving the window configuration
470 since that is what restores the current buffer. */
472 /* Arrange to restore a number of minibuffer-related variables.
473 We could bind each variable separately, but that would use lots of
474 specpdl slots. */
475 minibuf_save_list
476 = Fcons (Voverriding_local_map,
477 Fcons (minibuf_window,
478 minibuf_save_list));
479 minibuf_save_list
480 = Fcons (minibuf_prompt,
481 Fcons (make_number (minibuf_prompt_width),
482 Fcons (Vhelp_form,
483 Fcons (Vcurrent_prefix_arg,
484 Fcons (Vminibuffer_history_position,
485 Fcons (Vminibuffer_history_variable,
486 minibuf_save_list))))));
487 minibuf_save_list
488 = Fcons (Fthis_command_keys_vector (), minibuf_save_list);
490 record_unwind_protect_void (read_minibuf_unwind);
491 minibuf_level++;
492 /* We are exiting the minibuffer one way or the other, so run the hook.
493 It should be run before unwinding the minibuf settings. Do it
494 separately from read_minibuf_unwind because we need to make sure that
495 read_minibuf_unwind is fully executed even if exit-minibuffer-hook
496 signals an error. --Stef */
497 record_unwind_protect_void (run_exit_minibuf_hook);
499 /* Now that we can restore all those variables, start changing them. */
501 minibuf_prompt_width = 0;
502 minibuf_prompt = Fcopy_sequence (prompt);
503 Vminibuffer_history_position = histpos;
504 Vminibuffer_history_variable = histvar;
505 Vhelp_form = Vminibuffer_help_form;
506 /* If this minibuffer is reading a file name, that doesn't mean
507 recursive ones are. But we cannot set it to nil, because
508 completion code still need to know the minibuffer is completing a
509 file name. So use `lambda' as intermediate value meaning
510 "t" in this minibuffer, but "nil" in next minibuffer. */
511 if (!NILP (Vminibuffer_completing_file_name))
512 Vminibuffer_completing_file_name = Qlambda;
514 /* If variable is unbound, make it nil. */
515 histval = find_symbol_value (Vminibuffer_history_variable);
516 if (EQ (histval, Qunbound))
518 Fset (Vminibuffer_history_variable, Qnil);
519 histval = Qnil;
522 if (inherit_input_method)
524 /* `current-input-method' is buffer local. So, remember it in
525 INPUT_METHOD before changing the current buffer. */
526 input_method = Fsymbol_value (Qcurrent_input_method);
527 enable_multibyte = BVAR (current_buffer, enable_multibyte_characters);
530 /* Switch to the minibuffer. */
532 minibuffer = get_minibuffer (minibuf_level);
533 Fset_buffer (minibuffer);
535 /* Defeat (setq-default truncate-lines t), since truncated lines do
536 not work correctly in minibuffers. (Bug#5715, etc) */
537 bset_truncate_lines (current_buffer, Qnil);
539 /* If appropriate, copy enable-multibyte-characters into the minibuffer. */
540 if (inherit_input_method)
541 bset_enable_multibyte_characters (current_buffer, enable_multibyte);
543 /* The current buffer's default directory is usually the right thing
544 for our minibuffer here. However, if you're typing a command at
545 a minibuffer-only frame when minibuf_level is zero, then buf IS
546 the current_buffer, so reset_buffer leaves buf's default
547 directory unchanged. This is a bummer when you've just started
548 up Emacs and buf's default directory is Qnil. Here's a hack; can
549 you think of something better to do? Find another buffer with a
550 better directory, and use that one instead. */
551 if (STRINGP (ambient_dir))
552 bset_directory (current_buffer, ambient_dir);
553 else
555 Lisp_Object tail, buf;
557 FOR_EACH_LIVE_BUFFER (tail, buf)
558 if (STRINGP (BVAR (XBUFFER (buf), directory)))
560 bset_directory (current_buffer,
561 BVAR (XBUFFER (buf), directory));
562 break;
566 if (!EQ (mini_frame, selected_frame))
567 Fredirect_frame_focus (selected_frame, mini_frame);
569 Vminibuf_scroll_window = selected_window;
570 if (minibuf_level == 1 || !EQ (minibuf_window, selected_window))
571 minibuf_selected_window = selected_window;
573 /* Empty out the minibuffers of all frames other than the one
574 where we are going to display one now.
575 Set them to point to ` *Minibuf-0*', which is always empty. */
576 empty_minibuf = get_minibuffer (0);
578 FOR_EACH_FRAME (dummy, frame)
580 Lisp_Object root_window = Fframe_root_window (frame);
581 Lisp_Object mini_window = XWINDOW (root_window)->next;
583 if (! NILP (mini_window) && ! EQ (mini_window, minibuf_window)
584 && !NILP (Fwindow_minibuffer_p (mini_window)))
585 /* Use set_window_buffer instead of Fset_window_buffer (see
586 discussion of bug#11984, bug#12025, bug#12026). */
587 set_window_buffer (mini_window, empty_minibuf, 0, 0);
590 /* Display this minibuffer in the proper window. */
591 /* Use set_window_buffer instead of Fset_window_buffer (see
592 discussion of bug#11984, bug#12025, bug#12026). */
593 set_window_buffer (minibuf_window, Fcurrent_buffer (), 0, 0);
594 Fselect_window (minibuf_window, Qnil);
595 XWINDOW (minibuf_window)->hscroll = 0;
596 XWINDOW (minibuf_window)->suspend_auto_hscroll = 0;
598 /* Erase the buffer. */
600 ptrdiff_t count1 = SPECPDL_INDEX ();
601 specbind (Qinhibit_read_only, Qt);
602 specbind (Qinhibit_modification_hooks, Qt);
603 Ferase_buffer ();
605 if (!NILP (BVAR (current_buffer, enable_multibyte_characters))
606 && ! STRING_MULTIBYTE (minibuf_prompt))
607 minibuf_prompt = Fstring_make_multibyte (minibuf_prompt);
609 /* Insert the prompt, record where it ends. */
610 Finsert (1, &minibuf_prompt);
611 if (PT > BEG)
613 Fput_text_property (make_number (BEG), make_number (PT),
614 Qfront_sticky, Qt, Qnil);
615 Fput_text_property (make_number (BEG), make_number (PT),
616 Qrear_nonsticky, Qt, Qnil);
617 Fput_text_property (make_number (BEG), make_number (PT),
618 Qfield, Qt, Qnil);
619 if (CONSP (Vminibuffer_prompt_properties))
621 /* We want to apply all properties from
622 `minibuffer-prompt-properties' to the region normally,
623 but if the `face' property is present, add that
624 property to the end of the face properties to avoid
625 overwriting faces. */
626 Lisp_Object list = Vminibuffer_prompt_properties;
627 while (CONSP (list))
629 Lisp_Object key = XCAR (list);
630 list = XCDR (list);
631 if (CONSP (list))
633 Lisp_Object val = XCAR (list);
634 list = XCDR (list);
635 if (EQ (key, Qface))
636 Fadd_face_text_property (make_number (BEG),
637 make_number (PT), val, Qt, Qnil);
638 else
639 Fput_text_property (make_number (BEG), make_number (PT),
640 key, val, Qnil);
645 unbind_to (count1, Qnil);
648 minibuf_prompt_width = current_column ();
650 /* Put in the initial input. */
651 if (!NILP (initial))
653 Finsert (1, &initial);
654 Fforward_char (make_number (pos));
657 clear_message (1, 1);
658 bset_keymap (current_buffer, map);
660 /* Turn on an input method stored in INPUT_METHOD if any. */
661 if (STRINGP (input_method) && !NILP (Ffboundp (Qactivate_input_method)))
662 call1 (Qactivate_input_method, input_method);
664 run_hook (Qminibuffer_setup_hook);
666 /* Don't allow the user to undo past this point. */
667 bset_undo_list (current_buffer, Qnil);
669 recursive_edit_1 ();
671 /* If cursor is on the minibuffer line,
672 show the user we have exited by putting it in column 0. */
673 if (XWINDOW (minibuf_window)->cursor.vpos >= 0
674 && !noninteractive)
676 XWINDOW (minibuf_window)->cursor.hpos = 0;
677 XWINDOW (minibuf_window)->cursor.x = 0;
678 XWINDOW (minibuf_window)->must_be_updated_p = true;
679 update_frame (XFRAME (selected_frame), true, true);
680 flush_frame (XFRAME (XWINDOW (minibuf_window)->frame));
683 /* Make minibuffer contents into a string. */
684 Fset_buffer (minibuffer);
685 if (allow_props)
686 val = Fminibuffer_contents ();
687 else
688 val = Fminibuffer_contents_no_properties ();
690 /* VAL is the string of minibuffer text. */
692 last_minibuf_string = val;
694 /* Choose the string to add to the history. */
695 if (SCHARS (val) != 0)
696 histstring = val;
697 else if (STRINGP (defalt))
698 histstring = defalt;
699 else if (CONSP (defalt) && STRINGP (XCAR (defalt)))
700 histstring = XCAR (defalt);
701 else
702 histstring = Qnil;
704 /* Add the value to the appropriate history list, if any. */
705 if (! (NILP (Vhistory_add_new_input) || NILP (histstring)))
706 call2 (intern ("add-to-history"), Vminibuffer_history_variable, histstring);
708 /* If Lisp form desired instead of string, parse it. */
709 if (expflag)
710 val = string_to_object (val, defalt);
712 /* The appropriate frame will get selected
713 in set-window-configuration. */
714 return unbind_to (count, val);
717 /* Return a buffer to be used as the minibuffer at depth `depth'.
718 depth = 0 is the lowest allowed argument, and that is the value
719 used for nonrecursive minibuffer invocations. */
721 Lisp_Object
722 get_minibuffer (EMACS_INT depth)
724 Lisp_Object tail = Fnthcdr (make_number (depth), Vminibuffer_list);
725 if (NILP (tail))
727 tail = list1 (Qnil);
728 Vminibuffer_list = nconc2 (Vminibuffer_list, tail);
730 Lisp_Object buf = Fcar (tail);
731 if (NILP (buf) || !BUFFER_LIVE_P (XBUFFER (buf)))
733 static char const name_fmt[] = " *Minibuf-%"pI"d*";
734 char name[sizeof name_fmt + INT_STRLEN_BOUND (EMACS_INT)];
735 AUTO_STRING_WITH_LEN (lname, name, sprintf (name, name_fmt, depth));
736 buf = Fget_buffer_create (lname);
738 /* Although the buffer's name starts with a space, undo should be
739 enabled in it. */
740 Fbuffer_enable_undo (buf);
742 XSETCAR (tail, buf);
744 else
746 ptrdiff_t count = SPECPDL_INDEX ();
747 /* We have to empty both overlay lists. Otherwise we end
748 up with overlays that think they belong to this buffer
749 while the buffer doesn't know about them any more. */
750 delete_all_overlays (XBUFFER (buf));
751 reset_buffer (XBUFFER (buf));
752 record_unwind_current_buffer ();
753 Fset_buffer (buf);
754 if (!NILP (Ffboundp (intern ("minibuffer-inactive-mode"))))
755 call0 (intern ("minibuffer-inactive-mode"));
756 else
757 Fkill_all_local_variables ();
758 unbind_to (count, Qnil);
761 return buf;
764 static void
765 run_exit_minibuf_hook (void)
767 safe_run_hooks (Qminibuffer_exit_hook);
770 /* This function is called on exiting minibuffer, whether normally or
771 not, and it restores the current window, buffer, etc. */
773 static void
774 read_minibuf_unwind (void)
776 Lisp_Object old_deactivate_mark;
777 Lisp_Object window;
779 /* If this was a recursive minibuffer,
780 tie the minibuffer window back to the outer level minibuffer buffer. */
781 minibuf_level--;
783 window = minibuf_window;
784 /* To keep things predictable, in case it matters, let's be in the
785 minibuffer when we reset the relevant variables. */
786 Fset_buffer (XWINDOW (window)->contents);
788 /* Restore prompt, etc, from outer minibuffer level. */
789 Lisp_Object key_vec = Fcar (minibuf_save_list);
790 eassert (VECTORP (key_vec));
791 this_command_key_count = XFASTINT (Flength (key_vec));
792 this_command_keys = key_vec;
793 minibuf_save_list = Fcdr (minibuf_save_list);
794 minibuf_prompt = Fcar (minibuf_save_list);
795 minibuf_save_list = Fcdr (minibuf_save_list);
796 minibuf_prompt_width = XFASTINT (Fcar (minibuf_save_list));
797 minibuf_save_list = Fcdr (minibuf_save_list);
798 Vhelp_form = Fcar (minibuf_save_list);
799 minibuf_save_list = Fcdr (minibuf_save_list);
800 Vcurrent_prefix_arg = Fcar (minibuf_save_list);
801 minibuf_save_list = Fcdr (minibuf_save_list);
802 Vminibuffer_history_position = Fcar (minibuf_save_list);
803 minibuf_save_list = Fcdr (minibuf_save_list);
804 Vminibuffer_history_variable = Fcar (minibuf_save_list);
805 minibuf_save_list = Fcdr (minibuf_save_list);
806 Voverriding_local_map = Fcar (minibuf_save_list);
807 minibuf_save_list = Fcdr (minibuf_save_list);
808 #if 0
809 temp = Fcar (minibuf_save_list);
810 if (FRAME_LIVE_P (XFRAME (WINDOW_FRAME (XWINDOW (temp)))))
811 minibuf_window = temp;
812 #endif
813 minibuf_save_list = Fcdr (minibuf_save_list);
815 /* Erase the minibuffer we were using at this level. */
817 ptrdiff_t count = SPECPDL_INDEX ();
818 /* Prevent error in erase-buffer. */
819 specbind (Qinhibit_read_only, Qt);
820 specbind (Qinhibit_modification_hooks, Qt);
821 old_deactivate_mark = Vdeactivate_mark;
822 Ferase_buffer ();
823 Vdeactivate_mark = old_deactivate_mark;
824 unbind_to (count, Qnil);
827 /* When we get to the outmost level, make sure we resize the
828 mini-window back to its normal size. */
829 if (minibuf_level == 0)
830 resize_mini_window (XWINDOW (window), 0);
832 /* Deal with frames that should be removed when exiting the
833 minibuffer. */
835 Lisp_Object frames, frame1, val;
836 struct frame *f1;
838 FOR_EACH_FRAME (frames, frame1)
840 f1 = XFRAME (frame1);
842 if ((FRAME_PARENT_FRAME (f1)
843 || !NILP (get_frame_param (f1, Qdelete_before)))
844 && !NILP (val = (get_frame_param (f1, Qminibuffer_exit))))
846 if (EQ (val, Qiconify_frame))
847 Ficonify_frame (frame1);
848 else if (EQ (val, Qdelete_frame))
849 Fdelete_frame (frame1, Qnil);
850 else
851 Fmake_frame_invisible (frame1, Qnil);
856 /* In case the previous minibuffer displayed in this miniwindow is
857 dead, we may keep displaying this buffer (tho it's inactive), so reset it,
858 to make sure we don't leave around bindings and stuff which only
859 made sense during the read_minibuf invocation. */
860 call0 (intern ("minibuffer-inactive-mode"));
864 DEFUN ("read-from-minibuffer", Fread_from_minibuffer,
865 Sread_from_minibuffer, 1, 7, 0,
866 doc: /* Read a string from the minibuffer, prompting with string PROMPT.
867 The optional second arg INITIAL-CONTENTS is an obsolete alternative to
868 DEFAULT-VALUE. It normally should be nil in new code, except when
869 HIST is a cons. It is discussed in more detail below.
871 Third arg KEYMAP is a keymap to use whilst reading;
872 if omitted or nil, the default is `minibuffer-local-map'.
874 If fourth arg READ is non-nil, interpret the result as a Lisp object
875 and return that object:
876 in other words, do `(car (read-from-string INPUT-STRING))'
878 Fifth arg HIST, if non-nil, specifies a history list and optionally
879 the initial position in the list. It can be a symbol, which is the
880 history list variable to use, or a cons cell (HISTVAR . HISTPOS).
881 In that case, HISTVAR is the history list variable to use, and
882 HISTPOS is the initial position for use by the minibuffer history
883 commands. For consistency, you should also specify that element of
884 the history as the value of INITIAL-CONTENTS. Positions are counted
885 starting from 1 at the beginning of the list.
887 Sixth arg DEFAULT-VALUE, if non-nil, should be a string, which is used
888 as the default to `read' if READ is non-nil and the user enters
889 empty input. But if READ is nil, this function does _not_ return
890 DEFAULT-VALUE for empty input! Instead, it returns the empty string.
892 Whatever the value of READ, DEFAULT-VALUE is made available via the
893 minibuffer history commands. DEFAULT-VALUE can also be a list of
894 strings, in which case all the strings are available in the history,
895 and the first string is the default to `read' if READ is non-nil.
897 Seventh arg INHERIT-INPUT-METHOD, if non-nil, means the minibuffer inherits
898 the current input method and the setting of `enable-multibyte-characters'.
900 If the variable `minibuffer-allow-text-properties' is non-nil,
901 then the string which is returned includes whatever text properties
902 were present in the minibuffer. Otherwise the value has no text properties.
904 The remainder of this documentation string describes the
905 INITIAL-CONTENTS argument in more detail. It is only relevant when
906 studying existing code, or when HIST is a cons. If non-nil,
907 INITIAL-CONTENTS is a string to be inserted into the minibuffer before
908 reading input. Normally, point is put at the end of that string.
909 However, if INITIAL-CONTENTS is (STRING . POSITION), the initial
910 input is STRING, but point is placed at _one-indexed_ position
911 POSITION in the minibuffer. Any integer value less than or equal to
912 one puts point at the beginning of the string. *Note* that this
913 behavior differs from the way such arguments are used in `completing-read'
914 and some related functions, which use zero-indexing for POSITION. */)
915 (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)
917 Lisp_Object histvar, histpos, val;
919 CHECK_STRING (prompt);
920 if (NILP (keymap))
921 keymap = Vminibuffer_local_map;
922 else
923 keymap = get_keymap (keymap, 1, 0);
925 if (SYMBOLP (hist))
927 histvar = hist;
928 histpos = Qnil;
930 else
932 histvar = Fcar_safe (hist);
933 histpos = Fcdr_safe (hist);
935 if (NILP (histvar))
936 histvar = Qminibuffer_history;
937 if (NILP (histpos))
938 XSETFASTINT (histpos, 0);
940 val = read_minibuf (keymap, initial_contents, prompt,
941 !NILP (read),
942 histvar, histpos, default_value,
943 minibuffer_allow_text_properties,
944 !NILP (inherit_input_method));
945 return val;
948 /* Functions that use the minibuffer to read various things. */
950 DEFUN ("read-string", Fread_string, Sread_string, 1, 5, 0,
951 doc: /* Read a string from the minibuffer, prompting with string PROMPT.
952 If non-nil, second arg INITIAL-INPUT is a string to insert before reading.
953 This argument has been superseded by DEFAULT-VALUE and should normally be nil
954 in new code. It behaves as INITIAL-CONTENTS in `read-from-minibuffer' (which
955 see).
956 The third arg HISTORY, if non-nil, specifies a history list
957 and optionally the initial position in the list.
958 See `read-from-minibuffer' for details of HISTORY argument.
959 Fourth arg DEFAULT-VALUE is the default value or the list of default values.
960 If non-nil, it is used for history commands, and as the value (or the first
961 element of the list of default values) to return if the user enters the
962 empty string.
963 Fifth arg INHERIT-INPUT-METHOD, if non-nil, means the minibuffer inherits
964 the current input method and the setting of `enable-multibyte-characters'. */)
965 (Lisp_Object prompt, Lisp_Object initial_input, Lisp_Object history, Lisp_Object default_value, Lisp_Object inherit_input_method)
967 Lisp_Object val;
968 ptrdiff_t count = SPECPDL_INDEX ();
970 /* Just in case we're in a recursive minibuffer, make it clear that the
971 previous minibuffer's completion table does not apply to the new
972 minibuffer.
973 FIXME: `minibuffer-completion-table' should be buffer-local instead. */
974 specbind (Qminibuffer_completion_table, Qnil);
976 val = Fread_from_minibuffer (prompt, initial_input, Qnil,
977 Qnil, history, default_value,
978 inherit_input_method);
979 if (STRINGP (val) && SCHARS (val) == 0 && ! NILP (default_value))
980 val = CONSP (default_value) ? XCAR (default_value) : default_value;
981 return unbind_to (count, val);
984 DEFUN ("read-no-blanks-input", Fread_no_blanks_input, Sread_no_blanks_input, 1, 3, 0,
985 doc: /* Read a string from the terminal, not allowing blanks.
986 Prompt with PROMPT. Whitespace terminates the input. If INITIAL is
987 non-nil, it should be a string, which is used as initial input, with
988 point positioned at the end, so that SPACE will accept the input.
989 \(Actually, INITIAL can also be a cons of a string and an integer.
990 Such values are treated as in `read-from-minibuffer', but are normally
991 not useful in this function.)
992 Third arg INHERIT-INPUT-METHOD, if non-nil, means the minibuffer inherits
993 the current input method and the setting of`enable-multibyte-characters'. */)
994 (Lisp_Object prompt, Lisp_Object initial, Lisp_Object inherit_input_method)
996 CHECK_STRING (prompt);
997 return read_minibuf (Vminibuffer_local_ns_map, initial, prompt,
998 0, Qminibuffer_history, make_number (0), Qnil, 0,
999 !NILP (inherit_input_method));
1002 DEFUN ("read-command", Fread_command, Sread_command, 1, 2, 0,
1003 doc: /* Read the name of a command and return as a symbol.
1004 Prompt with PROMPT. By default, return DEFAULT-VALUE or its first element
1005 if it is a list. */)
1006 (Lisp_Object prompt, Lisp_Object default_value)
1008 Lisp_Object name, default_string;
1010 if (NILP (default_value))
1011 default_string = Qnil;
1012 else if (SYMBOLP (default_value))
1013 default_string = SYMBOL_NAME (default_value);
1014 else
1015 default_string = default_value;
1017 name = Fcompleting_read (prompt, Vobarray, Qcommandp, Qt,
1018 Qnil, Qnil, default_string, Qnil);
1019 if (NILP (name))
1020 return name;
1021 return Fintern (name, Qnil);
1024 #ifdef NOTDEF
1025 DEFUN ("read-function", Fread_function, Sread_function, 1, 1, 0,
1026 doc: /* One arg PROMPT, a string. Read the name of a function and return as a symbol.
1027 Prompt with PROMPT. */)
1028 (Lisp_Object prompt)
1030 return Fintern (Fcompleting_read (prompt, Vobarray, Qfboundp, Qt, Qnil, Qnil, Qnil, Qnil),
1031 Qnil);
1033 #endif /* NOTDEF */
1035 DEFUN ("read-variable", Fread_variable, Sread_variable, 1, 2, 0,
1036 doc: /* Read the name of a user option and return it as a symbol.
1037 Prompt with PROMPT. By default, return DEFAULT-VALUE or its first element
1038 if it is a list.
1039 A user option, or customizable variable, is one for which
1040 `custom-variable-p' returns non-nil. */)
1041 (Lisp_Object prompt, Lisp_Object default_value)
1043 Lisp_Object name, default_string;
1045 if (NILP (default_value))
1046 default_string = Qnil;
1047 else if (SYMBOLP (default_value))
1048 default_string = SYMBOL_NAME (default_value);
1049 else
1050 default_string = default_value;
1052 name = Fcompleting_read (prompt, Vobarray,
1053 Qcustom_variable_p, Qt,
1054 Qnil, Qcustom_variable_history,
1055 default_string, Qnil);
1056 if (NILP (name))
1057 return name;
1058 return Fintern (name, Qnil);
1061 DEFUN ("read-buffer", Fread_buffer, Sread_buffer, 1, 4, 0,
1062 doc: /* Read the name of a buffer and return as a string.
1063 Prompt with PROMPT.
1064 Optional second arg DEF is value to return if user enters an empty line.
1065 If DEF is a list of default values, return its first element.
1066 Optional third arg REQUIRE-MATCH determines whether non-existing
1067 buffer names are allowed. It has the same meaning as the
1068 REQUIRE-MATCH argument of `completing-read'.
1069 The argument PROMPT should be a string ending with a colon and a space.
1070 If `read-buffer-completion-ignore-case' is non-nil, completion ignores
1071 case while reading the buffer name.
1072 If `read-buffer-function' is non-nil, this works by calling it as a
1073 function, instead of the usual behavior.
1074 Optional arg PREDICATE if non-nil is a function limiting the buffers that can
1075 be considered. */)
1076 (Lisp_Object prompt, Lisp_Object def, Lisp_Object require_match,
1077 Lisp_Object predicate)
1079 Lisp_Object result;
1080 char *s;
1081 ptrdiff_t len;
1082 ptrdiff_t count = SPECPDL_INDEX ();
1084 if (BUFFERP (def))
1085 def = BVAR (XBUFFER (def), name);
1087 specbind (Qcompletion_ignore_case,
1088 read_buffer_completion_ignore_case ? Qt : Qnil);
1090 if (NILP (Vread_buffer_function))
1092 if (!NILP (def))
1094 /* A default value was provided: we must change PROMPT,
1095 editing the default value in before the colon. To achieve
1096 this, we replace PROMPT with a substring that doesn't
1097 contain the terminal space and colon (if present). They
1098 are then added back using Fformat. */
1100 if (STRINGP (prompt))
1102 s = SSDATA (prompt);
1103 len = SBYTES (prompt);
1104 if (len >= 2 && s[len - 2] == ':' && s[len - 1] == ' ')
1105 len = len - 2;
1106 else if (len >= 1 && (s[len - 1] == ':' || s[len - 1] == ' '))
1107 len--;
1109 prompt = make_specified_string (s, -1, len,
1110 STRING_MULTIBYTE (prompt));
1113 AUTO_STRING (format, "%s (default %s): ");
1114 prompt = CALLN (Fformat, format, prompt,
1115 CONSP (def) ? XCAR (def) : def);
1118 result = Fcompleting_read (prompt, intern ("internal-complete-buffer"),
1119 predicate, require_match, Qnil,
1120 Qbuffer_name_history, def, Qnil);
1122 else
1123 result = (NILP (predicate)
1124 /* Partial backward compatibility for older read_buffer_functions
1125 which don't expect a `predicate' argument. */
1126 ? call3 (Vread_buffer_function, prompt, def, require_match)
1127 : call4 (Vread_buffer_function, prompt, def, require_match,
1128 predicate));
1129 return unbind_to (count, result);
1132 static Lisp_Object
1133 minibuf_conform_representation (Lisp_Object string, Lisp_Object basis)
1135 if (STRING_MULTIBYTE (string) == STRING_MULTIBYTE (basis))
1136 return string;
1138 if (STRING_MULTIBYTE (string))
1139 return Fstring_make_unibyte (string);
1140 else
1141 return Fstring_make_multibyte (string);
1144 DEFUN ("try-completion", Ftry_completion, Stry_completion, 2, 3, 0,
1145 doc: /* Return common substring of all completions of STRING in COLLECTION.
1146 Test each possible completion specified by COLLECTION
1147 to see if it begins with STRING. The possible completions may be
1148 strings or symbols. Symbols are converted to strings before testing,
1149 see `symbol-name'.
1150 All that match STRING are compared together; the longest initial sequence
1151 common to all these matches is the return value.
1152 If there is no match at all, the return value is nil.
1153 For a unique match which is exact, the return value is t.
1155 If COLLECTION is an alist, the keys (cars of elements) are the
1156 possible completions. If an element is not a cons cell, then the
1157 element itself is the possible completion.
1158 If COLLECTION is a hash-table, all the keys that are strings or symbols
1159 are the possible completions.
1160 If COLLECTION is an obarray, the names of all symbols in the obarray
1161 are the possible completions.
1163 COLLECTION can also be a function to do the completion itself.
1164 It receives three arguments: the values STRING, PREDICATE and nil.
1165 Whatever it returns becomes the value of `try-completion'.
1167 If optional third argument PREDICATE is non-nil,
1168 it is used to test each possible match.
1169 The match is a candidate only if PREDICATE returns non-nil.
1170 The argument given to PREDICATE is the alist element
1171 or the symbol from the obarray. If COLLECTION is a hash-table,
1172 predicate is called with two arguments: the key and the value.
1173 Additionally to this predicate, `completion-regexp-list'
1174 is used to further constrain the set of candidates. */)
1175 (Lisp_Object string, Lisp_Object collection, Lisp_Object predicate)
1177 Lisp_Object bestmatch, tail, elt, eltstring;
1178 /* Size in bytes of BESTMATCH. */
1179 ptrdiff_t bestmatchsize = 0;
1180 /* These are in bytes, too. */
1181 ptrdiff_t compare, matchsize;
1182 enum { function_table, list_table, obarray_table, hash_table}
1183 type = (HASH_TABLE_P (collection) ? hash_table
1184 : VECTORP (collection) ? obarray_table
1185 : ((NILP (collection)
1186 || (CONSP (collection) && !FUNCTIONP (collection)))
1187 ? list_table : function_table));
1188 ptrdiff_t idx = 0, obsize = 0;
1189 int matchcount = 0;
1190 ptrdiff_t bindcount = -1;
1191 Lisp_Object bucket, zero, end, tem;
1193 CHECK_STRING (string);
1194 if (type == function_table)
1195 return call3 (collection, string, predicate, Qnil);
1197 bestmatch = bucket = Qnil;
1198 zero = make_number (0);
1200 /* If COLLECTION is not a list, set TAIL just for gc pro. */
1201 tail = collection;
1202 if (type == obarray_table)
1204 collection = check_obarray (collection);
1205 obsize = ASIZE (collection);
1206 bucket = AREF (collection, idx);
1209 while (1)
1211 /* Get the next element of the alist, obarray, or hash-table. */
1212 /* Exit the loop if the elements are all used up. */
1213 /* elt gets the alist element or symbol.
1214 eltstring gets the name to check as a completion. */
1216 if (type == list_table)
1218 if (!CONSP (tail))
1219 break;
1220 elt = XCAR (tail);
1221 eltstring = CONSP (elt) ? XCAR (elt) : elt;
1222 tail = XCDR (tail);
1224 else if (type == obarray_table)
1226 if (!EQ (bucket, zero))
1228 if (!SYMBOLP (bucket))
1229 error ("Bad data in guts of obarray");
1230 elt = bucket;
1231 eltstring = elt;
1232 if (XSYMBOL (bucket)->u.s.next)
1233 XSETSYMBOL (bucket, XSYMBOL (bucket)->u.s.next);
1234 else
1235 XSETFASTINT (bucket, 0);
1237 else if (++idx >= obsize)
1238 break;
1239 else
1241 bucket = AREF (collection, idx);
1242 continue;
1245 else /* if (type == hash_table) */
1247 while (idx < HASH_TABLE_SIZE (XHASH_TABLE (collection))
1248 && NILP (HASH_HASH (XHASH_TABLE (collection), idx)))
1249 idx++;
1250 if (idx >= HASH_TABLE_SIZE (XHASH_TABLE (collection)))
1251 break;
1252 else
1253 elt = eltstring = HASH_KEY (XHASH_TABLE (collection), idx++);
1256 /* Is this element a possible completion? */
1258 if (SYMBOLP (eltstring))
1259 eltstring = Fsymbol_name (eltstring);
1261 if (STRINGP (eltstring)
1262 && SCHARS (string) <= SCHARS (eltstring)
1263 && (tem = Fcompare_strings (eltstring, zero,
1264 make_number (SCHARS (string)),
1265 string, zero, Qnil,
1266 completion_ignore_case ? Qt : Qnil),
1267 EQ (Qt, tem)))
1269 /* Yes. */
1270 Lisp_Object regexps;
1272 /* Ignore this element if it fails to match all the regexps. */
1274 for (regexps = Vcompletion_regexp_list; CONSP (regexps);
1275 regexps = XCDR (regexps))
1277 if (bindcount < 0) {
1278 bindcount = SPECPDL_INDEX ();
1279 specbind (Qcase_fold_search,
1280 completion_ignore_case ? Qt : Qnil);
1282 tem = Fstring_match (XCAR (regexps), eltstring, zero);
1283 if (NILP (tem))
1284 break;
1286 if (CONSP (regexps))
1287 continue;
1290 /* Ignore this element if there is a predicate
1291 and the predicate doesn't like it. */
1293 if (!NILP (predicate))
1295 if (EQ (predicate, Qcommandp))
1296 tem = Fcommandp (elt, Qnil);
1297 else
1299 if (bindcount >= 0)
1301 unbind_to (bindcount, Qnil);
1302 bindcount = -1;
1304 tem = (type == hash_table
1305 ? call2 (predicate, elt,
1306 HASH_VALUE (XHASH_TABLE (collection),
1307 idx - 1))
1308 : call1 (predicate, elt));
1310 if (NILP (tem)) continue;
1313 /* Update computation of how much all possible completions match */
1315 if (NILP (bestmatch))
1317 matchcount = 1;
1318 bestmatch = eltstring;
1319 bestmatchsize = SCHARS (eltstring);
1321 else
1323 compare = min (bestmatchsize, SCHARS (eltstring));
1324 tem = Fcompare_strings (bestmatch, zero,
1325 make_number (compare),
1326 eltstring, zero,
1327 make_number (compare),
1328 completion_ignore_case ? Qt : Qnil);
1329 matchsize = EQ (tem, Qt) ? compare : eabs (XINT (tem)) - 1;
1331 if (completion_ignore_case)
1333 /* If this is an exact match except for case,
1334 use it as the best match rather than one that is not an
1335 exact match. This way, we get the case pattern
1336 of the actual match. */
1337 if ((matchsize == SCHARS (eltstring)
1338 && matchsize < SCHARS (bestmatch))
1340 /* If there is more than one exact match ignoring case,
1341 and one of them is exact including case,
1342 prefer that one. */
1343 /* If there is no exact match ignoring case,
1344 prefer a match that does not change the case
1345 of the input. */
1346 ((matchsize == SCHARS (eltstring))
1348 (matchsize == SCHARS (bestmatch))
1349 && (tem = Fcompare_strings (eltstring, zero,
1350 make_number (SCHARS (string)),
1351 string, zero,
1352 Qnil,
1353 Qnil),
1354 EQ (Qt, tem))
1355 && (tem = Fcompare_strings (bestmatch, zero,
1356 make_number (SCHARS (string)),
1357 string, zero,
1358 Qnil,
1359 Qnil),
1360 ! EQ (Qt, tem))))
1361 bestmatch = eltstring;
1363 if (bestmatchsize != SCHARS (eltstring)
1364 || bestmatchsize != matchsize)
1365 /* Don't count the same string multiple times. */
1366 matchcount += matchcount <= 1;
1367 bestmatchsize = matchsize;
1368 if (matchsize <= SCHARS (string)
1369 /* If completion-ignore-case is non-nil, don't
1370 short-circuit because we want to find the best
1371 possible match *including* case differences. */
1372 && !completion_ignore_case
1373 && matchcount > 1)
1374 /* No need to look any further. */
1375 break;
1380 if (bindcount >= 0) {
1381 unbind_to (bindcount, Qnil);
1382 bindcount = -1;
1385 if (NILP (bestmatch))
1386 return Qnil; /* No completions found. */
1387 /* If we are ignoring case, and there is no exact match,
1388 and no additional text was supplied,
1389 don't change the case of what the user typed. */
1390 if (completion_ignore_case && bestmatchsize == SCHARS (string)
1391 && SCHARS (bestmatch) > bestmatchsize)
1392 return minibuf_conform_representation (string, bestmatch);
1394 /* Return t if the supplied string is an exact match (counting case);
1395 it does not require any change to be made. */
1396 if (matchcount == 1 && !NILP (Fequal (bestmatch, string)))
1397 return Qt;
1399 XSETFASTINT (zero, 0); /* Else extract the part in which */
1400 XSETFASTINT (end, bestmatchsize); /* all completions agree. */
1401 return Fsubstring (bestmatch, zero, end);
1404 DEFUN ("all-completions", Fall_completions, Sall_completions, 2, 4, 0,
1405 doc: /* Search for partial matches to STRING in COLLECTION.
1406 Test each of the possible completions specified by COLLECTION
1407 to see if it begins with STRING. The possible completions may be
1408 strings or symbols. Symbols are converted to strings before testing,
1409 see `symbol-name'.
1410 The value is a list of all the possible completions that match STRING.
1412 If COLLECTION is an alist, the keys (cars of elements) are the
1413 possible completions. If an element is not a cons cell, then the
1414 element itself is the possible completion.
1415 If COLLECTION is a hash-table, all the keys that are strings or symbols
1416 are the possible completions.
1417 If COLLECTION is an obarray, the names of all symbols in the obarray
1418 are the possible completions.
1420 COLLECTION can also be a function to do the completion itself.
1421 It receives three arguments: the values STRING, PREDICATE and t.
1422 Whatever it returns becomes the value of `all-completions'.
1424 If optional third argument PREDICATE is non-nil,
1425 it is used to test each possible match.
1426 The match is a candidate only if PREDICATE returns non-nil.
1427 The argument given to PREDICATE is the alist element
1428 or the symbol from the obarray. If COLLECTION is a hash-table,
1429 predicate is called with two arguments: the key and the value.
1430 Additionally to this predicate, `completion-regexp-list'
1431 is used to further constrain the set of candidates.
1433 An obsolete optional fourth argument HIDE-SPACES is still accepted for
1434 backward compatibility. If non-nil, strings in COLLECTION that start
1435 with a space are ignored unless STRING itself starts with a space. */)
1436 (Lisp_Object string, Lisp_Object collection, Lisp_Object predicate, Lisp_Object hide_spaces)
1438 Lisp_Object tail, elt, eltstring;
1439 Lisp_Object allmatches;
1440 int type = HASH_TABLE_P (collection) ? 3
1441 : VECTORP (collection) ? 2
1442 : NILP (collection) || (CONSP (collection) && !FUNCTIONP (collection));
1443 ptrdiff_t idx = 0, obsize = 0;
1444 ptrdiff_t bindcount = -1;
1445 Lisp_Object bucket, tem, zero;
1447 CHECK_STRING (string);
1448 if (type == 0)
1449 return call3 (collection, string, predicate, Qt);
1450 allmatches = bucket = Qnil;
1451 zero = make_number (0);
1453 /* If COLLECTION is not a list, set TAIL just for gc pro. */
1454 tail = collection;
1455 if (type == 2)
1457 collection = check_obarray (collection);
1458 obsize = ASIZE (collection);
1459 bucket = AREF (collection, idx);
1462 while (1)
1464 /* Get the next element of the alist, obarray, or hash-table. */
1465 /* Exit the loop if the elements are all used up. */
1466 /* elt gets the alist element or symbol.
1467 eltstring gets the name to check as a completion. */
1469 if (type == 1)
1471 if (!CONSP (tail))
1472 break;
1473 elt = XCAR (tail);
1474 eltstring = CONSP (elt) ? XCAR (elt) : elt;
1475 tail = XCDR (tail);
1477 else if (type == 2)
1479 if (!EQ (bucket, zero))
1481 if (!SYMBOLP (bucket))
1482 error ("Bad data in guts of obarray");
1483 elt = bucket;
1484 eltstring = elt;
1485 if (XSYMBOL (bucket)->u.s.next)
1486 XSETSYMBOL (bucket, XSYMBOL (bucket)->u.s.next);
1487 else
1488 XSETFASTINT (bucket, 0);
1490 else if (++idx >= obsize)
1491 break;
1492 else
1494 bucket = AREF (collection, idx);
1495 continue;
1498 else /* if (type == 3) */
1500 while (idx < HASH_TABLE_SIZE (XHASH_TABLE (collection))
1501 && NILP (HASH_HASH (XHASH_TABLE (collection), idx)))
1502 idx++;
1503 if (idx >= HASH_TABLE_SIZE (XHASH_TABLE (collection)))
1504 break;
1505 else
1506 elt = eltstring = HASH_KEY (XHASH_TABLE (collection), idx++);
1509 /* Is this element a possible completion? */
1511 if (SYMBOLP (eltstring))
1512 eltstring = Fsymbol_name (eltstring);
1514 if (STRINGP (eltstring)
1515 && SCHARS (string) <= SCHARS (eltstring)
1516 /* If HIDE_SPACES, reject alternatives that start with space
1517 unless the input starts with space. */
1518 && (NILP (hide_spaces)
1519 || (SBYTES (string) > 0
1520 && SREF (string, 0) == ' ')
1521 || SREF (eltstring, 0) != ' ')
1522 && (tem = Fcompare_strings (eltstring, zero,
1523 make_number (SCHARS (string)),
1524 string, zero,
1525 make_number (SCHARS (string)),
1526 completion_ignore_case ? Qt : Qnil),
1527 EQ (Qt, tem)))
1529 /* Yes. */
1530 Lisp_Object regexps;
1532 /* Ignore this element if it fails to match all the regexps. */
1534 for (regexps = Vcompletion_regexp_list; CONSP (regexps);
1535 regexps = XCDR (regexps))
1537 if (bindcount < 0) {
1538 bindcount = SPECPDL_INDEX ();
1539 specbind (Qcase_fold_search,
1540 completion_ignore_case ? Qt : Qnil);
1542 tem = Fstring_match (XCAR (regexps), eltstring, zero);
1543 if (NILP (tem))
1544 break;
1546 if (CONSP (regexps))
1547 continue;
1550 /* Ignore this element if there is a predicate
1551 and the predicate doesn't like it. */
1553 if (!NILP (predicate))
1555 if (EQ (predicate, Qcommandp))
1556 tem = Fcommandp (elt, Qnil);
1557 else
1559 if (bindcount >= 0) {
1560 unbind_to (bindcount, Qnil);
1561 bindcount = -1;
1563 tem = type == 3
1564 ? call2 (predicate, elt,
1565 HASH_VALUE (XHASH_TABLE (collection), idx - 1))
1566 : call1 (predicate, elt);
1568 if (NILP (tem)) continue;
1570 /* Ok => put it on the list. */
1571 allmatches = Fcons (eltstring, allmatches);
1575 if (bindcount >= 0) {
1576 unbind_to (bindcount, Qnil);
1577 bindcount = -1;
1580 return Fnreverse (allmatches);
1583 DEFUN ("completing-read", Fcompleting_read, Scompleting_read, 2, 8, 0,
1584 doc: /* Read a string in the minibuffer, with completion.
1585 PROMPT is a string to prompt with; normally it ends in a colon and a space.
1586 COLLECTION can be a list of strings, an alist, an obarray or a hash table.
1587 COLLECTION can also be a function to do the completion itself.
1588 PREDICATE limits completion to a subset of COLLECTION.
1589 See `try-completion', `all-completions', `test-completion',
1590 and `completion-boundaries', for more details on completion,
1591 COLLECTION, and PREDICATE. See also Info node `(elisp)Basic Completion'
1592 for the details about completion, and Info node `(elisp)Programmed
1593 Completion' for expectations from COLLECTION when it's a function.
1595 REQUIRE-MATCH can take the following values:
1596 - t means that the user is not allowed to exit unless the input is (or
1597 completes to) an element of COLLECTION or is null.
1598 - nil means that the user can exit with any input.
1599 - `confirm' means that the user can exit with any input, but she needs
1600 to confirm her choice if the input is not an element of COLLECTION.
1601 - `confirm-after-completion' means that the user can exit with any
1602 input, but she needs to confirm her choice if she called
1603 `minibuffer-complete' right before `minibuffer-complete-and-exit'
1604 and the input is not an element of COLLECTION.
1605 - anything else behaves like t except that typing RET does not exit if it
1606 does non-null completion.
1608 If the input is null, `completing-read' returns DEF, or the first
1609 element of the list of default values, or an empty string if DEF is
1610 nil, regardless of the value of REQUIRE-MATCH.
1612 If INITIAL-INPUT is non-nil, insert it in the minibuffer initially,
1613 with point positioned at the end. If it is (STRING . POSITION), the
1614 initial input is STRING, but point is placed at _zero-indexed_
1615 position POSITION in STRING. (*Note* that this is different from
1616 `read-from-minibuffer' and related functions, which use one-indexing
1617 for POSITION.) This feature is deprecated--it is best to pass nil
1618 for INITIAL-INPUT and supply the default value DEF instead. The
1619 user can yank the default value into the minibuffer easily using
1620 \\<minibuffer-local-map>\\[next-history-element].
1622 HIST, if non-nil, specifies a history list and optionally the initial
1623 position in the list. It can be a symbol, which is the history list
1624 variable to use, or it can be a cons cell (HISTVAR . HISTPOS). In
1625 that case, HISTVAR is the history list variable to use, and HISTPOS
1626 is the initial position (the position in the list used by the
1627 minibuffer history commands). For consistency, you should also
1628 specify that element of the history as the value of INITIAL-INPUT.
1629 (This is the only case in which you should use INITIAL-INPUT instead
1630 of DEF.) Positions are counted starting from 1 at the beginning of
1631 the list. The variable `history-length' controls the maximum length
1632 of a history list.
1634 DEF, if non-nil, is the default value or the list of default values.
1636 If INHERIT-INPUT-METHOD is non-nil, the minibuffer inherits the
1637 current input method and the setting of `enable-multibyte-characters'.
1639 Completion ignores case if the ambient value of
1640 `completion-ignore-case' is non-nil.
1642 See also `completing-read-function'. */)
1643 (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)
1645 return CALLN (Ffuncall,
1646 Fsymbol_value (intern ("completing-read-function")),
1647 prompt, collection, predicate, require_match, initial_input,
1648 hist, def, inherit_input_method);
1651 /* Test whether TXT is an exact completion. */
1652 DEFUN ("test-completion", Ftest_completion, Stest_completion, 2, 3, 0,
1653 doc: /* Return non-nil if STRING is a valid completion.
1654 Takes the same arguments as `all-completions' and `try-completion'.
1655 If COLLECTION is a function, it is called with three arguments:
1656 the values STRING, PREDICATE and `lambda'. */)
1657 (Lisp_Object string, Lisp_Object collection, Lisp_Object predicate)
1659 Lisp_Object regexps, tail, tem = Qnil;
1660 ptrdiff_t i = 0;
1662 CHECK_STRING (string);
1664 if (NILP (collection) || (CONSP (collection) && !FUNCTIONP (collection)))
1666 tem = Fassoc_string (string, collection, completion_ignore_case ? Qt : Qnil);
1667 if (NILP (tem))
1668 return Qnil;
1670 else if (VECTORP (collection))
1672 /* Bypass intern-soft as that loses for nil. */
1673 tem = oblookup (collection,
1674 SSDATA (string),
1675 SCHARS (string),
1676 SBYTES (string));
1677 if (!SYMBOLP (tem))
1679 if (STRING_MULTIBYTE (string))
1680 string = Fstring_make_unibyte (string);
1681 else
1682 string = Fstring_make_multibyte (string);
1684 tem = oblookup (collection,
1685 SSDATA (string),
1686 SCHARS (string),
1687 SBYTES (string));
1690 if (completion_ignore_case && !SYMBOLP (tem))
1692 for (i = ASIZE (collection) - 1; i >= 0; i--)
1694 tail = AREF (collection, i);
1695 if (SYMBOLP (tail))
1696 while (1)
1698 if (EQ (Fcompare_strings (string, make_number (0), Qnil,
1699 Fsymbol_name (tail),
1700 make_number (0) , Qnil, Qt),
1701 Qt))
1703 tem = tail;
1704 break;
1706 if (XSYMBOL (tail)->u.s.next == 0)
1707 break;
1708 XSETSYMBOL (tail, XSYMBOL (tail)->u.s.next);
1713 if (!SYMBOLP (tem))
1714 return Qnil;
1716 else if (HASH_TABLE_P (collection))
1718 struct Lisp_Hash_Table *h = XHASH_TABLE (collection);
1719 i = hash_lookup (h, string, NULL);
1720 if (i >= 0)
1722 tem = HASH_KEY (h, i);
1723 goto found_matching_key;
1725 else
1726 for (i = 0; i < HASH_TABLE_SIZE (h); ++i)
1728 if (NILP (HASH_HASH (h, i))) continue;
1729 tem = HASH_KEY (h, i);
1730 Lisp_Object strkey = (SYMBOLP (tem) ? Fsymbol_name (tem) : tem);
1731 if (!STRINGP (strkey)) continue;
1732 if (EQ (Fcompare_strings (string, Qnil, Qnil,
1733 strkey, Qnil, Qnil,
1734 completion_ignore_case ? Qt : Qnil),
1735 Qt))
1736 goto found_matching_key;
1738 return Qnil;
1739 found_matching_key: ;
1741 else
1742 return call3 (collection, string, predicate, Qlambda);
1744 /* Reject this element if it fails to match all the regexps. */
1745 if (CONSP (Vcompletion_regexp_list))
1747 ptrdiff_t count = SPECPDL_INDEX ();
1748 specbind (Qcase_fold_search, completion_ignore_case ? Qt : Qnil);
1749 for (regexps = Vcompletion_regexp_list; CONSP (regexps);
1750 regexps = XCDR (regexps))
1752 /* We can test against STRING, because if we got here, then
1753 the element is equivalent to it. */
1754 if (NILP (Fstring_match (XCAR (regexps), string, Qnil)))
1755 return unbind_to (count, Qnil);
1757 unbind_to (count, Qnil);
1760 /* Finally, check the predicate. */
1761 if (!NILP (predicate))
1763 return HASH_TABLE_P (collection)
1764 ? call2 (predicate, tem, HASH_VALUE (XHASH_TABLE (collection), i))
1765 : call1 (predicate, tem);
1767 else
1768 return Qt;
1771 DEFUN ("internal-complete-buffer", Finternal_complete_buffer, Sinternal_complete_buffer, 3, 3, 0,
1772 doc: /* Perform completion on buffer names.
1773 STRING and PREDICATE have the same meanings as in `try-completion',
1774 `all-completions', and `test-completion'.
1776 If FLAG is nil, invoke `try-completion'; if it is t, invoke
1777 `all-completions'; otherwise invoke `test-completion'. */)
1778 (Lisp_Object string, Lisp_Object predicate, Lisp_Object flag)
1780 if (NILP (flag))
1781 return Ftry_completion (string, Vbuffer_alist, predicate);
1782 else if (EQ (flag, Qt))
1784 Lisp_Object res = Fall_completions (string, Vbuffer_alist, predicate, Qnil);
1785 if (SCHARS (string) > 0)
1786 return res;
1787 else
1788 { /* Strip out internal buffers. */
1789 Lisp_Object bufs = res;
1790 /* First, look for a non-internal buffer in `res'. */
1791 while (CONSP (bufs) && SREF (XCAR (bufs), 0) == ' ')
1792 bufs = XCDR (bufs);
1793 if (NILP (bufs))
1794 return (EQ (Flength (res), Flength (Vbuffer_alist))
1795 /* If all bufs are internal don't strip them out. */
1796 ? res : bufs);
1797 res = bufs;
1798 while (CONSP (XCDR (bufs)))
1799 if (SREF (XCAR (XCDR (bufs)), 0) == ' ')
1800 XSETCDR (bufs, XCDR (XCDR (bufs)));
1801 else
1802 bufs = XCDR (bufs);
1803 return res;
1806 else if (EQ (flag, Qlambda))
1807 return Ftest_completion (string, Vbuffer_alist, predicate);
1808 else if (EQ (flag, Qmetadata))
1809 return list2 (Qmetadata, Fcons (Qcategory, Qbuffer));
1810 else
1811 return Qnil;
1814 /* Like assoc but assumes KEY is a string, and ignores case if appropriate. */
1816 DEFUN ("assoc-string", Fassoc_string, Sassoc_string, 2, 3, 0,
1817 doc: /* Like `assoc' but specifically for strings (and symbols).
1819 This returns the first element of LIST whose car matches the string or
1820 symbol KEY, or nil if no match exists. When performing the
1821 comparison, symbols are first converted to strings, and unibyte
1822 strings to multibyte. If the optional arg CASE-FOLD is non-nil, both
1823 KEY and the elements of LIST are upcased for comparison.
1825 Unlike `assoc', KEY can also match an entry in LIST consisting of a
1826 single string, rather than a cons cell whose car is a string. */)
1827 (register Lisp_Object key, Lisp_Object list, Lisp_Object case_fold)
1829 register Lisp_Object tail;
1831 if (SYMBOLP (key))
1832 key = Fsymbol_name (key);
1834 for (tail = list; CONSP (tail); tail = XCDR (tail))
1836 register Lisp_Object elt, tem, thiscar;
1837 elt = XCAR (tail);
1838 thiscar = CONSP (elt) ? XCAR (elt) : elt;
1839 if (SYMBOLP (thiscar))
1840 thiscar = Fsymbol_name (thiscar);
1841 else if (!STRINGP (thiscar))
1842 continue;
1843 tem = Fcompare_strings (thiscar, make_number (0), Qnil,
1844 key, make_number (0), Qnil,
1845 case_fold);
1846 if (EQ (tem, Qt))
1847 return elt;
1848 maybe_quit ();
1850 return Qnil;
1854 DEFUN ("minibuffer-depth", Fminibuffer_depth, Sminibuffer_depth, 0, 0, 0,
1855 doc: /* Return current depth of activations of minibuffer, a nonnegative integer. */)
1856 (void)
1858 return make_number (minibuf_level);
1861 DEFUN ("minibuffer-prompt", Fminibuffer_prompt, Sminibuffer_prompt, 0, 0, 0,
1862 doc: /* Return the prompt string of the currently-active minibuffer.
1863 If no minibuffer is active, return nil. */)
1864 (void)
1866 return Fcopy_sequence (minibuf_prompt);
1870 void
1871 init_minibuf_once (void)
1873 Vminibuffer_list = Qnil;
1874 staticpro (&Vminibuffer_list);
1877 void
1878 syms_of_minibuf (void)
1880 minibuf_level = 0;
1881 minibuf_prompt = Qnil;
1882 staticpro (&minibuf_prompt);
1884 minibuf_save_list = Qnil;
1885 staticpro (&minibuf_save_list);
1887 DEFSYM (Qcompletion_ignore_case, "completion-ignore-case");
1888 DEFSYM (Qminibuffer_default, "minibuffer-default");
1889 Fset (Qminibuffer_default, Qnil);
1891 DEFSYM (Qminibuffer_completion_table, "minibuffer-completion-table");
1893 staticpro (&last_minibuf_string);
1894 last_minibuf_string = Qnil;
1896 DEFSYM (Qcustom_variable_history, "custom-variable-history");
1897 Fset (Qcustom_variable_history, Qnil);
1899 DEFSYM (Qminibuffer_history, "minibuffer-history");
1900 DEFSYM (Qbuffer_name_history, "buffer-name-history");
1901 Fset (Qbuffer_name_history, Qnil);
1903 DEFSYM (Qcustom_variable_p, "custom-variable-p");
1905 /* Normal hooks for entry to and exit from minibuffer. */
1906 DEFSYM (Qminibuffer_setup_hook, "minibuffer-setup-hook");
1907 DEFSYM (Qminibuffer_exit_hook, "minibuffer-exit-hook");
1909 /* The maximum length of a minibuffer history. */
1910 DEFSYM (Qhistory_length, "history-length");
1912 DEFSYM (Qcurrent_input_method, "current-input-method");
1913 DEFSYM (Qactivate_input_method, "activate-input-method");
1914 DEFSYM (Qcase_fold_search, "case-fold-search");
1915 DEFSYM (Qmetadata, "metadata");
1916 /* A frame parameter. */
1917 DEFSYM (Qminibuffer_exit, "minibuffer-exit");
1919 DEFVAR_LISP ("read-expression-history", Vread_expression_history,
1920 doc: /* A history list for arguments that are Lisp expressions to evaluate.
1921 For example, `eval-expression' uses this. */);
1922 Vread_expression_history = Qnil;
1924 DEFVAR_LISP ("read-buffer-function", Vread_buffer_function,
1925 doc: /* If this is non-nil, `read-buffer' does its work by calling this function.
1926 The function is called with the arguments passed to `read-buffer'. */);
1927 Vread_buffer_function = Qnil;
1929 DEFVAR_BOOL ("read-buffer-completion-ignore-case",
1930 read_buffer_completion_ignore_case,
1931 doc: /* Non-nil means completion ignores case when reading a buffer name. */);
1932 read_buffer_completion_ignore_case = 0;
1934 DEFVAR_LISP ("minibuffer-setup-hook", Vminibuffer_setup_hook,
1935 doc: /* Normal hook run just after entry to minibuffer. */);
1936 Vminibuffer_setup_hook = Qnil;
1938 DEFVAR_LISP ("minibuffer-exit-hook", Vminibuffer_exit_hook,
1939 doc: /* Normal hook run just after exit from minibuffer. */);
1940 Vminibuffer_exit_hook = Qnil;
1942 DEFVAR_LISP ("history-length", Vhistory_length,
1943 doc: /* Maximum length of history lists before truncation takes place.
1944 A number means truncate to that length; truncation deletes old
1945 elements, and is done just after inserting a new element.
1946 A value of t means no truncation.
1948 This variable only affects history lists that don't specify their own
1949 maximum lengths. Setting the `history-length' property of a history
1950 variable overrides this default. */);
1951 XSETFASTINT (Vhistory_length, 100);
1953 DEFVAR_BOOL ("history-delete-duplicates", history_delete_duplicates,
1954 doc: /* Non-nil means to delete duplicates in history.
1955 If set to t when adding a new history element, all previous identical
1956 elements are deleted from the history list. */);
1957 history_delete_duplicates = 0;
1959 DEFVAR_LISP ("history-add-new-input", Vhistory_add_new_input,
1960 doc: /* Non-nil means to add new elements in history.
1961 If set to nil, minibuffer reading functions don't add new elements to the
1962 history list, so it is possible to do this afterwards by calling
1963 `add-to-history' explicitly. */);
1964 Vhistory_add_new_input = Qt;
1966 DEFVAR_BOOL ("completion-ignore-case", completion_ignore_case,
1967 doc: /* Non-nil means don't consider case significant in completion.
1968 For file-name completion, `read-file-name-completion-ignore-case'
1969 controls the behavior, rather than this variable.
1970 For buffer name completion, `read-buffer-completion-ignore-case'
1971 controls the behavior, rather than this variable. */);
1972 completion_ignore_case = 0;
1974 DEFVAR_BOOL ("enable-recursive-minibuffers", enable_recursive_minibuffers,
1975 doc: /* Non-nil means to allow minibuffer commands while in the minibuffer.
1976 This variable makes a difference whenever the minibuffer window is active.
1977 Also see `minibuffer-depth-indicate-mode', which may be handy if this
1978 variable is non-nil. */);
1979 enable_recursive_minibuffers = 0;
1981 DEFVAR_LISP ("minibuffer-completion-table", Vminibuffer_completion_table,
1982 doc: /* Alist or obarray used for completion in the minibuffer.
1983 This becomes the ALIST argument to `try-completion' and `all-completions'.
1984 The value can also be a list of strings or a hash table.
1986 The value may alternatively be a function, which is given three arguments:
1987 STRING, the current buffer contents;
1988 PREDICATE, the predicate for filtering possible matches;
1989 CODE, which says what kind of things to do.
1990 CODE can be nil, t or `lambda':
1991 nil -- return the best completion of STRING, or nil if there is none.
1992 t -- return a list of all possible completions of STRING.
1993 lambda -- return t if STRING is a valid completion as it stands. */);
1994 Vminibuffer_completion_table = Qnil;
1996 DEFVAR_LISP ("minibuffer-completion-predicate", Vminibuffer_completion_predicate,
1997 doc: /* Within call to `completing-read', this holds the PREDICATE argument. */);
1998 Vminibuffer_completion_predicate = Qnil;
2000 DEFVAR_LISP ("minibuffer-completion-confirm", Vminibuffer_completion_confirm,
2001 doc: /* Whether to demand confirmation of completion before exiting minibuffer.
2002 If nil, confirmation is not required.
2003 If the value is `confirm', the user may exit with an input that is not
2004 a valid completion alternative, but Emacs asks for confirmation.
2005 If the value is `confirm-after-completion', the user may exit with an
2006 input that is not a valid completion alternative, but Emacs asks for
2007 confirmation if the user submitted the input right after any of the
2008 completion commands listed in `minibuffer-confirm-exit-commands'. */);
2009 Vminibuffer_completion_confirm = Qnil;
2011 DEFVAR_LISP ("minibuffer-completing-file-name",
2012 Vminibuffer_completing_file_name,
2013 doc: /* Non-nil means completing file names. */);
2014 Vminibuffer_completing_file_name = Qnil;
2016 DEFVAR_LISP ("minibuffer-help-form", Vminibuffer_help_form,
2017 doc: /* Value that `help-form' takes on inside the minibuffer. */);
2018 Vminibuffer_help_form = Qnil;
2020 DEFVAR_LISP ("minibuffer-history-variable", Vminibuffer_history_variable,
2021 doc: /* History list symbol to add minibuffer values to.
2022 Each string of minibuffer input, as it appears on exit from the minibuffer,
2023 is added with
2024 (set minibuffer-history-variable
2025 (cons STRING (symbol-value minibuffer-history-variable))) */);
2026 XSETFASTINT (Vminibuffer_history_variable, 0);
2028 DEFVAR_LISP ("minibuffer-history-position", Vminibuffer_history_position,
2029 doc: /* Current position of redoing in the history list. */);
2030 Vminibuffer_history_position = Qnil;
2032 DEFVAR_BOOL ("minibuffer-auto-raise", minibuffer_auto_raise,
2033 doc: /* Non-nil means entering the minibuffer raises the minibuffer's frame.
2034 Some uses of the echo area also raise that frame (since they use it too). */);
2035 minibuffer_auto_raise = 0;
2037 DEFVAR_LISP ("completion-regexp-list", Vcompletion_regexp_list,
2038 doc: /* List of regexps that should restrict possible completions.
2039 The basic completion functions only consider a completion acceptable
2040 if it matches all regular expressions in this list, with
2041 `case-fold-search' bound to the value of `completion-ignore-case'.
2042 See Info node `(elisp)Basic Completion', for a description of these
2043 functions. */);
2044 Vcompletion_regexp_list = Qnil;
2046 DEFVAR_BOOL ("minibuffer-allow-text-properties",
2047 minibuffer_allow_text_properties,
2048 doc: /* Non-nil means `read-from-minibuffer' should not discard text properties.
2049 This also affects `read-string', but it does not affect `read-minibuffer',
2050 `read-no-blanks-input', or any of the functions that do minibuffer input
2051 with completion; they always discard text properties. */);
2052 minibuffer_allow_text_properties = 0;
2054 DEFVAR_LISP ("minibuffer-prompt-properties", Vminibuffer_prompt_properties,
2055 doc: /* Text properties that are added to minibuffer prompts.
2056 These are in addition to the basic `field' property, and stickiness
2057 properties. */);
2058 Vminibuffer_prompt_properties = list2 (Qread_only, Qt);
2060 DEFVAR_LISP ("read-hide-char", Vread_hide_char,
2061 doc: /* Whether to hide input characters in noninteractive mode.
2062 It must be a character, which will be used to mask the input
2063 characters. This variable should never be set globally. */);
2064 Vread_hide_char = Qnil;
2066 defsubr (&Sactive_minibuffer_window);
2067 defsubr (&Sset_minibuffer_window);
2068 defsubr (&Sread_from_minibuffer);
2069 defsubr (&Sread_string);
2070 defsubr (&Sread_command);
2071 defsubr (&Sread_variable);
2072 defsubr (&Sinternal_complete_buffer);
2073 defsubr (&Sread_buffer);
2074 defsubr (&Sread_no_blanks_input);
2075 defsubr (&Sminibuffer_depth);
2076 defsubr (&Sminibuffer_prompt);
2078 defsubr (&Sminibufferp);
2079 defsubr (&Sminibuffer_prompt_end);
2080 defsubr (&Sminibuffer_contents);
2081 defsubr (&Sminibuffer_contents_no_properties);
2083 defsubr (&Stry_completion);
2084 defsubr (&Sall_completions);
2085 defsubr (&Stest_completion);
2086 defsubr (&Sassoc_string);
2087 defsubr (&Scompleting_read);