* lisp/calendar/diary-lib.el (diary-remind): Fix bug#30455.
[emacs.git] / src / minibuf.c
blob95e62ceddab9539d200906991f496e33ffa42eb0
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 Fmake_local_variable (Qprint_escape_newlines);
599 print_escape_newlines = 1;
601 /* Erase the buffer. */
603 ptrdiff_t count1 = SPECPDL_INDEX ();
604 specbind (Qinhibit_read_only, Qt);
605 specbind (Qinhibit_modification_hooks, Qt);
606 Ferase_buffer ();
608 if (!NILP (BVAR (current_buffer, enable_multibyte_characters))
609 && ! STRING_MULTIBYTE (minibuf_prompt))
610 minibuf_prompt = Fstring_make_multibyte (minibuf_prompt);
612 /* Insert the prompt, record where it ends. */
613 Finsert (1, &minibuf_prompt);
614 if (PT > BEG)
616 Fput_text_property (make_number (BEG), make_number (PT),
617 Qfront_sticky, Qt, Qnil);
618 Fput_text_property (make_number (BEG), make_number (PT),
619 Qrear_nonsticky, Qt, Qnil);
620 Fput_text_property (make_number (BEG), make_number (PT),
621 Qfield, Qt, Qnil);
622 if (CONSP (Vminibuffer_prompt_properties))
624 /* We want to apply all properties from
625 `minibuffer-prompt-properties' to the region normally,
626 but if the `face' property is present, add that
627 property to the end of the face properties to avoid
628 overwriting faces. */
629 Lisp_Object list = Vminibuffer_prompt_properties;
630 while (CONSP (list))
632 Lisp_Object key = XCAR (list);
633 list = XCDR (list);
634 if (CONSP (list))
636 Lisp_Object val = XCAR (list);
637 list = XCDR (list);
638 if (EQ (key, Qface))
639 Fadd_face_text_property (make_number (BEG),
640 make_number (PT), val, Qt, Qnil);
641 else
642 Fput_text_property (make_number (BEG), make_number (PT),
643 key, val, Qnil);
648 unbind_to (count1, Qnil);
651 minibuf_prompt_width = current_column ();
653 /* Put in the initial input. */
654 if (!NILP (initial))
656 Finsert (1, &initial);
657 Fforward_char (make_number (pos));
660 clear_message (1, 1);
661 bset_keymap (current_buffer, map);
663 /* Turn on an input method stored in INPUT_METHOD if any. */
664 if (STRINGP (input_method) && !NILP (Ffboundp (Qactivate_input_method)))
665 call1 (Qactivate_input_method, input_method);
667 run_hook (Qminibuffer_setup_hook);
669 /* Don't allow the user to undo past this point. */
670 bset_undo_list (current_buffer, Qnil);
672 recursive_edit_1 ();
674 /* If cursor is on the minibuffer line,
675 show the user we have exited by putting it in column 0. */
676 if (XWINDOW (minibuf_window)->cursor.vpos >= 0
677 && !noninteractive)
679 XWINDOW (minibuf_window)->cursor.hpos = 0;
680 XWINDOW (minibuf_window)->cursor.x = 0;
681 XWINDOW (minibuf_window)->must_be_updated_p = true;
682 update_frame (XFRAME (selected_frame), true, true);
683 flush_frame (XFRAME (XWINDOW (minibuf_window)->frame));
686 /* Make minibuffer contents into a string. */
687 Fset_buffer (minibuffer);
688 if (allow_props)
689 val = Fminibuffer_contents ();
690 else
691 val = Fminibuffer_contents_no_properties ();
693 /* VAL is the string of minibuffer text. */
695 last_minibuf_string = val;
697 /* Choose the string to add to the history. */
698 if (SCHARS (val) != 0)
699 histstring = val;
700 else if (STRINGP (defalt))
701 histstring = defalt;
702 else if (CONSP (defalt) && STRINGP (XCAR (defalt)))
703 histstring = XCAR (defalt);
704 else
705 histstring = Qnil;
707 /* Add the value to the appropriate history list, if any. */
708 if (!NILP (Vhistory_add_new_input)
709 && SYMBOLP (Vminibuffer_history_variable)
710 && !NILP (histstring))
712 /* If the caller wanted to save the value read on a history list,
713 then do so if the value is not already the front of the list. */
715 /* The value of the history variable must be a cons or nil. Other
716 values are unacceptable. We silently ignore these values. */
718 if (NILP (histval)
719 || (CONSP (histval)
720 /* Don't duplicate the most recent entry in the history. */
721 && (NILP (Fequal (histstring, Fcar (histval))))))
723 Lisp_Object length;
725 if (history_delete_duplicates) Fdelete (histstring, histval);
726 histval = Fcons (histstring, histval);
727 Fset (Vminibuffer_history_variable, histval);
729 /* Truncate if requested. */
730 length = Fget (Vminibuffer_history_variable, Qhistory_length);
731 if (NILP (length)) length = Vhistory_length;
732 if (INTEGERP (length))
734 if (XINT (length) <= 0)
735 Fset (Vminibuffer_history_variable, Qnil);
736 else
738 Lisp_Object temp;
740 temp = Fnthcdr (Fsub1 (length), histval);
741 if (CONSP (temp)) Fsetcdr (temp, Qnil);
747 /* If Lisp form desired instead of string, parse it. */
748 if (expflag)
749 val = string_to_object (val, defalt);
751 /* The appropriate frame will get selected
752 in set-window-configuration. */
753 return unbind_to (count, val);
756 /* Return a buffer to be used as the minibuffer at depth `depth'.
757 depth = 0 is the lowest allowed argument, and that is the value
758 used for nonrecursive minibuffer invocations. */
760 Lisp_Object
761 get_minibuffer (EMACS_INT depth)
763 Lisp_Object tail = Fnthcdr (make_number (depth), Vminibuffer_list);
764 if (NILP (tail))
766 tail = list1 (Qnil);
767 Vminibuffer_list = nconc2 (Vminibuffer_list, tail);
769 Lisp_Object buf = Fcar (tail);
770 if (NILP (buf) || !BUFFER_LIVE_P (XBUFFER (buf)))
772 static char const name_fmt[] = " *Minibuf-%"pI"d*";
773 char name[sizeof name_fmt + INT_STRLEN_BOUND (EMACS_INT)];
774 AUTO_STRING_WITH_LEN (lname, name, sprintf (name, name_fmt, depth));
775 buf = Fget_buffer_create (lname);
777 /* Although the buffer's name starts with a space, undo should be
778 enabled in it. */
779 Fbuffer_enable_undo (buf);
781 XSETCAR (tail, buf);
783 else
785 ptrdiff_t count = SPECPDL_INDEX ();
786 /* We have to empty both overlay lists. Otherwise we end
787 up with overlays that think they belong to this buffer
788 while the buffer doesn't know about them any more. */
789 delete_all_overlays (XBUFFER (buf));
790 reset_buffer (XBUFFER (buf));
791 record_unwind_current_buffer ();
792 Fset_buffer (buf);
793 if (!NILP (Ffboundp (intern ("minibuffer-inactive-mode"))))
794 call0 (intern ("minibuffer-inactive-mode"));
795 else
796 Fkill_all_local_variables ();
797 unbind_to (count, Qnil);
800 return buf;
803 static void
804 run_exit_minibuf_hook (void)
806 safe_run_hooks (Qminibuffer_exit_hook);
809 /* This function is called on exiting minibuffer, whether normally or
810 not, and it restores the current window, buffer, etc. */
812 static void
813 read_minibuf_unwind (void)
815 Lisp_Object old_deactivate_mark;
816 Lisp_Object window;
818 /* If this was a recursive minibuffer,
819 tie the minibuffer window back to the outer level minibuffer buffer. */
820 minibuf_level--;
822 window = minibuf_window;
823 /* To keep things predictable, in case it matters, let's be in the
824 minibuffer when we reset the relevant variables. */
825 Fset_buffer (XWINDOW (window)->contents);
827 /* Restore prompt, etc, from outer minibuffer level. */
828 Lisp_Object key_vec = Fcar (minibuf_save_list);
829 eassert (VECTORP (key_vec));
830 this_command_key_count = XFASTINT (Flength (key_vec));
831 this_command_keys = key_vec;
832 minibuf_save_list = Fcdr (minibuf_save_list);
833 minibuf_prompt = Fcar (minibuf_save_list);
834 minibuf_save_list = Fcdr (minibuf_save_list);
835 minibuf_prompt_width = XFASTINT (Fcar (minibuf_save_list));
836 minibuf_save_list = Fcdr (minibuf_save_list);
837 Vhelp_form = Fcar (minibuf_save_list);
838 minibuf_save_list = Fcdr (minibuf_save_list);
839 Vcurrent_prefix_arg = Fcar (minibuf_save_list);
840 minibuf_save_list = Fcdr (minibuf_save_list);
841 Vminibuffer_history_position = Fcar (minibuf_save_list);
842 minibuf_save_list = Fcdr (minibuf_save_list);
843 Vminibuffer_history_variable = Fcar (minibuf_save_list);
844 minibuf_save_list = Fcdr (minibuf_save_list);
845 Voverriding_local_map = Fcar (minibuf_save_list);
846 minibuf_save_list = Fcdr (minibuf_save_list);
847 #if 0
848 temp = Fcar (minibuf_save_list);
849 if (FRAME_LIVE_P (XFRAME (WINDOW_FRAME (XWINDOW (temp)))))
850 minibuf_window = temp;
851 #endif
852 minibuf_save_list = Fcdr (minibuf_save_list);
854 /* Erase the minibuffer we were using at this level. */
856 ptrdiff_t count = SPECPDL_INDEX ();
857 /* Prevent error in erase-buffer. */
858 specbind (Qinhibit_read_only, Qt);
859 specbind (Qinhibit_modification_hooks, Qt);
860 old_deactivate_mark = Vdeactivate_mark;
861 Ferase_buffer ();
862 Vdeactivate_mark = old_deactivate_mark;
863 unbind_to (count, Qnil);
866 /* When we get to the outmost level, make sure we resize the
867 mini-window back to its normal size. */
868 if (minibuf_level == 0)
869 resize_mini_window (XWINDOW (window), 0);
871 /* Deal with frames that should be removed when exiting the
872 minibuffer. */
874 Lisp_Object frames, frame1, val;
875 struct frame *f1;
877 FOR_EACH_FRAME (frames, frame1)
879 f1 = XFRAME (frame1);
881 if ((FRAME_PARENT_FRAME (f1)
882 || !NILP (get_frame_param (f1, Qdelete_before)))
883 && !NILP (val = (get_frame_param (f1, Qminibuffer_exit))))
885 if (EQ (val, Qiconify_frame))
886 Ficonify_frame (frame1);
887 else if (EQ (val, Qdelete_frame))
888 Fdelete_frame (frame1, Qnil);
889 else
890 Fmake_frame_invisible (frame1, Qnil);
895 /* In case the previous minibuffer displayed in this miniwindow is
896 dead, we may keep displaying this buffer (tho it's inactive), so reset it,
897 to make sure we don't leave around bindings and stuff which only
898 made sense during the read_minibuf invocation. */
899 call0 (intern ("minibuffer-inactive-mode"));
903 DEFUN ("read-from-minibuffer", Fread_from_minibuffer,
904 Sread_from_minibuffer, 1, 7, 0,
905 doc: /* Read a string from the minibuffer, prompting with string PROMPT.
906 The optional second arg INITIAL-CONTENTS is an obsolete alternative to
907 DEFAULT-VALUE. It normally should be nil in new code, except when
908 HIST is a cons. It is discussed in more detail below.
910 Third arg KEYMAP is a keymap to use whilst reading;
911 if omitted or nil, the default is `minibuffer-local-map'.
913 If fourth arg READ is non-nil, interpret the result as a Lisp object
914 and return that object:
915 in other words, do `(car (read-from-string INPUT-STRING))'
917 Fifth arg HIST, if non-nil, specifies a history list and optionally
918 the initial position in the list. It can be a symbol, which is the
919 history list variable to use, or a cons cell (HISTVAR . HISTPOS).
920 In that case, HISTVAR is the history list variable to use, and
921 HISTPOS is the initial position for use by the minibuffer history
922 commands. For consistency, you should also specify that element of
923 the history as the value of INITIAL-CONTENTS. Positions are counted
924 starting from 1 at the beginning of the list.
926 Sixth arg DEFAULT-VALUE, if non-nil, should be a string, which is used
927 as the default to `read' if READ is non-nil and the user enters
928 empty input. But if READ is nil, this function does _not_ return
929 DEFAULT-VALUE for empty input! Instead, it returns the empty string.
931 Whatever the value of READ, DEFAULT-VALUE is made available via the
932 minibuffer history commands. DEFAULT-VALUE can also be a list of
933 strings, in which case all the strings are available in the history,
934 and the first string is the default to `read' if READ is non-nil.
936 Seventh arg INHERIT-INPUT-METHOD, if non-nil, means the minibuffer inherits
937 the current input method and the setting of `enable-multibyte-characters'.
939 If the variable `minibuffer-allow-text-properties' is non-nil,
940 then the string which is returned includes whatever text properties
941 were present in the minibuffer. Otherwise the value has no text properties.
943 The remainder of this documentation string describes the
944 INITIAL-CONTENTS argument in more detail. It is only relevant when
945 studying existing code, or when HIST is a cons. If non-nil,
946 INITIAL-CONTENTS is a string to be inserted into the minibuffer before
947 reading input. Normally, point is put at the end of that string.
948 However, if INITIAL-CONTENTS is (STRING . POSITION), the initial
949 input is STRING, but point is placed at _one-indexed_ position
950 POSITION in the minibuffer. Any integer value less than or equal to
951 one puts point at the beginning of the string. *Note* that this
952 behavior differs from the way such arguments are used in `completing-read'
953 and some related functions, which use zero-indexing for POSITION. */)
954 (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)
956 Lisp_Object histvar, histpos, val;
958 CHECK_STRING (prompt);
959 if (NILP (keymap))
960 keymap = Vminibuffer_local_map;
961 else
962 keymap = get_keymap (keymap, 1, 0);
964 if (SYMBOLP (hist))
966 histvar = hist;
967 histpos = Qnil;
969 else
971 histvar = Fcar_safe (hist);
972 histpos = Fcdr_safe (hist);
974 if (NILP (histvar))
975 histvar = Qminibuffer_history;
976 if (NILP (histpos))
977 XSETFASTINT (histpos, 0);
979 val = read_minibuf (keymap, initial_contents, prompt,
980 !NILP (read),
981 histvar, histpos, default_value,
982 minibuffer_allow_text_properties,
983 !NILP (inherit_input_method));
984 return val;
987 /* Functions that use the minibuffer to read various things. */
989 DEFUN ("read-string", Fread_string, Sread_string, 1, 5, 0,
990 doc: /* Read a string from the minibuffer, prompting with string PROMPT.
991 If non-nil, second arg INITIAL-INPUT is a string to insert before reading.
992 This argument has been superseded by DEFAULT-VALUE and should normally be nil
993 in new code. It behaves as INITIAL-CONTENTS in `read-from-minibuffer' (which
994 see).
995 The third arg HISTORY, if non-nil, specifies a history list
996 and optionally the initial position in the list.
997 See `read-from-minibuffer' for details of HISTORY argument.
998 Fourth arg DEFAULT-VALUE is the default value or the list of default values.
999 If non-nil, it is used for history commands, and as the value (or the first
1000 element of the list of default values) to return if the user enters the
1001 empty string.
1002 Fifth arg INHERIT-INPUT-METHOD, if non-nil, means the minibuffer inherits
1003 the current input method and the setting of `enable-multibyte-characters'. */)
1004 (Lisp_Object prompt, Lisp_Object initial_input, Lisp_Object history, Lisp_Object default_value, Lisp_Object inherit_input_method)
1006 Lisp_Object val;
1007 ptrdiff_t count = SPECPDL_INDEX ();
1009 /* Just in case we're in a recursive minibuffer, make it clear that the
1010 previous minibuffer's completion table does not apply to the new
1011 minibuffer.
1012 FIXME: `minibuffer-completion-table' should be buffer-local instead. */
1013 specbind (Qminibuffer_completion_table, Qnil);
1015 val = Fread_from_minibuffer (prompt, initial_input, Qnil,
1016 Qnil, history, default_value,
1017 inherit_input_method);
1018 if (STRINGP (val) && SCHARS (val) == 0 && ! NILP (default_value))
1019 val = CONSP (default_value) ? XCAR (default_value) : default_value;
1020 return unbind_to (count, val);
1023 DEFUN ("read-no-blanks-input", Fread_no_blanks_input, Sread_no_blanks_input, 1, 3, 0,
1024 doc: /* Read a string from the terminal, not allowing blanks.
1025 Prompt with PROMPT. Whitespace terminates the input. If INITIAL is
1026 non-nil, it should be a string, which is used as initial input, with
1027 point positioned at the end, so that SPACE will accept the input.
1028 \(Actually, INITIAL can also be a cons of a string and an integer.
1029 Such values are treated as in `read-from-minibuffer', but are normally
1030 not useful in this function.)
1031 Third arg INHERIT-INPUT-METHOD, if non-nil, means the minibuffer inherits
1032 the current input method and the setting of`enable-multibyte-characters'. */)
1033 (Lisp_Object prompt, Lisp_Object initial, Lisp_Object inherit_input_method)
1035 CHECK_STRING (prompt);
1036 return read_minibuf (Vminibuffer_local_ns_map, initial, prompt,
1037 0, Qminibuffer_history, make_number (0), Qnil, 0,
1038 !NILP (inherit_input_method));
1041 DEFUN ("read-command", Fread_command, Sread_command, 1, 2, 0,
1042 doc: /* Read the name of a command and return as a symbol.
1043 Prompt with PROMPT. By default, return DEFAULT-VALUE or its first element
1044 if it is a list. */)
1045 (Lisp_Object prompt, Lisp_Object default_value)
1047 Lisp_Object name, default_string;
1049 if (NILP (default_value))
1050 default_string = Qnil;
1051 else if (SYMBOLP (default_value))
1052 default_string = SYMBOL_NAME (default_value);
1053 else
1054 default_string = default_value;
1056 name = Fcompleting_read (prompt, Vobarray, Qcommandp, Qt,
1057 Qnil, Qnil, default_string, Qnil);
1058 if (NILP (name))
1059 return name;
1060 return Fintern (name, Qnil);
1063 #ifdef NOTDEF
1064 DEFUN ("read-function", Fread_function, Sread_function, 1, 1, 0,
1065 doc: /* One arg PROMPT, a string. Read the name of a function and return as a symbol.
1066 Prompt with PROMPT. */)
1067 (Lisp_Object prompt)
1069 return Fintern (Fcompleting_read (prompt, Vobarray, Qfboundp, Qt, Qnil, Qnil, Qnil, Qnil),
1070 Qnil);
1072 #endif /* NOTDEF */
1074 DEFUN ("read-variable", Fread_variable, Sread_variable, 1, 2, 0,
1075 doc: /* Read the name of a user option and return it as a symbol.
1076 Prompt with PROMPT. By default, return DEFAULT-VALUE or its first element
1077 if it is a list.
1078 A user option, or customizable variable, is one for which
1079 `custom-variable-p' returns non-nil. */)
1080 (Lisp_Object prompt, Lisp_Object default_value)
1082 Lisp_Object name, default_string;
1084 if (NILP (default_value))
1085 default_string = Qnil;
1086 else if (SYMBOLP (default_value))
1087 default_string = SYMBOL_NAME (default_value);
1088 else
1089 default_string = default_value;
1091 name = Fcompleting_read (prompt, Vobarray,
1092 Qcustom_variable_p, Qt,
1093 Qnil, Qnil, default_string, Qnil);
1094 if (NILP (name))
1095 return name;
1096 return Fintern (name, Qnil);
1099 DEFUN ("read-buffer", Fread_buffer, Sread_buffer, 1, 4, 0,
1100 doc: /* Read the name of a buffer and return as a string.
1101 Prompt with PROMPT.
1102 Optional second arg DEF is value to return if user enters an empty line.
1103 If DEF is a list of default values, return its first element.
1104 Optional third arg REQUIRE-MATCH determines whether non-existing
1105 buffer names are allowed. It has the same meaning as the
1106 REQUIRE-MATCH argument of `completing-read'.
1107 The argument PROMPT should be a string ending with a colon and a space.
1108 If `read-buffer-completion-ignore-case' is non-nil, completion ignores
1109 case while reading the buffer name.
1110 If `read-buffer-function' is non-nil, this works by calling it as a
1111 function, instead of the usual behavior.
1112 Optional arg PREDICATE if non-nil is a function limiting the buffers that can
1113 be considered. */)
1114 (Lisp_Object prompt, Lisp_Object def, Lisp_Object require_match,
1115 Lisp_Object predicate)
1117 Lisp_Object result;
1118 char *s;
1119 ptrdiff_t len;
1120 ptrdiff_t count = SPECPDL_INDEX ();
1122 if (BUFFERP (def))
1123 def = BVAR (XBUFFER (def), name);
1125 specbind (Qcompletion_ignore_case,
1126 read_buffer_completion_ignore_case ? Qt : Qnil);
1128 if (NILP (Vread_buffer_function))
1130 if (!NILP (def))
1132 /* A default value was provided: we must change PROMPT,
1133 editing the default value in before the colon. To achieve
1134 this, we replace PROMPT with a substring that doesn't
1135 contain the terminal space and colon (if present). They
1136 are then added back using Fformat. */
1138 if (STRINGP (prompt))
1140 s = SSDATA (prompt);
1141 len = SBYTES (prompt);
1142 if (len >= 2 && s[len - 2] == ':' && s[len - 1] == ' ')
1143 len = len - 2;
1144 else if (len >= 1 && (s[len - 1] == ':' || s[len - 1] == ' '))
1145 len--;
1147 prompt = make_specified_string (s, -1, len,
1148 STRING_MULTIBYTE (prompt));
1151 AUTO_STRING (format, "%s (default %s): ");
1152 prompt = CALLN (Fformat, format, prompt,
1153 CONSP (def) ? XCAR (def) : def);
1156 result = Fcompleting_read (prompt, intern ("internal-complete-buffer"),
1157 predicate, require_match, Qnil,
1158 Qbuffer_name_history, def, Qnil);
1160 else
1161 result = (NILP (predicate)
1162 /* Partial backward compatibility for older read_buffer_functions
1163 which don't expect a `predicate' argument. */
1164 ? call3 (Vread_buffer_function, prompt, def, require_match)
1165 : call4 (Vread_buffer_function, prompt, def, require_match,
1166 predicate));
1167 return unbind_to (count, result);
1170 static Lisp_Object
1171 minibuf_conform_representation (Lisp_Object string, Lisp_Object basis)
1173 if (STRING_MULTIBYTE (string) == STRING_MULTIBYTE (basis))
1174 return string;
1176 if (STRING_MULTIBYTE (string))
1177 return Fstring_make_unibyte (string);
1178 else
1179 return Fstring_make_multibyte (string);
1182 DEFUN ("try-completion", Ftry_completion, Stry_completion, 2, 3, 0,
1183 doc: /* Return common substring of all completions of STRING in COLLECTION.
1184 Test each possible completion specified by COLLECTION
1185 to see if it begins with STRING. The possible completions may be
1186 strings or symbols. Symbols are converted to strings before testing,
1187 see `symbol-name'.
1188 All that match STRING are compared together; the longest initial sequence
1189 common to all these matches is the return value.
1190 If there is no match at all, the return value is nil.
1191 For a unique match which is exact, the return value is t.
1193 If COLLECTION is an alist, the keys (cars of elements) are the
1194 possible completions. If an element is not a cons cell, then the
1195 element itself is the possible completion.
1196 If COLLECTION is a hash-table, all the keys that are strings or symbols
1197 are the possible completions.
1198 If COLLECTION is an obarray, the names of all symbols in the obarray
1199 are the possible completions.
1201 COLLECTION can also be a function to do the completion itself.
1202 It receives three arguments: the values STRING, PREDICATE and nil.
1203 Whatever it returns becomes the value of `try-completion'.
1205 If optional third argument PREDICATE is non-nil,
1206 it is used to test each possible match.
1207 The match is a candidate only if PREDICATE returns non-nil.
1208 The argument given to PREDICATE is the alist element
1209 or the symbol from the obarray. If COLLECTION is a hash-table,
1210 predicate is called with two arguments: the key and the value.
1211 Additionally to this predicate, `completion-regexp-list'
1212 is used to further constrain the set of candidates. */)
1213 (Lisp_Object string, Lisp_Object collection, Lisp_Object predicate)
1215 Lisp_Object bestmatch, tail, elt, eltstring;
1216 /* Size in bytes of BESTMATCH. */
1217 ptrdiff_t bestmatchsize = 0;
1218 /* These are in bytes, too. */
1219 ptrdiff_t compare, matchsize;
1220 enum { function_table, list_table, obarray_table, hash_table}
1221 type = (HASH_TABLE_P (collection) ? hash_table
1222 : VECTORP (collection) ? obarray_table
1223 : ((NILP (collection)
1224 || (CONSP (collection) && !FUNCTIONP (collection)))
1225 ? list_table : function_table));
1226 ptrdiff_t idx = 0, obsize = 0;
1227 int matchcount = 0;
1228 ptrdiff_t bindcount = -1;
1229 Lisp_Object bucket, zero, end, tem;
1231 CHECK_STRING (string);
1232 if (type == function_table)
1233 return call3 (collection, string, predicate, Qnil);
1235 bestmatch = bucket = Qnil;
1236 zero = make_number (0);
1238 /* If COLLECTION is not a list, set TAIL just for gc pro. */
1239 tail = collection;
1240 if (type == obarray_table)
1242 collection = check_obarray (collection);
1243 obsize = ASIZE (collection);
1244 bucket = AREF (collection, idx);
1247 while (1)
1249 /* Get the next element of the alist, obarray, or hash-table. */
1250 /* Exit the loop if the elements are all used up. */
1251 /* elt gets the alist element or symbol.
1252 eltstring gets the name to check as a completion. */
1254 if (type == list_table)
1256 if (!CONSP (tail))
1257 break;
1258 elt = XCAR (tail);
1259 eltstring = CONSP (elt) ? XCAR (elt) : elt;
1260 tail = XCDR (tail);
1262 else if (type == obarray_table)
1264 if (!EQ (bucket, zero))
1266 if (!SYMBOLP (bucket))
1267 error ("Bad data in guts of obarray");
1268 elt = bucket;
1269 eltstring = elt;
1270 if (XSYMBOL (bucket)->u.s.next)
1271 XSETSYMBOL (bucket, XSYMBOL (bucket)->u.s.next);
1272 else
1273 XSETFASTINT (bucket, 0);
1275 else if (++idx >= obsize)
1276 break;
1277 else
1279 bucket = AREF (collection, idx);
1280 continue;
1283 else /* if (type == hash_table) */
1285 while (idx < HASH_TABLE_SIZE (XHASH_TABLE (collection))
1286 && NILP (HASH_HASH (XHASH_TABLE (collection), idx)))
1287 idx++;
1288 if (idx >= HASH_TABLE_SIZE (XHASH_TABLE (collection)))
1289 break;
1290 else
1291 elt = eltstring = HASH_KEY (XHASH_TABLE (collection), idx++);
1294 /* Is this element a possible completion? */
1296 if (SYMBOLP (eltstring))
1297 eltstring = Fsymbol_name (eltstring);
1299 if (STRINGP (eltstring)
1300 && SCHARS (string) <= SCHARS (eltstring)
1301 && (tem = Fcompare_strings (eltstring, zero,
1302 make_number (SCHARS (string)),
1303 string, zero, Qnil,
1304 completion_ignore_case ? Qt : Qnil),
1305 EQ (Qt, tem)))
1307 /* Yes. */
1308 Lisp_Object regexps;
1310 /* Ignore this element if it fails to match all the regexps. */
1312 for (regexps = Vcompletion_regexp_list; CONSP (regexps);
1313 regexps = XCDR (regexps))
1315 if (bindcount < 0) {
1316 bindcount = SPECPDL_INDEX ();
1317 specbind (Qcase_fold_search,
1318 completion_ignore_case ? Qt : Qnil);
1320 tem = Fstring_match (XCAR (regexps), eltstring, zero);
1321 if (NILP (tem))
1322 break;
1324 if (CONSP (regexps))
1325 continue;
1328 /* Ignore this element if there is a predicate
1329 and the predicate doesn't like it. */
1331 if (!NILP (predicate))
1333 if (EQ (predicate, Qcommandp))
1334 tem = Fcommandp (elt, Qnil);
1335 else
1337 if (bindcount >= 0)
1339 unbind_to (bindcount, Qnil);
1340 bindcount = -1;
1342 tem = (type == hash_table
1343 ? call2 (predicate, elt,
1344 HASH_VALUE (XHASH_TABLE (collection),
1345 idx - 1))
1346 : call1 (predicate, elt));
1348 if (NILP (tem)) continue;
1351 /* Update computation of how much all possible completions match */
1353 if (NILP (bestmatch))
1355 matchcount = 1;
1356 bestmatch = eltstring;
1357 bestmatchsize = SCHARS (eltstring);
1359 else
1361 compare = min (bestmatchsize, SCHARS (eltstring));
1362 tem = Fcompare_strings (bestmatch, zero,
1363 make_number (compare),
1364 eltstring, zero,
1365 make_number (compare),
1366 completion_ignore_case ? Qt : Qnil);
1367 matchsize = EQ (tem, Qt) ? compare : eabs (XINT (tem)) - 1;
1369 if (completion_ignore_case)
1371 /* If this is an exact match except for case,
1372 use it as the best match rather than one that is not an
1373 exact match. This way, we get the case pattern
1374 of the actual match. */
1375 if ((matchsize == SCHARS (eltstring)
1376 && matchsize < SCHARS (bestmatch))
1378 /* If there is more than one exact match ignoring case,
1379 and one of them is exact including case,
1380 prefer that one. */
1381 /* If there is no exact match ignoring case,
1382 prefer a match that does not change the case
1383 of the input. */
1384 ((matchsize == SCHARS (eltstring))
1386 (matchsize == SCHARS (bestmatch))
1387 && (tem = Fcompare_strings (eltstring, zero,
1388 make_number (SCHARS (string)),
1389 string, zero,
1390 Qnil,
1391 Qnil),
1392 EQ (Qt, tem))
1393 && (tem = Fcompare_strings (bestmatch, zero,
1394 make_number (SCHARS (string)),
1395 string, zero,
1396 Qnil,
1397 Qnil),
1398 ! EQ (Qt, tem))))
1399 bestmatch = eltstring;
1401 if (bestmatchsize != SCHARS (eltstring)
1402 || bestmatchsize != matchsize)
1403 /* Don't count the same string multiple times. */
1404 matchcount += matchcount <= 1;
1405 bestmatchsize = matchsize;
1406 if (matchsize <= SCHARS (string)
1407 /* If completion-ignore-case is non-nil, don't
1408 short-circuit because we want to find the best
1409 possible match *including* case differences. */
1410 && !completion_ignore_case
1411 && matchcount > 1)
1412 /* No need to look any further. */
1413 break;
1418 if (bindcount >= 0) {
1419 unbind_to (bindcount, Qnil);
1420 bindcount = -1;
1423 if (NILP (bestmatch))
1424 return Qnil; /* No completions found. */
1425 /* If we are ignoring case, and there is no exact match,
1426 and no additional text was supplied,
1427 don't change the case of what the user typed. */
1428 if (completion_ignore_case && bestmatchsize == SCHARS (string)
1429 && SCHARS (bestmatch) > bestmatchsize)
1430 return minibuf_conform_representation (string, bestmatch);
1432 /* Return t if the supplied string is an exact match (counting case);
1433 it does not require any change to be made. */
1434 if (matchcount == 1 && !NILP (Fequal (bestmatch, string)))
1435 return Qt;
1437 XSETFASTINT (zero, 0); /* Else extract the part in which */
1438 XSETFASTINT (end, bestmatchsize); /* all completions agree. */
1439 return Fsubstring (bestmatch, zero, end);
1442 DEFUN ("all-completions", Fall_completions, Sall_completions, 2, 4, 0,
1443 doc: /* Search for partial matches to STRING in COLLECTION.
1444 Test each of the possible completions specified by COLLECTION
1445 to see if it begins with STRING. The possible completions may be
1446 strings or symbols. Symbols are converted to strings before testing,
1447 see `symbol-name'.
1448 The value is a list of all the possible completions that match STRING.
1450 If COLLECTION is an alist, the keys (cars of elements) are the
1451 possible completions. If an element is not a cons cell, then the
1452 element itself is the possible completion.
1453 If COLLECTION is a hash-table, all the keys that are strings or symbols
1454 are the possible completions.
1455 If COLLECTION is an obarray, the names of all symbols in the obarray
1456 are the possible completions.
1458 COLLECTION can also be a function to do the completion itself.
1459 It receives three arguments: the values STRING, PREDICATE and t.
1460 Whatever it returns becomes the value of `all-completions'.
1462 If optional third argument PREDICATE is non-nil,
1463 it is used to test each possible match.
1464 The match is a candidate only if PREDICATE returns non-nil.
1465 The argument given to PREDICATE is the alist element
1466 or the symbol from the obarray. If COLLECTION is a hash-table,
1467 predicate is called with two arguments: the key and the value.
1468 Additionally to this predicate, `completion-regexp-list'
1469 is used to further constrain the set of candidates.
1471 An obsolete optional fourth argument HIDE-SPACES is still accepted for
1472 backward compatibility. If non-nil, strings in COLLECTION that start
1473 with a space are ignored unless STRING itself starts with a space. */)
1474 (Lisp_Object string, Lisp_Object collection, Lisp_Object predicate, Lisp_Object hide_spaces)
1476 Lisp_Object tail, elt, eltstring;
1477 Lisp_Object allmatches;
1478 int type = HASH_TABLE_P (collection) ? 3
1479 : VECTORP (collection) ? 2
1480 : NILP (collection) || (CONSP (collection) && !FUNCTIONP (collection));
1481 ptrdiff_t idx = 0, obsize = 0;
1482 ptrdiff_t bindcount = -1;
1483 Lisp_Object bucket, tem, zero;
1485 CHECK_STRING (string);
1486 if (type == 0)
1487 return call3 (collection, string, predicate, Qt);
1488 allmatches = bucket = Qnil;
1489 zero = make_number (0);
1491 /* If COLLECTION is not a list, set TAIL just for gc pro. */
1492 tail = collection;
1493 if (type == 2)
1495 collection = check_obarray (collection);
1496 obsize = ASIZE (collection);
1497 bucket = AREF (collection, idx);
1500 while (1)
1502 /* Get the next element of the alist, obarray, or hash-table. */
1503 /* Exit the loop if the elements are all used up. */
1504 /* elt gets the alist element or symbol.
1505 eltstring gets the name to check as a completion. */
1507 if (type == 1)
1509 if (!CONSP (tail))
1510 break;
1511 elt = XCAR (tail);
1512 eltstring = CONSP (elt) ? XCAR (elt) : elt;
1513 tail = XCDR (tail);
1515 else if (type == 2)
1517 if (!EQ (bucket, zero))
1519 if (!SYMBOLP (bucket))
1520 error ("Bad data in guts of obarray");
1521 elt = bucket;
1522 eltstring = elt;
1523 if (XSYMBOL (bucket)->u.s.next)
1524 XSETSYMBOL (bucket, XSYMBOL (bucket)->u.s.next);
1525 else
1526 XSETFASTINT (bucket, 0);
1528 else if (++idx >= obsize)
1529 break;
1530 else
1532 bucket = AREF (collection, idx);
1533 continue;
1536 else /* if (type == 3) */
1538 while (idx < HASH_TABLE_SIZE (XHASH_TABLE (collection))
1539 && NILP (HASH_HASH (XHASH_TABLE (collection), idx)))
1540 idx++;
1541 if (idx >= HASH_TABLE_SIZE (XHASH_TABLE (collection)))
1542 break;
1543 else
1544 elt = eltstring = HASH_KEY (XHASH_TABLE (collection), idx++);
1547 /* Is this element a possible completion? */
1549 if (SYMBOLP (eltstring))
1550 eltstring = Fsymbol_name (eltstring);
1552 if (STRINGP (eltstring)
1553 && SCHARS (string) <= SCHARS (eltstring)
1554 /* If HIDE_SPACES, reject alternatives that start with space
1555 unless the input starts with space. */
1556 && (NILP (hide_spaces)
1557 || (SBYTES (string) > 0
1558 && SREF (string, 0) == ' ')
1559 || SREF (eltstring, 0) != ' ')
1560 && (tem = Fcompare_strings (eltstring, zero,
1561 make_number (SCHARS (string)),
1562 string, zero,
1563 make_number (SCHARS (string)),
1564 completion_ignore_case ? Qt : Qnil),
1565 EQ (Qt, tem)))
1567 /* Yes. */
1568 Lisp_Object regexps;
1570 /* Ignore this element if it fails to match all the regexps. */
1572 for (regexps = Vcompletion_regexp_list; CONSP (regexps);
1573 regexps = XCDR (regexps))
1575 if (bindcount < 0) {
1576 bindcount = SPECPDL_INDEX ();
1577 specbind (Qcase_fold_search,
1578 completion_ignore_case ? Qt : Qnil);
1580 tem = Fstring_match (XCAR (regexps), eltstring, zero);
1581 if (NILP (tem))
1582 break;
1584 if (CONSP (regexps))
1585 continue;
1588 /* Ignore this element if there is a predicate
1589 and the predicate doesn't like it. */
1591 if (!NILP (predicate))
1593 if (EQ (predicate, Qcommandp))
1594 tem = Fcommandp (elt, Qnil);
1595 else
1597 if (bindcount >= 0) {
1598 unbind_to (bindcount, Qnil);
1599 bindcount = -1;
1601 tem = type == 3
1602 ? call2 (predicate, elt,
1603 HASH_VALUE (XHASH_TABLE (collection), idx - 1))
1604 : call1 (predicate, elt);
1606 if (NILP (tem)) continue;
1608 /* Ok => put it on the list. */
1609 allmatches = Fcons (eltstring, allmatches);
1613 if (bindcount >= 0) {
1614 unbind_to (bindcount, Qnil);
1615 bindcount = -1;
1618 return Fnreverse (allmatches);
1621 DEFUN ("completing-read", Fcompleting_read, Scompleting_read, 2, 8, 0,
1622 doc: /* Read a string in the minibuffer, with completion.
1623 PROMPT is a string to prompt with; normally it ends in a colon and a space.
1624 COLLECTION can be a list of strings, an alist, an obarray or a hash table.
1625 COLLECTION can also be a function to do the completion itself.
1626 PREDICATE limits completion to a subset of COLLECTION.
1627 See `try-completion', `all-completions', `test-completion',
1628 and `completion-boundaries', for more details on completion,
1629 COLLECTION, and PREDICATE. See also Info nodes `(elisp)Basic Completion'
1630 for the details about completion, and `(elisp)Programmed Completion' for
1631 expectations from COLLECTION when it's a function.
1633 REQUIRE-MATCH can take the following values:
1634 - t means that the user is not allowed to exit unless
1635 the input is (or completes to) an element of COLLECTION or is null.
1636 - nil means that the user can exit with any input.
1637 - `confirm' means that the user can exit with any input, but she needs
1638 to confirm her choice if the input is not an element of COLLECTION.
1639 - `confirm-after-completion' means that the user can exit with any
1640 input, but she needs to confirm her choice if she called
1641 `minibuffer-complete' right before `minibuffer-complete-and-exit'
1642 and the input is not an element of COLLECTION.
1643 - anything else behaves like t except that typing RET does not exit if it
1644 does non-null completion.
1646 If the input is null, `completing-read' returns DEF, or the first element
1647 of the list of default values, or an empty string if DEF is nil,
1648 regardless of the value of REQUIRE-MATCH.
1650 If INITIAL-INPUT is non-nil, insert it in the minibuffer initially,
1651 with point positioned at the end.
1652 If it is (STRING . POSITION), the initial input is STRING, but point
1653 is placed at _zero-indexed_ position POSITION in STRING. (*Note*
1654 that this is different from `read-from-minibuffer' and related
1655 functions, which use one-indexing for POSITION.) This feature is
1656 deprecated--it is best to pass nil for INITIAL-INPUT and supply the
1657 default value DEF instead. The user can yank the default value into
1658 the minibuffer easily using \\<minibuffer-local-map>\\[next-history-element].
1660 HIST, if non-nil, specifies a history list and optionally the initial
1661 position in the list. It can be a symbol, which is the history list
1662 variable to use, or it can be a cons cell (HISTVAR . HISTPOS). In
1663 that case, HISTVAR is the history list variable to use, and HISTPOS
1664 is the initial position (the position in the list used by the
1665 minibuffer history commands). For consistency, you should also
1666 specify that element of the history as the value of
1667 INITIAL-INPUT. (This is the only case in which you should use
1668 INITIAL-INPUT instead of DEF.) Positions are counted starting from
1669 1 at the beginning of the list. The variable `history-length'
1670 controls the maximum length of a history list.
1672 DEF, if non-nil, is the default value or the list of default values.
1674 If INHERIT-INPUT-METHOD is non-nil, the minibuffer inherits
1675 the current input method and the setting of `enable-multibyte-characters'.
1677 Completion ignores case if the ambient value of
1678 `completion-ignore-case' is non-nil.
1680 See also `completing-read-function'. */)
1681 (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)
1683 return CALLN (Ffuncall,
1684 Fsymbol_value (intern ("completing-read-function")),
1685 prompt, collection, predicate, require_match, initial_input,
1686 hist, def, inherit_input_method);
1689 /* Test whether TXT is an exact completion. */
1690 DEFUN ("test-completion", Ftest_completion, Stest_completion, 2, 3, 0,
1691 doc: /* Return non-nil if STRING is a valid completion.
1692 Takes the same arguments as `all-completions' and `try-completion'.
1693 If COLLECTION is a function, it is called with three arguments:
1694 the values STRING, PREDICATE and `lambda'. */)
1695 (Lisp_Object string, Lisp_Object collection, Lisp_Object predicate)
1697 Lisp_Object regexps, tail, tem = Qnil;
1698 ptrdiff_t i = 0;
1700 CHECK_STRING (string);
1702 if (NILP (collection) || (CONSP (collection) && !FUNCTIONP (collection)))
1704 tem = Fassoc_string (string, collection, completion_ignore_case ? Qt : Qnil);
1705 if (NILP (tem))
1706 return Qnil;
1708 else if (VECTORP (collection))
1710 /* Bypass intern-soft as that loses for nil. */
1711 tem = oblookup (collection,
1712 SSDATA (string),
1713 SCHARS (string),
1714 SBYTES (string));
1715 if (!SYMBOLP (tem))
1717 if (STRING_MULTIBYTE (string))
1718 string = Fstring_make_unibyte (string);
1719 else
1720 string = Fstring_make_multibyte (string);
1722 tem = oblookup (collection,
1723 SSDATA (string),
1724 SCHARS (string),
1725 SBYTES (string));
1728 if (completion_ignore_case && !SYMBOLP (tem))
1730 for (i = ASIZE (collection) - 1; i >= 0; i--)
1732 tail = AREF (collection, i);
1733 if (SYMBOLP (tail))
1734 while (1)
1736 if (EQ (Fcompare_strings (string, make_number (0), Qnil,
1737 Fsymbol_name (tail),
1738 make_number (0) , Qnil, Qt),
1739 Qt))
1741 tem = tail;
1742 break;
1744 if (XSYMBOL (tail)->u.s.next == 0)
1745 break;
1746 XSETSYMBOL (tail, XSYMBOL (tail)->u.s.next);
1751 if (!SYMBOLP (tem))
1752 return Qnil;
1754 else if (HASH_TABLE_P (collection))
1756 struct Lisp_Hash_Table *h = XHASH_TABLE (collection);
1757 i = hash_lookup (h, string, NULL);
1758 if (i >= 0)
1760 tem = HASH_KEY (h, i);
1761 goto found_matching_key;
1763 else
1764 for (i = 0; i < HASH_TABLE_SIZE (h); ++i)
1766 if (NILP (HASH_HASH (h, i))) continue;
1767 tem = HASH_KEY (h, i);
1768 Lisp_Object strkey = (SYMBOLP (tem) ? Fsymbol_name (tem) : tem);
1769 if (!STRINGP (strkey)) continue;
1770 if (EQ (Fcompare_strings (string, Qnil, Qnil,
1771 strkey, Qnil, Qnil,
1772 completion_ignore_case ? Qt : Qnil),
1773 Qt))
1774 goto found_matching_key;
1776 return Qnil;
1777 found_matching_key: ;
1779 else
1780 return call3 (collection, string, predicate, Qlambda);
1782 /* Reject this element if it fails to match all the regexps. */
1783 if (CONSP (Vcompletion_regexp_list))
1785 ptrdiff_t count = SPECPDL_INDEX ();
1786 specbind (Qcase_fold_search, completion_ignore_case ? Qt : Qnil);
1787 for (regexps = Vcompletion_regexp_list; CONSP (regexps);
1788 regexps = XCDR (regexps))
1790 /* We can test against STRING, because if we got here, then
1791 the element is equivalent to it. */
1792 if (NILP (Fstring_match (XCAR (regexps), string, Qnil)))
1793 return unbind_to (count, Qnil);
1795 unbind_to (count, Qnil);
1798 /* Finally, check the predicate. */
1799 if (!NILP (predicate))
1801 return HASH_TABLE_P (collection)
1802 ? call2 (predicate, tem, HASH_VALUE (XHASH_TABLE (collection), i))
1803 : call1 (predicate, tem);
1805 else
1806 return Qt;
1809 DEFUN ("internal-complete-buffer", Finternal_complete_buffer, Sinternal_complete_buffer, 3, 3, 0,
1810 doc: /* Perform completion on buffer names.
1811 STRING and PREDICATE have the same meanings as in `try-completion',
1812 `all-completions', and `test-completion'.
1814 If FLAG is nil, invoke `try-completion'; if it is t, invoke
1815 `all-completions'; otherwise invoke `test-completion'. */)
1816 (Lisp_Object string, Lisp_Object predicate, Lisp_Object flag)
1818 if (NILP (flag))
1819 return Ftry_completion (string, Vbuffer_alist, predicate);
1820 else if (EQ (flag, Qt))
1822 Lisp_Object res = Fall_completions (string, Vbuffer_alist, predicate, Qnil);
1823 if (SCHARS (string) > 0)
1824 return res;
1825 else
1826 { /* Strip out internal buffers. */
1827 Lisp_Object bufs = res;
1828 /* First, look for a non-internal buffer in `res'. */
1829 while (CONSP (bufs) && SREF (XCAR (bufs), 0) == ' ')
1830 bufs = XCDR (bufs);
1831 if (NILP (bufs))
1832 return (EQ (Flength (res), Flength (Vbuffer_alist))
1833 /* If all bufs are internal don't strip them out. */
1834 ? res : bufs);
1835 res = bufs;
1836 while (CONSP (XCDR (bufs)))
1837 if (SREF (XCAR (XCDR (bufs)), 0) == ' ')
1838 XSETCDR (bufs, XCDR (XCDR (bufs)));
1839 else
1840 bufs = XCDR (bufs);
1841 return res;
1844 else if (EQ (flag, Qlambda))
1845 return Ftest_completion (string, Vbuffer_alist, predicate);
1846 else if (EQ (flag, Qmetadata))
1847 return list2 (Qmetadata, Fcons (Qcategory, Qbuffer));
1848 else
1849 return Qnil;
1852 /* Like assoc but assumes KEY is a string, and ignores case if appropriate. */
1854 DEFUN ("assoc-string", Fassoc_string, Sassoc_string, 2, 3, 0,
1855 doc: /* Like `assoc' but specifically for strings (and symbols).
1857 This returns the first element of LIST whose car matches the string or
1858 symbol KEY, or nil if no match exists. When performing the
1859 comparison, symbols are first converted to strings, and unibyte
1860 strings to multibyte. If the optional arg CASE-FOLD is non-nil, both
1861 KEY and the elements of LIST are upcased for comparison.
1863 Unlike `assoc', KEY can also match an entry in LIST consisting of a
1864 single string, rather than a cons cell whose car is a string. */)
1865 (register Lisp_Object key, Lisp_Object list, Lisp_Object case_fold)
1867 register Lisp_Object tail;
1869 if (SYMBOLP (key))
1870 key = Fsymbol_name (key);
1872 for (tail = list; CONSP (tail); tail = XCDR (tail))
1874 register Lisp_Object elt, tem, thiscar;
1875 elt = XCAR (tail);
1876 thiscar = CONSP (elt) ? XCAR (elt) : elt;
1877 if (SYMBOLP (thiscar))
1878 thiscar = Fsymbol_name (thiscar);
1879 else if (!STRINGP (thiscar))
1880 continue;
1881 tem = Fcompare_strings (thiscar, make_number (0), Qnil,
1882 key, make_number (0), Qnil,
1883 case_fold);
1884 if (EQ (tem, Qt))
1885 return elt;
1886 maybe_quit ();
1888 return Qnil;
1892 DEFUN ("minibuffer-depth", Fminibuffer_depth, Sminibuffer_depth, 0, 0, 0,
1893 doc: /* Return current depth of activations of minibuffer, a nonnegative integer. */)
1894 (void)
1896 return make_number (minibuf_level);
1899 DEFUN ("minibuffer-prompt", Fminibuffer_prompt, Sminibuffer_prompt, 0, 0, 0,
1900 doc: /* Return the prompt string of the currently-active minibuffer.
1901 If no minibuffer is active, return nil. */)
1902 (void)
1904 return Fcopy_sequence (minibuf_prompt);
1908 void
1909 init_minibuf_once (void)
1911 Vminibuffer_list = Qnil;
1912 staticpro (&Vminibuffer_list);
1915 void
1916 syms_of_minibuf (void)
1918 minibuf_level = 0;
1919 minibuf_prompt = Qnil;
1920 staticpro (&minibuf_prompt);
1922 minibuf_save_list = Qnil;
1923 staticpro (&minibuf_save_list);
1925 DEFSYM (Qcompletion_ignore_case, "completion-ignore-case");
1926 DEFSYM (Qminibuffer_default, "minibuffer-default");
1927 Fset (Qminibuffer_default, Qnil);
1929 DEFSYM (Qminibuffer_completion_table, "minibuffer-completion-table");
1931 staticpro (&last_minibuf_string);
1932 last_minibuf_string = Qnil;
1934 DEFSYM (Qminibuffer_history, "minibuffer-history");
1935 DEFSYM (Qbuffer_name_history, "buffer-name-history");
1936 Fset (Qbuffer_name_history, Qnil);
1938 DEFSYM (Qcustom_variable_p, "custom-variable-p");
1940 /* Normal hooks for entry to and exit from minibuffer. */
1941 DEFSYM (Qminibuffer_setup_hook, "minibuffer-setup-hook");
1942 DEFSYM (Qminibuffer_exit_hook, "minibuffer-exit-hook");
1944 /* The maximum length of a minibuffer history. */
1945 DEFSYM (Qhistory_length, "history-length");
1947 DEFSYM (Qcurrent_input_method, "current-input-method");
1948 DEFSYM (Qactivate_input_method, "activate-input-method");
1949 DEFSYM (Qcase_fold_search, "case-fold-search");
1950 DEFSYM (Qmetadata, "metadata");
1951 /* A frame parameter. */
1952 DEFSYM (Qminibuffer_exit, "minibuffer-exit");
1954 DEFVAR_LISP ("read-expression-history", Vread_expression_history,
1955 doc: /* A history list for arguments that are Lisp expressions to evaluate.
1956 For example, `eval-expression' uses this. */);
1957 Vread_expression_history = Qnil;
1959 DEFVAR_LISP ("read-buffer-function", Vread_buffer_function,
1960 doc: /* If this is non-nil, `read-buffer' does its work by calling this function.
1961 The function is called with the arguments passed to `read-buffer'. */);
1962 Vread_buffer_function = Qnil;
1964 DEFVAR_BOOL ("read-buffer-completion-ignore-case",
1965 read_buffer_completion_ignore_case,
1966 doc: /* Non-nil means completion ignores case when reading a buffer name. */);
1967 read_buffer_completion_ignore_case = 0;
1969 DEFVAR_LISP ("minibuffer-setup-hook", Vminibuffer_setup_hook,
1970 doc: /* Normal hook run just after entry to minibuffer. */);
1971 Vminibuffer_setup_hook = Qnil;
1973 DEFVAR_LISP ("minibuffer-exit-hook", Vminibuffer_exit_hook,
1974 doc: /* Normal hook run just after exit from minibuffer. */);
1975 Vminibuffer_exit_hook = Qnil;
1977 DEFVAR_LISP ("history-length", Vhistory_length,
1978 doc: /* Maximum length of history lists before truncation takes place.
1979 A number means truncate to that length; truncation deletes old
1980 elements, and is done just after inserting a new element.
1981 A value of t means no truncation.
1983 This variable only affects history lists that don't specify their own
1984 maximum lengths. Setting the `history-length' property of a history
1985 variable overrides this default. */);
1986 XSETFASTINT (Vhistory_length, 100);
1988 DEFVAR_BOOL ("history-delete-duplicates", history_delete_duplicates,
1989 doc: /* Non-nil means to delete duplicates in history.
1990 If set to t when adding a new history element, all previous identical
1991 elements are deleted from the history list. */);
1992 history_delete_duplicates = 0;
1994 DEFVAR_LISP ("history-add-new-input", Vhistory_add_new_input,
1995 doc: /* Non-nil means to add new elements in history.
1996 If set to nil, minibuffer reading functions don't add new elements to the
1997 history list, so it is possible to do this afterwards by calling
1998 `add-to-history' explicitly. */);
1999 Vhistory_add_new_input = Qt;
2001 DEFVAR_BOOL ("completion-ignore-case", completion_ignore_case,
2002 doc: /* Non-nil means don't consider case significant in completion.
2003 For file-name completion, `read-file-name-completion-ignore-case'
2004 controls the behavior, rather than this variable.
2005 For buffer name completion, `read-buffer-completion-ignore-case'
2006 controls the behavior, rather than this variable. */);
2007 completion_ignore_case = 0;
2009 DEFVAR_BOOL ("enable-recursive-minibuffers", enable_recursive_minibuffers,
2010 doc: /* Non-nil means to allow minibuffer commands while in the minibuffer.
2011 This variable makes a difference whenever the minibuffer window is active.
2012 Also see `minibuffer-depth-indicate-mode', which may be handy if this
2013 variable is non-nil. */);
2014 enable_recursive_minibuffers = 0;
2016 DEFVAR_LISP ("minibuffer-completion-table", Vminibuffer_completion_table,
2017 doc: /* Alist or obarray used for completion in the minibuffer.
2018 This becomes the ALIST argument to `try-completion' and `all-completions'.
2019 The value can also be a list of strings or a hash table.
2021 The value may alternatively be a function, which is given three arguments:
2022 STRING, the current buffer contents;
2023 PREDICATE, the predicate for filtering possible matches;
2024 CODE, which says what kind of things to do.
2025 CODE can be nil, t or `lambda':
2026 nil -- return the best completion of STRING, or nil if there is none.
2027 t -- return a list of all possible completions of STRING.
2028 lambda -- return t if STRING is a valid completion as it stands. */);
2029 Vminibuffer_completion_table = Qnil;
2031 DEFVAR_LISP ("minibuffer-completion-predicate", Vminibuffer_completion_predicate,
2032 doc: /* Within call to `completing-read', this holds the PREDICATE argument. */);
2033 Vminibuffer_completion_predicate = Qnil;
2035 DEFVAR_LISP ("minibuffer-completion-confirm", Vminibuffer_completion_confirm,
2036 doc: /* Whether to demand confirmation of completion before exiting minibuffer.
2037 If nil, confirmation is not required.
2038 If the value is `confirm', the user may exit with an input that is not
2039 a valid completion alternative, but Emacs asks for confirmation.
2040 If the value is `confirm-after-completion', the user may exit with an
2041 input that is not a valid completion alternative, but Emacs asks for
2042 confirmation if the user submitted the input right after any of the
2043 completion commands listed in `minibuffer-confirm-exit-commands'. */);
2044 Vminibuffer_completion_confirm = Qnil;
2046 DEFVAR_LISP ("minibuffer-completing-file-name",
2047 Vminibuffer_completing_file_name,
2048 doc: /* Non-nil means completing file names. */);
2049 Vminibuffer_completing_file_name = Qnil;
2051 DEFVAR_LISP ("minibuffer-help-form", Vminibuffer_help_form,
2052 doc: /* Value that `help-form' takes on inside the minibuffer. */);
2053 Vminibuffer_help_form = Qnil;
2055 DEFVAR_LISP ("minibuffer-history-variable", Vminibuffer_history_variable,
2056 doc: /* History list symbol to add minibuffer values to.
2057 Each string of minibuffer input, as it appears on exit from the minibuffer,
2058 is added with
2059 (set minibuffer-history-variable
2060 (cons STRING (symbol-value minibuffer-history-variable))) */);
2061 XSETFASTINT (Vminibuffer_history_variable, 0);
2063 DEFVAR_LISP ("minibuffer-history-position", Vminibuffer_history_position,
2064 doc: /* Current position of redoing in the history list. */);
2065 Vminibuffer_history_position = Qnil;
2067 DEFVAR_BOOL ("minibuffer-auto-raise", minibuffer_auto_raise,
2068 doc: /* Non-nil means entering the minibuffer raises the minibuffer's frame.
2069 Some uses of the echo area also raise that frame (since they use it too). */);
2070 minibuffer_auto_raise = 0;
2072 DEFVAR_LISP ("completion-regexp-list", Vcompletion_regexp_list,
2073 doc: /* List of regexps that should restrict possible completions.
2074 The basic completion functions only consider a completion acceptable
2075 if it matches all regular expressions in this list, with
2076 `case-fold-search' bound to the value of `completion-ignore-case'.
2077 See Info node `(elisp)Basic Completion', for a description of these
2078 functions. */);
2079 Vcompletion_regexp_list = Qnil;
2081 DEFVAR_BOOL ("minibuffer-allow-text-properties",
2082 minibuffer_allow_text_properties,
2083 doc: /* Non-nil means `read-from-minibuffer' should not discard text properties.
2084 This also affects `read-string', but it does not affect `read-minibuffer',
2085 `read-no-blanks-input', or any of the functions that do minibuffer input
2086 with completion; they always discard text properties. */);
2087 minibuffer_allow_text_properties = 0;
2089 DEFVAR_LISP ("minibuffer-prompt-properties", Vminibuffer_prompt_properties,
2090 doc: /* Text properties that are added to minibuffer prompts.
2091 These are in addition to the basic `field' property, and stickiness
2092 properties. */);
2093 Vminibuffer_prompt_properties = list2 (Qread_only, Qt);
2095 DEFVAR_LISP ("read-hide-char", Vread_hide_char,
2096 doc: /* Whether to hide input characters in noninteractive mode.
2097 It must be a character, which will be used to mask the input
2098 characters. This variable should never be set globally. */);
2099 Vread_hide_char = Qnil;
2101 defsubr (&Sactive_minibuffer_window);
2102 defsubr (&Sset_minibuffer_window);
2103 defsubr (&Sread_from_minibuffer);
2104 defsubr (&Sread_string);
2105 defsubr (&Sread_command);
2106 defsubr (&Sread_variable);
2107 defsubr (&Sinternal_complete_buffer);
2108 defsubr (&Sread_buffer);
2109 defsubr (&Sread_no_blanks_input);
2110 defsubr (&Sminibuffer_depth);
2111 defsubr (&Sminibuffer_prompt);
2113 defsubr (&Sminibufferp);
2114 defsubr (&Sminibuffer_prompt_end);
2115 defsubr (&Sminibuffer_contents);
2116 defsubr (&Sminibuffer_contents_no_properties);
2118 defsubr (&Stry_completion);
2119 defsubr (&Sall_completions);
2120 defsubr (&Stest_completion);
2121 defsubr (&Sassoc_string);
2122 defsubr (&Scompleting_read);