* macros.c (Fstart_kbd_macro): Avoid need for overflow check.
[emacs.git] / src / minibuf.c
blobe2450b53964ea0d345fff78ba58f418ba64d852c
1 /* Minibuffer input and completion.
3 Copyright (C) 1985-1986, 1993-2014 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
10 (at 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 <http://www.gnu.org/licenses/>. */
21 #include <config.h>
22 #include <errno.h>
23 #include <stdio.h>
25 #ifdef WINDOWSNT
26 #include <fcntl.h> /* For O_BINARY, O_TEXT. */
27 #endif
29 #include "lisp.h"
30 #include "commands.h"
31 #include "character.h"
32 #include "buffer.h"
33 #include "dispextern.h"
34 #include "keyboard.h"
35 #include "frame.h"
36 #include "window.h"
37 #include "syntax.h"
38 #include "intervals.h"
39 #include "keymap.h"
40 #include "termhooks.h"
41 #include "systty.h"
43 /* List of buffers for use as minibuffers.
44 The first element of the list is used for the outermost minibuffer
45 invocation, the next element is used for a recursive minibuffer
46 invocation, etc. The list is extended at the end as deeper
47 minibuffer recursions are encountered. */
49 Lisp_Object Vminibuffer_list;
51 /* Data to remember during recursive minibuffer invocations. */
53 static Lisp_Object minibuf_save_list;
55 /* Depth in minibuffer invocations. */
57 EMACS_INT minibuf_level;
59 /* The maximum length of a minibuffer history. */
61 static Lisp_Object Qhistory_length;
63 /* Fread_minibuffer leaves the input here as a string. */
65 Lisp_Object last_minibuf_string;
67 static Lisp_Object Qminibuffer_history, Qbuffer_name_history;
69 static Lisp_Object Qread_file_name_internal;
71 /* Normal hooks for entry to and exit from minibuffer. */
73 static Lisp_Object Qminibuffer_setup_hook;
74 static Lisp_Object Qminibuffer_exit_hook;
76 Lisp_Object Qcompletion_ignore_case;
77 static Lisp_Object Qminibuffer_completion_table;
78 static Lisp_Object Qminibuffer_completion_predicate;
79 static Lisp_Object Qminibuffer_completion_confirm;
80 static Lisp_Object Qcustom_variable_p;
82 static Lisp_Object Qminibuffer_default;
84 static Lisp_Object Qcurrent_input_method, Qactivate_input_method;
86 static Lisp_Object Qcase_fold_search;
88 static Lisp_Object Qread_expression_history;
90 /* Prompt to display in front of the mini-buffer contents. */
92 static Lisp_Object minibuf_prompt;
94 /* Width of current mini-buffer prompt. Only set after display_line
95 of the line that contains the prompt. */
97 static ptrdiff_t minibuf_prompt_width;
100 /* Put minibuf on currently selected frame's minibuffer.
101 We do this whenever the user starts a new minibuffer
102 or when a minibuffer exits. */
104 static void
105 choose_minibuf_frame (void)
107 if (FRAMEP (selected_frame)
108 && FRAME_LIVE_P (XFRAME (selected_frame))
109 && !EQ (minibuf_window, XFRAME (selected_frame)->minibuffer_window))
111 struct frame *sf = XFRAME (selected_frame);
112 Lisp_Object buffer;
114 /* I don't think that any frames may validly have a null minibuffer
115 window anymore. */
116 if (NILP (sf->minibuffer_window))
117 emacs_abort ();
119 /* Under X, we come here with minibuf_window being the
120 minibuffer window of the unused termcap window created in
121 init_window_once. That window doesn't have a buffer. */
122 buffer = XWINDOW (minibuf_window)->contents;
123 if (BUFFERP (buffer))
124 /* Use set_window_buffer instead of Fset_window_buffer (see
125 discussion of bug#11984, bug#12025, bug#12026). */
126 set_window_buffer (sf->minibuffer_window, buffer, 0, 0);
127 minibuf_window = sf->minibuffer_window;
130 /* Make sure no other frame has a minibuffer as its selected window,
131 because the text would not be displayed in it, and that would be
132 confusing. Only allow the selected frame to do this,
133 and that only if the minibuffer is active. */
135 Lisp_Object tail, frame;
137 FOR_EACH_FRAME (tail, frame)
138 if (MINI_WINDOW_P (XWINDOW (FRAME_SELECTED_WINDOW (XFRAME (frame))))
139 && !(EQ (frame, selected_frame)
140 && minibuf_level > 0))
141 Fset_frame_selected_window (frame, Fframe_first_window (frame), Qnil);
145 DEFUN ("active-minibuffer-window", Factive_minibuffer_window,
146 Sactive_minibuffer_window, 0, 0, 0,
147 doc: /* Return the currently active minibuffer window, or nil if none. */)
148 (void)
150 return minibuf_level ? minibuf_window : Qnil;
153 DEFUN ("set-minibuffer-window", Fset_minibuffer_window,
154 Sset_minibuffer_window, 1, 1, 0,
155 doc: /* Specify which minibuffer window to use for the minibuffer.
156 This affects where the minibuffer is displayed if you put text in it
157 without invoking the usual minibuffer commands. */)
158 (Lisp_Object window)
160 CHECK_WINDOW (window);
161 if (! MINI_WINDOW_P (XWINDOW (window)))
162 error ("Window is not a minibuffer window");
164 minibuf_window = window;
166 return window;
170 /* Actual minibuffer invocation. */
172 static void read_minibuf_unwind (void);
173 static void run_exit_minibuf_hook (void);
176 /* Read a Lisp object from VAL and return it. If VAL is an empty
177 string, and DEFALT is a string, read from DEFALT instead of VAL. */
179 static Lisp_Object
180 string_to_object (Lisp_Object val, Lisp_Object defalt)
182 struct gcpro gcpro1, gcpro2;
183 Lisp_Object expr_and_pos;
184 ptrdiff_t pos;
186 GCPRO2 (val, defalt);
188 if (STRINGP (val) && SCHARS (val) == 0)
190 if (STRINGP (defalt))
191 val = defalt;
192 else if (CONSP (defalt) && STRINGP (XCAR (defalt)))
193 val = XCAR (defalt);
196 expr_and_pos = Fread_from_string (val, Qnil, Qnil);
197 pos = XINT (Fcdr (expr_and_pos));
198 if (pos != SCHARS (val))
200 /* Ignore trailing whitespace; any other trailing junk
201 is an error. */
202 ptrdiff_t i;
203 pos = string_char_to_byte (val, pos);
204 for (i = pos; i < SBYTES (val); i++)
206 int c = SREF (val, i);
207 if (c != ' ' && c != '\t' && c != '\n')
208 error ("Trailing garbage following expression");
212 val = Fcar (expr_and_pos);
213 RETURN_UNGCPRO (val);
217 /* Like read_minibuf but reading from stdin. This function is called
218 from read_minibuf to do the job if noninteractive. */
220 static Lisp_Object
221 read_minibuf_noninteractive (Lisp_Object map, Lisp_Object initial,
222 Lisp_Object prompt, Lisp_Object backup_n,
223 bool expflag,
224 Lisp_Object histvar, Lisp_Object histpos,
225 Lisp_Object defalt,
226 bool allow_props, bool inherit_input_method)
228 ptrdiff_t size, len;
229 char *line;
230 Lisp_Object val;
231 int c;
232 unsigned char hide_char = 0;
233 struct emacs_tty etty;
235 /* Check, whether we need to suppress echoing. */
236 if (CHARACTERP (Vread_hide_char))
237 hide_char = XFASTINT (Vread_hide_char);
239 /* Manipulate tty. */
240 if (hide_char)
242 emacs_get_tty (fileno (stdin), &etty);
243 #ifdef WINDOWSNT
244 if (isatty (fileno (stdin)))
245 _setmode (fileno (stdin), O_BINARY);
246 #endif
247 suppress_echo_on_tty (fileno (stdin));
250 fprintf (stdout, "%s", SDATA (prompt));
251 fflush (stdout);
253 val = Qnil;
254 size = 100;
255 len = 0;
256 line = xmalloc (size);
258 while ((c = getchar ()) != '\n' && c != '\r')
260 if (c == EOF)
262 if (errno != EINTR)
263 break;
265 else
267 if (hide_char)
268 fprintf (stdout, "%c", hide_char);
269 if (len == size)
271 if (STRING_BYTES_BOUND / 2 < size)
272 memory_full (SIZE_MAX);
273 size *= 2;
274 line = xrealloc (line, size);
276 line[len++] = c;
280 /* Reset tty. */
281 if (hide_char)
283 fprintf (stdout, "\n");
284 emacs_set_tty (fileno (stdin), &etty, 0);
285 #ifdef WINDOWSNT
286 if (isatty (fileno (stdin)))
287 _setmode (fileno (stdin), O_TEXT);
288 #endif
291 if (len || c == '\n' || c == '\r')
293 val = make_string (line, len);
294 xfree (line);
296 else
298 xfree (line);
299 error ("Error reading from stdin");
302 /* If Lisp form desired instead of string, parse it. */
303 if (expflag)
304 val = string_to_object (val, CONSP (defalt) ? XCAR (defalt) : defalt);
306 return val;
309 DEFUN ("minibufferp", Fminibufferp,
310 Sminibufferp, 0, 1, 0,
311 doc: /* Return t if BUFFER is a minibuffer.
312 No argument or nil as argument means use current buffer as BUFFER.
313 BUFFER can be a buffer or a buffer name. */)
314 (Lisp_Object buffer)
316 Lisp_Object tem;
318 if (NILP (buffer))
319 buffer = Fcurrent_buffer ();
320 else if (STRINGP (buffer))
321 buffer = Fget_buffer (buffer);
322 else
323 CHECK_BUFFER (buffer);
325 tem = Fmemq (buffer, Vminibuffer_list);
326 return ! NILP (tem) ? Qt : Qnil;
329 DEFUN ("minibuffer-prompt-end", Fminibuffer_prompt_end,
330 Sminibuffer_prompt_end, 0, 0, 0,
331 doc: /* Return the buffer position of the end of the minibuffer prompt.
332 Return (point-min) if current buffer is not a minibuffer. */)
333 (void)
335 /* This function is written to be most efficient when there's a prompt. */
336 Lisp_Object beg, end, tem;
337 beg = make_number (BEGV);
339 tem = Fmemq (Fcurrent_buffer (), Vminibuffer_list);
340 if (NILP (tem))
341 return beg;
343 end = Ffield_end (beg, Qnil, Qnil);
345 if (XINT (end) == ZV && NILP (Fget_char_property (beg, Qfield, Qnil)))
346 return beg;
347 else
348 return end;
351 DEFUN ("minibuffer-contents", Fminibuffer_contents,
352 Sminibuffer_contents, 0, 0, 0,
353 doc: /* Return the user input in a minibuffer as a string.
354 If the current buffer is not a minibuffer, return its entire contents. */)
355 (void)
357 ptrdiff_t prompt_end = XINT (Fminibuffer_prompt_end ());
358 return make_buffer_string (prompt_end, ZV, 1);
361 DEFUN ("minibuffer-contents-no-properties", Fminibuffer_contents_no_properties,
362 Sminibuffer_contents_no_properties, 0, 0, 0,
363 doc: /* Return the user input in a minibuffer as a string, without text-properties.
364 If the current buffer is not a minibuffer, return its entire contents. */)
365 (void)
367 ptrdiff_t prompt_end = XINT (Fminibuffer_prompt_end ());
368 return make_buffer_string (prompt_end, ZV, 0);
371 DEFUN ("minibuffer-completion-contents", Fminibuffer_completion_contents,
372 Sminibuffer_completion_contents, 0, 0, 0,
373 doc: /* Return the user input in a minibuffer before point as a string.
374 That is what completion commands operate on.
375 If the current buffer is not a minibuffer, return its entire contents. */)
376 (void)
378 ptrdiff_t prompt_end = XINT (Fminibuffer_prompt_end ());
379 if (PT < prompt_end)
380 error ("Cannot do completion in the prompt");
381 return make_buffer_string (prompt_end, PT, 1);
385 /* Read from the minibuffer using keymap MAP and initial contents INITIAL,
386 putting point minus BACKUP_N bytes from the end of INITIAL,
387 prompting with PROMPT (a string), using history list HISTVAR
388 with initial position HISTPOS. INITIAL should be a string or a
389 cons of a string and an integer. BACKUP_N should be <= 0, or
390 Qnil, which is equivalent to 0. If INITIAL is a cons, BACKUP_N is
391 ignored and replaced with an integer that puts point at one-indexed
392 position N in INITIAL, where N is the CDR of INITIAL, or at the
393 beginning of INITIAL if N <= 0.
395 Normally return the result as a string (the text that was read),
396 but if EXPFLAG, read it and return the object read.
397 If HISTVAR is given, save the value read on that history only if it doesn't
398 match the front of that history list exactly. The value is pushed onto
399 the list as the string that was read.
401 DEFALT specifies the default value for the sake of history commands.
403 If ALLOW_PROPS, do not throw away text properties.
405 if INHERIT_INPUT_METHOD, the minibuffer inherits the
406 current input method. */
408 static Lisp_Object
409 read_minibuf (Lisp_Object map, Lisp_Object initial, Lisp_Object prompt,
410 bool expflag,
411 Lisp_Object histvar, Lisp_Object histpos, Lisp_Object defalt,
412 bool allow_props, bool inherit_input_method)
414 Lisp_Object val;
415 ptrdiff_t count = SPECPDL_INDEX ();
416 Lisp_Object mini_frame, ambient_dir, minibuffer, input_method;
417 struct gcpro gcpro1, gcpro2, gcpro3, gcpro4, gcpro5;
418 Lisp_Object enable_multibyte;
419 EMACS_INT pos = 0;
420 /* String to add to the history. */
421 Lisp_Object histstring;
422 Lisp_Object histval;
424 Lisp_Object empty_minibuf;
425 Lisp_Object dummy, frame;
427 specbind (Qminibuffer_default, defalt);
428 specbind (intern ("inhibit-read-only"), Qnil);
430 /* If Vminibuffer_completing_file_name is `lambda' on entry, it was t
431 in previous recursive minibuffer, but was not set explicitly
432 to t for this invocation, so set it to nil in this minibuffer.
433 Save the old value now, before we change it. */
434 specbind (intern ("minibuffer-completing-file-name"),
435 Vminibuffer_completing_file_name);
436 if (EQ (Vminibuffer_completing_file_name, Qlambda))
437 Vminibuffer_completing_file_name = Qnil;
439 #ifdef HAVE_WINDOW_SYSTEM
440 if (display_hourglass_p)
441 cancel_hourglass ();
442 #endif
444 if (!NILP (initial))
446 if (CONSP (initial))
448 Lisp_Object backup_n = XCDR (initial);
449 initial = XCAR (initial);
450 CHECK_STRING (initial);
451 if (!NILP (backup_n))
453 CHECK_NUMBER (backup_n);
454 /* Convert to distance from end of input. */
455 if (XINT (backup_n) < 1)
456 /* A number too small means the beginning of the string. */
457 pos = - SCHARS (initial);
458 else
459 pos = XINT (backup_n) - 1 - SCHARS (initial);
462 else
463 CHECK_STRING (initial);
465 val = Qnil;
466 ambient_dir = BVAR (current_buffer, directory);
467 input_method = Qnil;
468 enable_multibyte = Qnil;
470 /* Don't need to protect PROMPT, HISTVAR, and HISTPOS because we
471 store them away before we can GC. Don't need to protect
472 BACKUP_N because we use the value only if it is an integer. */
473 GCPRO5 (map, initial, val, ambient_dir, input_method);
475 if (!STRINGP (prompt))
476 prompt = empty_unibyte_string;
478 if (!enable_recursive_minibuffers
479 && minibuf_level > 0)
481 if (EQ (selected_window, minibuf_window))
482 error ("Command attempted to use minibuffer while in minibuffer");
483 else
484 /* If we're in another window, cancel the minibuffer that's active. */
485 Fthrow (Qexit,
486 build_string ("Command attempted to use minibuffer while in minibuffer"));
489 if ((noninteractive
490 /* In case we are running as a daemon, only do this before
491 detaching from the terminal. */
492 || (IS_DAEMON && (daemon_pipe[1] >= 0)))
493 && NILP (Vexecuting_kbd_macro))
495 val = read_minibuf_noninteractive (map, initial, prompt,
496 make_number (pos),
497 expflag, histvar, histpos, defalt,
498 allow_props, inherit_input_method);
499 UNGCPRO;
500 return unbind_to (count, val);
503 /* Choose the minibuffer window and frame, and take action on them. */
505 /* Prepare for restoring the current buffer since choose_minibuf_frame
506 calling Fset_frame_selected_window may change it (Bug#12766). */
507 record_unwind_protect (restore_buffer, Fcurrent_buffer ());
509 choose_minibuf_frame ();
511 record_unwind_protect_void (choose_minibuf_frame);
513 record_unwind_protect (restore_window_configuration,
514 Fcurrent_window_configuration (Qnil));
516 /* If the minibuffer window is on a different frame, save that
517 frame's configuration too. */
518 mini_frame = WINDOW_FRAME (XWINDOW (minibuf_window));
519 if (!EQ (mini_frame, selected_frame))
520 record_unwind_protect (restore_window_configuration,
521 Fcurrent_window_configuration (mini_frame));
523 /* If the minibuffer is on an iconified or invisible frame,
524 make it visible now. */
525 Fmake_frame_visible (mini_frame);
527 if (minibuffer_auto_raise)
528 Fraise_frame (mini_frame);
530 temporarily_switch_to_single_kboard (XFRAME (mini_frame));
532 /* We have to do this after saving the window configuration
533 since that is what restores the current buffer. */
535 /* Arrange to restore a number of minibuffer-related variables.
536 We could bind each variable separately, but that would use lots of
537 specpdl slots. */
538 minibuf_save_list
539 = Fcons (Voverriding_local_map,
540 Fcons (minibuf_window,
541 minibuf_save_list));
542 minibuf_save_list
543 = Fcons (minibuf_prompt,
544 Fcons (make_number (minibuf_prompt_width),
545 Fcons (Vhelp_form,
546 Fcons (Vcurrent_prefix_arg,
547 Fcons (Vminibuffer_history_position,
548 Fcons (Vminibuffer_history_variable,
549 minibuf_save_list))))));
551 record_unwind_protect_void (read_minibuf_unwind);
552 minibuf_level++;
553 /* We are exiting the minibuffer one way or the other, so run the hook.
554 It should be run before unwinding the minibuf settings. Do it
555 separately from read_minibuf_unwind because we need to make sure that
556 read_minibuf_unwind is fully executed even if exit-minibuffer-hook
557 signals an error. --Stef */
558 record_unwind_protect_void (run_exit_minibuf_hook);
560 /* Now that we can restore all those variables, start changing them. */
562 minibuf_prompt_width = 0;
563 minibuf_prompt = Fcopy_sequence (prompt);
564 Vminibuffer_history_position = histpos;
565 Vminibuffer_history_variable = histvar;
566 Vhelp_form = Vminibuffer_help_form;
567 /* If this minibuffer is reading a file name, that doesn't mean
568 recursive ones are. But we cannot set it to nil, because
569 completion code still need to know the minibuffer is completing a
570 file name. So use `lambda' as intermediate value meaning
571 "t" in this minibuffer, but "nil" in next minibuffer. */
572 if (!NILP (Vminibuffer_completing_file_name))
573 Vminibuffer_completing_file_name = Qlambda;
575 /* If variable is unbound, make it nil. */
576 histval = find_symbol_value (Vminibuffer_history_variable);
577 if (EQ (histval, Qunbound))
579 Fset (Vminibuffer_history_variable, Qnil);
580 histval = Qnil;
583 if (inherit_input_method)
585 /* `current-input-method' is buffer local. So, remember it in
586 INPUT_METHOD before changing the current buffer. */
587 input_method = Fsymbol_value (Qcurrent_input_method);
588 enable_multibyte = BVAR (current_buffer, enable_multibyte_characters);
591 /* Switch to the minibuffer. */
593 minibuffer = get_minibuffer (minibuf_level);
594 Fset_buffer (minibuffer);
596 /* Defeat (setq-default truncate-lines t), since truncated lines do
597 not work correctly in minibuffers. (Bug#5715, etc) */
598 bset_truncate_lines (current_buffer, Qnil);
600 /* If appropriate, copy enable-multibyte-characters into the minibuffer. */
601 if (inherit_input_method)
602 bset_enable_multibyte_characters (current_buffer, enable_multibyte);
604 /* The current buffer's default directory is usually the right thing
605 for our minibuffer here. However, if you're typing a command at
606 a minibuffer-only frame when minibuf_level is zero, then buf IS
607 the current_buffer, so reset_buffer leaves buf's default
608 directory unchanged. This is a bummer when you've just started
609 up Emacs and buf's default directory is Qnil. Here's a hack; can
610 you think of something better to do? Find another buffer with a
611 better directory, and use that one instead. */
612 if (STRINGP (ambient_dir))
613 bset_directory (current_buffer, ambient_dir);
614 else
616 Lisp_Object tail, buf;
618 FOR_EACH_LIVE_BUFFER (tail, buf)
619 if (STRINGP (BVAR (XBUFFER (buf), directory)))
621 bset_directory (current_buffer,
622 BVAR (XBUFFER (buf), directory));
623 break;
627 if (!EQ (mini_frame, selected_frame))
628 Fredirect_frame_focus (selected_frame, mini_frame);
630 Vminibuf_scroll_window = selected_window;
631 if (minibuf_level == 1 || !EQ (minibuf_window, selected_window))
632 minibuf_selected_window = selected_window;
634 /* Empty out the minibuffers of all frames other than the one
635 where we are going to display one now.
636 Set them to point to ` *Minibuf-0*', which is always empty. */
637 empty_minibuf = get_minibuffer (0);
639 FOR_EACH_FRAME (dummy, frame)
641 Lisp_Object root_window = Fframe_root_window (frame);
642 Lisp_Object mini_window = XWINDOW (root_window)->next;
644 if (! NILP (mini_window) && ! EQ (mini_window, minibuf_window)
645 && !NILP (Fwindow_minibuffer_p (mini_window)))
646 /* Use set_window_buffer instead of Fset_window_buffer (see
647 discussion of bug#11984, bug#12025, bug#12026). */
648 set_window_buffer (mini_window, empty_minibuf, 0, 0);
651 /* Display this minibuffer in the proper window. */
652 /* Use set_window_buffer instead of Fset_window_buffer (see
653 discussion of bug#11984, bug#12025, bug#12026). */
654 set_window_buffer (minibuf_window, Fcurrent_buffer (), 0, 0);
655 Fselect_window (minibuf_window, Qnil);
656 XWINDOW (minibuf_window)->hscroll = 0;
658 Fmake_local_variable (Qprint_escape_newlines);
659 print_escape_newlines = 1;
661 /* Erase the buffer. */
663 ptrdiff_t count1 = SPECPDL_INDEX ();
664 specbind (Qinhibit_read_only, Qt);
665 specbind (Qinhibit_modification_hooks, Qt);
666 Ferase_buffer ();
668 if (!NILP (BVAR (current_buffer, enable_multibyte_characters))
669 && ! STRING_MULTIBYTE (minibuf_prompt))
670 minibuf_prompt = Fstring_make_multibyte (minibuf_prompt);
672 /* Insert the prompt, record where it ends. */
673 Finsert (1, &minibuf_prompt);
674 if (PT > BEG)
676 Fput_text_property (make_number (BEG), make_number (PT),
677 Qfront_sticky, Qt, Qnil);
678 Fput_text_property (make_number (BEG), make_number (PT),
679 Qrear_nonsticky, Qt, Qnil);
680 Fput_text_property (make_number (BEG), make_number (PT),
681 Qfield, Qt, Qnil);
682 Fadd_text_properties (make_number (BEG), make_number (PT),
683 Vminibuffer_prompt_properties, Qnil);
685 unbind_to (count1, Qnil);
688 minibuf_prompt_width = current_column ();
690 /* Put in the initial input. */
691 if (!NILP (initial))
693 Finsert (1, &initial);
694 Fforward_char (make_number (pos));
697 clear_message (1, 1);
698 bset_keymap (current_buffer, map);
700 /* Turn on an input method stored in INPUT_METHOD if any. */
701 if (STRINGP (input_method) && !NILP (Ffboundp (Qactivate_input_method)))
702 call1 (Qactivate_input_method, input_method);
704 Frun_hooks (1, &Qminibuffer_setup_hook);
706 /* Don't allow the user to undo past this point. */
707 bset_undo_list (current_buffer, Qnil);
709 recursive_edit_1 ();
711 /* If cursor is on the minibuffer line,
712 show the user we have exited by putting it in column 0. */
713 if (XWINDOW (minibuf_window)->cursor.vpos >= 0
714 && !noninteractive)
716 XWINDOW (minibuf_window)->cursor.hpos = 0;
717 XWINDOW (minibuf_window)->cursor.x = 0;
718 XWINDOW (minibuf_window)->must_be_updated_p = 1;
719 update_frame (XFRAME (selected_frame), 1, 1);
720 flush_frame (XFRAME (XWINDOW (minibuf_window)->frame));
723 /* Make minibuffer contents into a string. */
724 Fset_buffer (minibuffer);
725 if (allow_props)
726 val = Fminibuffer_contents ();
727 else
728 val = Fminibuffer_contents_no_properties ();
730 /* VAL is the string of minibuffer text. */
732 last_minibuf_string = val;
734 /* Choose the string to add to the history. */
735 if (SCHARS (val) != 0)
736 histstring = val;
737 else if (STRINGP (defalt))
738 histstring = defalt;
739 else if (CONSP (defalt) && STRINGP (XCAR (defalt)))
740 histstring = XCAR (defalt);
741 else
742 histstring = Qnil;
744 /* Add the value to the appropriate history list, if any. */
745 if (!NILP (Vhistory_add_new_input)
746 && SYMBOLP (Vminibuffer_history_variable)
747 && !NILP (histstring))
749 /* If the caller wanted to save the value read on a history list,
750 then do so if the value is not already the front of the list. */
752 /* The value of the history variable must be a cons or nil. Other
753 values are unacceptable. We silently ignore these values. */
755 if (NILP (histval)
756 || (CONSP (histval)
757 /* Don't duplicate the most recent entry in the history. */
758 && (NILP (Fequal (histstring, Fcar (histval))))))
760 Lisp_Object length;
762 if (history_delete_duplicates) Fdelete (histstring, histval);
763 histval = Fcons (histstring, histval);
764 Fset (Vminibuffer_history_variable, histval);
766 /* Truncate if requested. */
767 length = Fget (Vminibuffer_history_variable, Qhistory_length);
768 if (NILP (length)) length = Vhistory_length;
769 if (INTEGERP (length))
771 if (XINT (length) <= 0)
772 Fset (Vminibuffer_history_variable, Qnil);
773 else
775 Lisp_Object temp;
777 temp = Fnthcdr (Fsub1 (length), histval);
778 if (CONSP (temp)) Fsetcdr (temp, Qnil);
784 /* If Lisp form desired instead of string, parse it. */
785 if (expflag)
786 val = string_to_object (val, defalt);
788 /* The appropriate frame will get selected
789 in set-window-configuration. */
790 UNGCPRO;
791 return unbind_to (count, val);
794 /* Return a buffer to be used as the minibuffer at depth `depth'.
795 depth = 0 is the lowest allowed argument, and that is the value
796 used for nonrecursive minibuffer invocations. */
798 Lisp_Object
799 get_minibuffer (EMACS_INT depth)
801 Lisp_Object tail, num, buf;
802 char name[sizeof " *Minibuf-*" + INT_STRLEN_BOUND (EMACS_INT)];
804 XSETFASTINT (num, depth);
805 tail = Fnthcdr (num, Vminibuffer_list);
806 if (NILP (tail))
808 tail = list1 (Qnil);
809 Vminibuffer_list = nconc2 (Vminibuffer_list, tail);
811 buf = Fcar (tail);
812 if (NILP (buf) || !BUFFER_LIVE_P (XBUFFER (buf)))
814 buf = Fget_buffer_create
815 (make_formatted_string (name, " *Minibuf-%"pI"d*", depth));
817 /* Although the buffer's name starts with a space, undo should be
818 enabled in it. */
819 Fbuffer_enable_undo (buf);
821 XSETCAR (tail, buf);
823 else
825 ptrdiff_t count = SPECPDL_INDEX ();
826 /* We have to empty both overlay lists. Otherwise we end
827 up with overlays that think they belong to this buffer
828 while the buffer doesn't know about them any more. */
829 delete_all_overlays (XBUFFER (buf));
830 reset_buffer (XBUFFER (buf));
831 record_unwind_current_buffer ();
832 Fset_buffer (buf);
833 if (!NILP (Ffboundp (intern ("minibuffer-inactive-mode"))))
834 call0 (intern ("minibuffer-inactive-mode"));
835 else
836 Fkill_all_local_variables ();
837 unbind_to (count, Qnil);
840 return buf;
843 static void
844 run_exit_minibuf_hook (void)
846 safe_run_hooks (Qminibuffer_exit_hook);
849 /* This function is called on exiting minibuffer, whether normally or
850 not, and it restores the current window, buffer, etc. */
852 static void
853 read_minibuf_unwind (void)
855 Lisp_Object old_deactivate_mark;
856 Lisp_Object window;
858 /* If this was a recursive minibuffer,
859 tie the minibuffer window back to the outer level minibuffer buffer. */
860 minibuf_level--;
862 window = minibuf_window;
863 /* To keep things predictable, in case it matters, let's be in the
864 minibuffer when we reset the relevant variables. */
865 Fset_buffer (XWINDOW (window)->contents);
867 /* Restore prompt, etc, from outer minibuffer level. */
868 minibuf_prompt = Fcar (minibuf_save_list);
869 minibuf_save_list = Fcdr (minibuf_save_list);
870 minibuf_prompt_width = XFASTINT (Fcar (minibuf_save_list));
871 minibuf_save_list = Fcdr (minibuf_save_list);
872 Vhelp_form = Fcar (minibuf_save_list);
873 minibuf_save_list = Fcdr (minibuf_save_list);
874 Vcurrent_prefix_arg = Fcar (minibuf_save_list);
875 minibuf_save_list = Fcdr (minibuf_save_list);
876 Vminibuffer_history_position = Fcar (minibuf_save_list);
877 minibuf_save_list = Fcdr (minibuf_save_list);
878 Vminibuffer_history_variable = Fcar (minibuf_save_list);
879 minibuf_save_list = Fcdr (minibuf_save_list);
880 Voverriding_local_map = Fcar (minibuf_save_list);
881 minibuf_save_list = Fcdr (minibuf_save_list);
882 #if 0
883 temp = Fcar (minibuf_save_list);
884 if (FRAME_LIVE_P (XFRAME (WINDOW_FRAME (XWINDOW (temp)))))
885 minibuf_window = temp;
886 #endif
887 minibuf_save_list = Fcdr (minibuf_save_list);
889 /* Erase the minibuffer we were using at this level. */
891 ptrdiff_t count = SPECPDL_INDEX ();
892 /* Prevent error in erase-buffer. */
893 specbind (Qinhibit_read_only, Qt);
894 specbind (Qinhibit_modification_hooks, Qt);
895 old_deactivate_mark = Vdeactivate_mark;
896 Ferase_buffer ();
897 Vdeactivate_mark = old_deactivate_mark;
898 unbind_to (count, Qnil);
901 /* When we get to the outmost level, make sure we resize the
902 mini-window back to its normal size. */
903 if (minibuf_level == 0)
904 resize_mini_window (XWINDOW (window), 0);
906 /* In case the previous minibuffer displayed in this miniwindow is
907 dead, we may keep displaying this buffer (tho it's inactive), so reset it,
908 to make sure we don't leave around bindings and stuff which only
909 made sense during the read_minibuf invocation. */
910 call0 (intern ("minibuffer-inactive-mode"));
914 DEFUN ("read-from-minibuffer", Fread_from_minibuffer,
915 Sread_from_minibuffer, 1, 7, 0,
916 doc: /* Read a string from the minibuffer, prompting with string PROMPT.
917 The optional second arg INITIAL-CONTENTS is an obsolete alternative to
918 DEFAULT-VALUE. It normally should be nil in new code, except when
919 HIST is a cons. It is discussed in more detail below.
921 Third arg KEYMAP is a keymap to use whilst reading;
922 if omitted or nil, the default is `minibuffer-local-map'.
924 If fourth arg READ is non-nil, interpret the result as a Lisp object
925 and return that object:
926 in other words, do `(car (read-from-string INPUT-STRING))'
928 Fifth arg HIST, if non-nil, specifies a history list and optionally
929 the initial position in the list. It can be a symbol, which is the
930 history list variable to use, or a cons cell (HISTVAR . HISTPOS).
931 In that case, HISTVAR is the history list variable to use, and
932 HISTPOS is the initial position for use by the minibuffer history
933 commands. For consistency, you should also specify that element of
934 the history as the value of INITIAL-CONTENTS. Positions are counted
935 starting from 1 at the beginning of the list.
937 Sixth arg DEFAULT-VALUE, if non-nil, should be a string, which is used
938 as the default to `read' if READ is non-nil and the user enters
939 empty input. But if READ is nil, this function does _not_ return
940 DEFAULT-VALUE for empty input! Instead, it returns the empty string.
942 Whatever the value of READ, DEFAULT-VALUE is made available via the
943 minibuffer history commands. DEFAULT-VALUE can also be a list of
944 strings, in which case all the strings are available in the history,
945 and the first string is the default to `read' if READ is non-nil.
947 Seventh arg INHERIT-INPUT-METHOD, if non-nil, means the minibuffer inherits
948 the current input method and the setting of `enable-multibyte-characters'.
950 If the variable `minibuffer-allow-text-properties' is non-nil,
951 then the string which is returned includes whatever text properties
952 were present in the minibuffer. Otherwise the value has no text properties.
954 The remainder of this documentation string describes the
955 INITIAL-CONTENTS argument in more detail. It is only relevant when
956 studying existing code, or when HIST is a cons. If non-nil,
957 INITIAL-CONTENTS is a string to be inserted into the minibuffer before
958 reading input. Normally, point is put at the end of that string.
959 However, if INITIAL-CONTENTS is \(STRING . POSITION), the initial
960 input is STRING, but point is placed at _one-indexed_ position
961 POSITION in the minibuffer. Any integer value less than or equal to
962 one puts point at the beginning of the string. *Note* that this
963 behavior differs from the way such arguments are used in `completing-read'
964 and some related functions, which use zero-indexing for POSITION. */)
965 (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)
967 Lisp_Object histvar, histpos, val;
968 struct gcpro gcpro1;
970 CHECK_STRING (prompt);
971 if (NILP (keymap))
972 keymap = Vminibuffer_local_map;
973 else
974 keymap = get_keymap (keymap, 1, 0);
976 if (SYMBOLP (hist))
978 histvar = hist;
979 histpos = Qnil;
981 else
983 histvar = Fcar_safe (hist);
984 histpos = Fcdr_safe (hist);
986 if (NILP (histvar))
987 histvar = Qminibuffer_history;
988 if (NILP (histpos))
989 XSETFASTINT (histpos, 0);
991 GCPRO1 (default_value);
992 val = read_minibuf (keymap, initial_contents, prompt,
993 !NILP (read),
994 histvar, histpos, default_value,
995 minibuffer_allow_text_properties,
996 !NILP (inherit_input_method));
997 UNGCPRO;
998 return val;
1001 /* Functions that use the minibuffer to read various things. */
1003 DEFUN ("read-string", Fread_string, Sread_string, 1, 5, 0,
1004 doc: /* Read a string from the minibuffer, prompting with string PROMPT.
1005 If non-nil, second arg INITIAL-INPUT is a string to insert before reading.
1006 This argument has been superseded by DEFAULT-VALUE and should normally be nil
1007 in new code. It behaves as INITIAL-CONTENTS in `read-from-minibuffer' (which
1008 see).
1009 The third arg HISTORY, if non-nil, specifies a history list
1010 and optionally the initial position in the list.
1011 See `read-from-minibuffer' for details of HISTORY argument.
1012 Fourth arg DEFAULT-VALUE is the default value or the list of default values.
1013 If non-nil, it is used for history commands, and as the value (or the first
1014 element of the list of default values) to return if the user enters the
1015 empty string.
1016 Fifth arg INHERIT-INPUT-METHOD, if non-nil, means the minibuffer inherits
1017 the current input method and the setting of `enable-multibyte-characters'. */)
1018 (Lisp_Object prompt, Lisp_Object initial_input, Lisp_Object history, Lisp_Object default_value, Lisp_Object inherit_input_method)
1020 Lisp_Object val;
1021 ptrdiff_t count = SPECPDL_INDEX ();
1023 /* Just in case we're in a recursive minibuffer, make it clear that the
1024 previous minibuffer's completion table does not apply to the new
1025 minibuffer.
1026 FIXME: `minibuffer-completion-table' should be buffer-local instead. */
1027 specbind (Qminibuffer_completion_table, Qnil);
1029 val = Fread_from_minibuffer (prompt, initial_input, Qnil,
1030 Qnil, history, default_value,
1031 inherit_input_method);
1032 if (STRINGP (val) && SCHARS (val) == 0 && ! NILP (default_value))
1033 val = CONSP (default_value) ? XCAR (default_value) : default_value;
1034 return unbind_to (count, val);
1037 DEFUN ("read-no-blanks-input", Fread_no_blanks_input, Sread_no_blanks_input, 1, 3, 0,
1038 doc: /* Read a string from the terminal, not allowing blanks.
1039 Prompt with PROMPT. Whitespace terminates the input. If INITIAL is
1040 non-nil, it should be a string, which is used as initial input, with
1041 point positioned at the end, so that SPACE will accept the input.
1042 \(Actually, INITIAL can also be a cons of a string and an integer.
1043 Such values are treated as in `read-from-minibuffer', but are normally
1044 not useful in this function.)
1045 Third arg INHERIT-INPUT-METHOD, if non-nil, means the minibuffer inherits
1046 the current input method and the setting of`enable-multibyte-characters'. */)
1047 (Lisp_Object prompt, Lisp_Object initial, Lisp_Object inherit_input_method)
1049 CHECK_STRING (prompt);
1050 return read_minibuf (Vminibuffer_local_ns_map, initial, prompt,
1051 0, Qminibuffer_history, make_number (0), Qnil, 0,
1052 !NILP (inherit_input_method));
1055 DEFUN ("read-command", Fread_command, Sread_command, 1, 2, 0,
1056 doc: /* Read the name of a command and return as a symbol.
1057 Prompt with PROMPT. By default, return DEFAULT-VALUE or its first element
1058 if it is a list. */)
1059 (Lisp_Object prompt, Lisp_Object default_value)
1061 Lisp_Object name, default_string;
1063 if (NILP (default_value))
1064 default_string = Qnil;
1065 else if (SYMBOLP (default_value))
1066 default_string = SYMBOL_NAME (default_value);
1067 else
1068 default_string = default_value;
1070 name = Fcompleting_read (prompt, Vobarray, Qcommandp, Qt,
1071 Qnil, Qnil, default_string, Qnil);
1072 if (NILP (name))
1073 return name;
1074 return Fintern (name, Qnil);
1077 #ifdef NOTDEF
1078 DEFUN ("read-function", Fread_function, Sread_function, 1, 1, 0,
1079 doc: /* One arg PROMPT, a string. Read the name of a function and return as a symbol.
1080 Prompt with PROMPT. */)
1081 (Lisp_Object prompt)
1083 return Fintern (Fcompleting_read (prompt, Vobarray, Qfboundp, Qt, Qnil, Qnil, Qnil, Qnil),
1084 Qnil);
1086 #endif /* NOTDEF */
1088 DEFUN ("read-variable", Fread_variable, Sread_variable, 1, 2, 0,
1089 doc: /* Read the name of a user option and return it as a symbol.
1090 Prompt with PROMPT. By default, return DEFAULT-VALUE or its first element
1091 if it is a list.
1092 A user option, or customizable variable, is one for which
1093 `custom-variable-p' returns non-nil. */)
1094 (Lisp_Object prompt, Lisp_Object default_value)
1096 Lisp_Object name, default_string;
1098 if (NILP (default_value))
1099 default_string = Qnil;
1100 else if (SYMBOLP (default_value))
1101 default_string = SYMBOL_NAME (default_value);
1102 else
1103 default_string = default_value;
1105 name = Fcompleting_read (prompt, Vobarray,
1106 Qcustom_variable_p, Qt,
1107 Qnil, Qnil, default_string, Qnil);
1108 if (NILP (name))
1109 return name;
1110 return Fintern (name, Qnil);
1113 DEFUN ("read-buffer", Fread_buffer, Sread_buffer, 1, 3, 0,
1114 doc: /* Read the name of a buffer and return as a string.
1115 Prompt with PROMPT.
1116 Optional second arg DEF is value to return if user enters an empty line.
1117 If DEF is a list of default values, return its first element.
1118 Optional third arg REQUIRE-MATCH determines whether non-existing
1119 buffer names are allowed. It has the same meaning as the
1120 REQUIRE-MATCH argument of `completing-read'.
1121 The argument PROMPT should be a string ending with a colon and a space.
1122 If `read-buffer-completion-ignore-case' is non-nil, completion ignores
1123 case while reading the buffer name.
1124 If `read-buffer-function' is non-nil, this works by calling it as a
1125 function, instead of the usual behavior. */)
1126 (Lisp_Object prompt, Lisp_Object def, Lisp_Object require_match)
1128 Lisp_Object args[4], result;
1129 char *s;
1130 ptrdiff_t len;
1131 ptrdiff_t count = SPECPDL_INDEX ();
1133 if (BUFFERP (def))
1134 def = BVAR (XBUFFER (def), name);
1136 specbind (Qcompletion_ignore_case,
1137 read_buffer_completion_ignore_case ? Qt : Qnil);
1139 if (NILP (Vread_buffer_function))
1141 if (!NILP (def))
1143 /* A default value was provided: we must change PROMPT,
1144 editing the default value in before the colon. To achieve
1145 this, we replace PROMPT with a substring that doesn't
1146 contain the terminal space and colon (if present). They
1147 are then added back using Fformat. */
1149 if (STRINGP (prompt))
1151 s = SSDATA (prompt);
1152 len = SBYTES (prompt);
1153 if (len >= 2 && s[len - 2] == ':' && s[len - 1] == ' ')
1154 len = len - 2;
1155 else if (len >= 1 && (s[len - 1] == ':' || s[len - 1] == ' '))
1156 len--;
1158 prompt = make_specified_string (s, -1, len,
1159 STRING_MULTIBYTE (prompt));
1162 args[0] = build_string ("%s (default %s): ");
1163 args[1] = prompt;
1164 args[2] = CONSP (def) ? XCAR (def) : def;
1165 prompt = Fformat (3, args);
1168 result = Fcompleting_read (prompt, intern ("internal-complete-buffer"),
1169 Qnil, require_match, Qnil,
1170 Qbuffer_name_history, def, Qnil);
1172 else
1174 args[0] = Vread_buffer_function;
1175 args[1] = prompt;
1176 args[2] = def;
1177 args[3] = require_match;
1178 result = Ffuncall (4, args);
1180 return unbind_to (count, result);
1183 static Lisp_Object
1184 minibuf_conform_representation (Lisp_Object string, Lisp_Object basis)
1186 if (STRING_MULTIBYTE (string) == STRING_MULTIBYTE (basis))
1187 return string;
1189 if (STRING_MULTIBYTE (string))
1190 return Fstring_make_unibyte (string);
1191 else
1192 return Fstring_make_multibyte (string);
1195 DEFUN ("try-completion", Ftry_completion, Stry_completion, 2, 3, 0,
1196 doc: /* Return common substring of all completions of STRING in COLLECTION.
1197 Test each possible completion specified by COLLECTION
1198 to see if it begins with STRING. The possible completions may be
1199 strings or symbols. Symbols are converted to strings before testing,
1200 see `symbol-name'.
1201 All that match STRING are compared together; the longest initial sequence
1202 common to all these matches is the return value.
1203 If there is no match at all, the return value is nil.
1204 For a unique match which is exact, the return value is t.
1206 If COLLECTION is an alist, the keys (cars of elements) are the
1207 possible completions. If an element is not a cons cell, then the
1208 element itself is the possible completion.
1209 If COLLECTION is a hash-table, all the keys that are strings or symbols
1210 are the possible completions.
1211 If COLLECTION is an obarray, the names of all symbols in the obarray
1212 are the possible completions.
1214 COLLECTION can also be a function to do the completion itself.
1215 It receives three arguments: the values STRING, PREDICATE and nil.
1216 Whatever it returns becomes the value of `try-completion'.
1218 If optional third argument PREDICATE is non-nil,
1219 it is used to test each possible match.
1220 The match is a candidate only if PREDICATE returns non-nil.
1221 The argument given to PREDICATE is the alist element
1222 or the symbol from the obarray. If COLLECTION is a hash-table,
1223 predicate is called with two arguments: the key and the value.
1224 Additionally to this predicate, `completion-regexp-list'
1225 is used to further constrain the set of candidates. */)
1226 (Lisp_Object string, Lisp_Object collection, Lisp_Object predicate)
1228 Lisp_Object bestmatch, tail, elt, eltstring;
1229 /* Size in bytes of BESTMATCH. */
1230 ptrdiff_t bestmatchsize = 0;
1231 /* These are in bytes, too. */
1232 ptrdiff_t compare, matchsize;
1233 enum { function_table, list_table, obarray_table, hash_table}
1234 type = (HASH_TABLE_P (collection) ? hash_table
1235 : VECTORP (collection) ? obarray_table
1236 : ((NILP (collection)
1237 || (CONSP (collection) && !FUNCTIONP (collection)))
1238 ? list_table : function_table));
1239 ptrdiff_t idx = 0, obsize = 0;
1240 int matchcount = 0;
1241 ptrdiff_t bindcount = -1;
1242 Lisp_Object bucket, zero, end, tem;
1243 struct gcpro gcpro1, gcpro2, gcpro3, gcpro4;
1245 CHECK_STRING (string);
1246 if (type == function_table)
1247 return call3 (collection, string, predicate, Qnil);
1249 bestmatch = bucket = Qnil;
1250 zero = make_number (0);
1252 /* If COLLECTION is not a list, set TAIL just for gc pro. */
1253 tail = collection;
1254 if (type == obarray_table)
1256 collection = check_obarray (collection);
1257 obsize = ASIZE (collection);
1258 bucket = AREF (collection, idx);
1261 while (1)
1263 /* Get the next element of the alist, obarray, or hash-table. */
1264 /* Exit the loop if the elements are all used up. */
1265 /* elt gets the alist element or symbol.
1266 eltstring gets the name to check as a completion. */
1268 if (type == list_table)
1270 if (!CONSP (tail))
1271 break;
1272 elt = XCAR (tail);
1273 eltstring = CONSP (elt) ? XCAR (elt) : elt;
1274 tail = XCDR (tail);
1276 else if (type == obarray_table)
1278 if (!EQ (bucket, zero))
1280 if (!SYMBOLP (bucket))
1281 error ("Bad data in guts of obarray");
1282 elt = bucket;
1283 eltstring = elt;
1284 if (XSYMBOL (bucket)->next)
1285 XSETSYMBOL (bucket, XSYMBOL (bucket)->next);
1286 else
1287 XSETFASTINT (bucket, 0);
1289 else if (++idx >= obsize)
1290 break;
1291 else
1293 bucket = AREF (collection, idx);
1294 continue;
1297 else /* if (type == hash_table) */
1299 while (idx < HASH_TABLE_SIZE (XHASH_TABLE (collection))
1300 && NILP (HASH_HASH (XHASH_TABLE (collection), idx)))
1301 idx++;
1302 if (idx >= HASH_TABLE_SIZE (XHASH_TABLE (collection)))
1303 break;
1304 else
1305 elt = eltstring = HASH_KEY (XHASH_TABLE (collection), idx++);
1308 /* Is this element a possible completion? */
1310 if (SYMBOLP (eltstring))
1311 eltstring = Fsymbol_name (eltstring);
1313 if (STRINGP (eltstring)
1314 && SCHARS (string) <= SCHARS (eltstring)
1315 && (tem = Fcompare_strings (eltstring, zero,
1316 make_number (SCHARS (string)),
1317 string, zero, Qnil,
1318 completion_ignore_case ? Qt : Qnil),
1319 EQ (Qt, tem)))
1321 /* Yes. */
1322 Lisp_Object regexps;
1324 /* Ignore this element if it fails to match all the regexps. */
1326 for (regexps = Vcompletion_regexp_list; CONSP (regexps);
1327 regexps = XCDR (regexps))
1329 if (bindcount < 0) {
1330 bindcount = SPECPDL_INDEX ();
1331 specbind (Qcase_fold_search,
1332 completion_ignore_case ? Qt : Qnil);
1334 tem = Fstring_match (XCAR (regexps), eltstring, zero);
1335 if (NILP (tem))
1336 break;
1338 if (CONSP (regexps))
1339 continue;
1342 /* Ignore this element if there is a predicate
1343 and the predicate doesn't like it. */
1345 if (!NILP (predicate))
1347 if (EQ (predicate, Qcommandp))
1348 tem = Fcommandp (elt, Qnil);
1349 else
1351 if (bindcount >= 0)
1353 unbind_to (bindcount, Qnil);
1354 bindcount = -1;
1356 GCPRO4 (tail, string, eltstring, bestmatch);
1357 tem = (type == hash_table
1358 ? call2 (predicate, elt,
1359 HASH_VALUE (XHASH_TABLE (collection),
1360 idx - 1))
1361 : call1 (predicate, elt));
1362 UNGCPRO;
1364 if (NILP (tem)) continue;
1367 /* Update computation of how much all possible completions match */
1369 if (NILP (bestmatch))
1371 matchcount = 1;
1372 bestmatch = eltstring;
1373 bestmatchsize = SCHARS (eltstring);
1375 else
1377 compare = min (bestmatchsize, SCHARS (eltstring));
1378 tem = Fcompare_strings (bestmatch, zero,
1379 make_number (compare),
1380 eltstring, zero,
1381 make_number (compare),
1382 completion_ignore_case ? Qt : Qnil);
1383 matchsize = EQ (tem, Qt) ? compare : eabs (XINT (tem)) - 1;
1385 if (completion_ignore_case)
1387 /* If this is an exact match except for case,
1388 use it as the best match rather than one that is not an
1389 exact match. This way, we get the case pattern
1390 of the actual match. */
1391 if ((matchsize == SCHARS (eltstring)
1392 && matchsize < SCHARS (bestmatch))
1394 /* If there is more than one exact match ignoring case,
1395 and one of them is exact including case,
1396 prefer that one. */
1397 /* If there is no exact match ignoring case,
1398 prefer a match that does not change the case
1399 of the input. */
1400 ((matchsize == SCHARS (eltstring))
1402 (matchsize == SCHARS (bestmatch))
1403 && (tem = Fcompare_strings (eltstring, zero,
1404 make_number (SCHARS (string)),
1405 string, zero,
1406 Qnil,
1407 Qnil),
1408 EQ (Qt, tem))
1409 && (tem = Fcompare_strings (bestmatch, zero,
1410 make_number (SCHARS (string)),
1411 string, zero,
1412 Qnil,
1413 Qnil),
1414 ! EQ (Qt, tem))))
1415 bestmatch = eltstring;
1417 if (bestmatchsize != SCHARS (eltstring)
1418 || bestmatchsize != matchsize)
1419 /* Don't count the same string multiple times. */
1420 matchcount += matchcount <= 1;
1421 bestmatchsize = matchsize;
1422 if (matchsize <= SCHARS (string)
1423 /* If completion-ignore-case is non-nil, don't
1424 short-circuit because we want to find the best
1425 possible match *including* case differences. */
1426 && !completion_ignore_case
1427 && matchcount > 1)
1428 /* No need to look any further. */
1429 break;
1434 if (bindcount >= 0) {
1435 unbind_to (bindcount, Qnil);
1436 bindcount = -1;
1439 if (NILP (bestmatch))
1440 return Qnil; /* No completions found. */
1441 /* If we are ignoring case, and there is no exact match,
1442 and no additional text was supplied,
1443 don't change the case of what the user typed. */
1444 if (completion_ignore_case && bestmatchsize == SCHARS (string)
1445 && SCHARS (bestmatch) > bestmatchsize)
1446 return minibuf_conform_representation (string, bestmatch);
1448 /* Return t if the supplied string is an exact match (counting case);
1449 it does not require any change to be made. */
1450 if (matchcount == 1 && !NILP (Fequal (bestmatch, string)))
1451 return Qt;
1453 XSETFASTINT (zero, 0); /* Else extract the part in which */
1454 XSETFASTINT (end, bestmatchsize); /* all completions agree. */
1455 return Fsubstring (bestmatch, zero, end);
1458 DEFUN ("all-completions", Fall_completions, Sall_completions, 2, 4, 0,
1459 doc: /* Search for partial matches to STRING in COLLECTION.
1460 Test each of the possible completions specified by COLLECTION
1461 to see if it begins with STRING. The possible completions may be
1462 strings or symbols. Symbols are converted to strings before testing,
1463 see `symbol-name'.
1464 The value is a list of all the possible completions that match STRING.
1466 If COLLECTION is an alist, the keys (cars of elements) are the
1467 possible completions. If an element is not a cons cell, then the
1468 element itself is the possible completion.
1469 If COLLECTION is a hash-table, all the keys that are strings or symbols
1470 are the possible completions.
1471 If COLLECTION is an obarray, the names of all symbols in the obarray
1472 are the possible completions.
1474 COLLECTION can also be a function to do the completion itself.
1475 It receives three arguments: the values STRING, PREDICATE and t.
1476 Whatever it returns becomes the value of `all-completions'.
1478 If optional third argument PREDICATE is non-nil,
1479 it is used to test each possible match.
1480 The match is a candidate only if PREDICATE returns non-nil.
1481 The argument given to PREDICATE is the alist element
1482 or the symbol from the obarray. If COLLECTION is a hash-table,
1483 predicate is called with two arguments: the key and the value.
1484 Additionally to this predicate, `completion-regexp-list'
1485 is used to further constrain the set of candidates.
1487 An obsolete optional fourth argument HIDE-SPACES is still accepted for
1488 backward compatibility. If non-nil, strings in COLLECTION that start
1489 with a space are ignored unless STRING itself starts with a space. */)
1490 (Lisp_Object string, Lisp_Object collection, Lisp_Object predicate, Lisp_Object hide_spaces)
1492 Lisp_Object tail, elt, eltstring;
1493 Lisp_Object allmatches;
1494 int type = HASH_TABLE_P (collection) ? 3
1495 : VECTORP (collection) ? 2
1496 : NILP (collection) || (CONSP (collection) && !FUNCTIONP (collection));
1497 ptrdiff_t idx = 0, obsize = 0;
1498 ptrdiff_t bindcount = -1;
1499 Lisp_Object bucket, tem, zero;
1500 struct gcpro gcpro1, gcpro2, gcpro3, gcpro4;
1502 CHECK_STRING (string);
1503 if (type == 0)
1504 return call3 (collection, string, predicate, Qt);
1505 allmatches = bucket = Qnil;
1506 zero = make_number (0);
1508 /* If COLLECTION is not a list, set TAIL just for gc pro. */
1509 tail = collection;
1510 if (type == 2)
1512 collection = check_obarray (collection);
1513 obsize = ASIZE (collection);
1514 bucket = AREF (collection, idx);
1517 while (1)
1519 /* Get the next element of the alist, obarray, or hash-table. */
1520 /* Exit the loop if the elements are all used up. */
1521 /* elt gets the alist element or symbol.
1522 eltstring gets the name to check as a completion. */
1524 if (type == 1)
1526 if (!CONSP (tail))
1527 break;
1528 elt = XCAR (tail);
1529 eltstring = CONSP (elt) ? XCAR (elt) : elt;
1530 tail = XCDR (tail);
1532 else if (type == 2)
1534 if (!EQ (bucket, zero))
1536 if (!SYMBOLP (bucket))
1537 error ("Bad data in guts of obarray");
1538 elt = bucket;
1539 eltstring = elt;
1540 if (XSYMBOL (bucket)->next)
1541 XSETSYMBOL (bucket, XSYMBOL (bucket)->next);
1542 else
1543 XSETFASTINT (bucket, 0);
1545 else if (++idx >= obsize)
1546 break;
1547 else
1549 bucket = AREF (collection, idx);
1550 continue;
1553 else /* if (type == 3) */
1555 while (idx < HASH_TABLE_SIZE (XHASH_TABLE (collection))
1556 && NILP (HASH_HASH (XHASH_TABLE (collection), idx)))
1557 idx++;
1558 if (idx >= HASH_TABLE_SIZE (XHASH_TABLE (collection)))
1559 break;
1560 else
1561 elt = eltstring = HASH_KEY (XHASH_TABLE (collection), idx++);
1564 /* Is this element a possible completion? */
1566 if (SYMBOLP (eltstring))
1567 eltstring = Fsymbol_name (eltstring);
1569 if (STRINGP (eltstring)
1570 && SCHARS (string) <= SCHARS (eltstring)
1571 /* If HIDE_SPACES, reject alternatives that start with space
1572 unless the input starts with space. */
1573 && (NILP (hide_spaces)
1574 || (SBYTES (string) > 0
1575 && SREF (string, 0) == ' ')
1576 || SREF (eltstring, 0) != ' ')
1577 && (tem = Fcompare_strings (eltstring, zero,
1578 make_number (SCHARS (string)),
1579 string, zero,
1580 make_number (SCHARS (string)),
1581 completion_ignore_case ? Qt : Qnil),
1582 EQ (Qt, tem)))
1584 /* Yes. */
1585 Lisp_Object regexps;
1587 /* Ignore this element if it fails to match all the regexps. */
1589 for (regexps = Vcompletion_regexp_list; CONSP (regexps);
1590 regexps = XCDR (regexps))
1592 if (bindcount < 0) {
1593 bindcount = SPECPDL_INDEX ();
1594 specbind (Qcase_fold_search,
1595 completion_ignore_case ? Qt : Qnil);
1597 tem = Fstring_match (XCAR (regexps), eltstring, zero);
1598 if (NILP (tem))
1599 break;
1601 if (CONSP (regexps))
1602 continue;
1605 /* Ignore this element if there is a predicate
1606 and the predicate doesn't like it. */
1608 if (!NILP (predicate))
1610 if (EQ (predicate, Qcommandp))
1611 tem = Fcommandp (elt, Qnil);
1612 else
1614 if (bindcount >= 0) {
1615 unbind_to (bindcount, Qnil);
1616 bindcount = -1;
1618 GCPRO4 (tail, eltstring, allmatches, string);
1619 tem = type == 3
1620 ? call2 (predicate, elt,
1621 HASH_VALUE (XHASH_TABLE (collection), idx - 1))
1622 : call1 (predicate, elt);
1623 UNGCPRO;
1625 if (NILP (tem)) continue;
1627 /* Ok => put it on the list. */
1628 allmatches = Fcons (eltstring, allmatches);
1632 if (bindcount >= 0) {
1633 unbind_to (bindcount, Qnil);
1634 bindcount = -1;
1637 return Fnreverse (allmatches);
1640 DEFUN ("completing-read", Fcompleting_read, Scompleting_read, 2, 8, 0,
1641 doc: /* Read a string in the minibuffer, with completion.
1642 PROMPT is a string to prompt with; normally it ends in a colon and a space.
1643 COLLECTION can be a list of strings, an alist, an obarray or a hash table.
1644 COLLECTION can also be a function to do the completion itself.
1645 PREDICATE limits completion to a subset of COLLECTION.
1646 See `try-completion' and `all-completions' for more details
1647 on completion, COLLECTION, and PREDICATE.
1649 REQUIRE-MATCH can take the following values:
1650 - t means that the user is not allowed to exit unless
1651 the input is (or completes to) an element of COLLECTION or is null.
1652 - nil means that the user can exit with any input.
1653 - `confirm' means that the user can exit with any input, but she needs
1654 to confirm her choice if the input is not an element of COLLECTION.
1655 - `confirm-after-completion' means that the user can exit with any
1656 input, but she needs to confirm her choice if she called
1657 `minibuffer-complete' right before `minibuffer-complete-and-exit'
1658 and the input is not an element of COLLECTION.
1659 - anything else behaves like t except that typing RET does not exit if it
1660 does non-null completion.
1662 If the input is null, `completing-read' returns DEF, or the first element
1663 of the list of default values, or an empty string if DEF is nil,
1664 regardless of the value of REQUIRE-MATCH.
1666 If INITIAL-INPUT is non-nil, insert it in the minibuffer initially,
1667 with point positioned at the end.
1668 If it is (STRING . POSITION), the initial input is STRING, but point
1669 is placed at _zero-indexed_ position POSITION in STRING. (*Note*
1670 that this is different from `read-from-minibuffer' and related
1671 functions, which use one-indexing for POSITION.) This feature is
1672 deprecated--it is best to pass nil for INITIAL-INPUT and supply the
1673 default value DEF instead. The user can yank the default value into
1674 the minibuffer easily using \\<minibuffer-local-map>\\[next-history-element].
1676 HIST, if non-nil, specifies a history list and optionally the initial
1677 position in the list. It can be a symbol, which is the history list
1678 variable to use, or it can be a cons cell (HISTVAR . HISTPOS). In
1679 that case, HISTVAR is the history list variable to use, and HISTPOS
1680 is the initial position (the position in the list used by the
1681 minibuffer history commands). For consistency, you should also
1682 specify that element of the history as the value of
1683 INITIAL-INPUT. (This is the only case in which you should use
1684 INITIAL-INPUT instead of DEF.) Positions are counted starting from
1685 1 at the beginning of the list. The variable `history-length'
1686 controls the maximum length of a history list.
1688 DEF, if non-nil, is the default value or the list of default values.
1690 If INHERIT-INPUT-METHOD is non-nil, the minibuffer inherits
1691 the current input method and the setting of `enable-multibyte-characters'.
1693 Completion ignores case if the ambient value of
1694 `completion-ignore-case' is non-nil.
1696 See also `completing-read-function'. */)
1697 (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)
1699 Lisp_Object args[9];
1700 args[0] = Fsymbol_value (intern ("completing-read-function"));
1701 args[1] = prompt;
1702 args[2] = collection;
1703 args[3] = predicate;
1704 args[4] = require_match;
1705 args[5] = initial_input;
1706 args[6] = hist;
1707 args[7] = def;
1708 args[8] = inherit_input_method;
1709 return Ffuncall (9, args);
1712 /* Test whether TXT is an exact completion. */
1713 DEFUN ("test-completion", Ftest_completion, Stest_completion, 2, 3, 0,
1714 doc: /* Return non-nil if STRING is a valid completion.
1715 Takes the same arguments as `all-completions' and `try-completion'.
1716 If COLLECTION is a function, it is called with three arguments:
1717 the values STRING, PREDICATE and `lambda'. */)
1718 (Lisp_Object string, Lisp_Object collection, Lisp_Object predicate)
1720 Lisp_Object regexps, tail, tem = Qnil;
1721 ptrdiff_t i = 0;
1723 CHECK_STRING (string);
1725 if (NILP (collection) || (CONSP (collection) && !FUNCTIONP (collection)))
1727 tem = Fassoc_string (string, collection, completion_ignore_case ? Qt : Qnil);
1728 if (NILP (tem))
1729 return Qnil;
1731 else if (VECTORP (collection))
1733 /* Bypass intern-soft as that loses for nil. */
1734 tem = oblookup (collection,
1735 SSDATA (string),
1736 SCHARS (string),
1737 SBYTES (string));
1738 if (!SYMBOLP (tem))
1740 if (STRING_MULTIBYTE (string))
1741 string = Fstring_make_unibyte (string);
1742 else
1743 string = Fstring_make_multibyte (string);
1745 tem = oblookup (collection,
1746 SSDATA (string),
1747 SCHARS (string),
1748 SBYTES (string));
1751 if (completion_ignore_case && !SYMBOLP (tem))
1753 for (i = ASIZE (collection) - 1; i >= 0; i--)
1755 tail = AREF (collection, i);
1756 if (SYMBOLP (tail))
1757 while (1)
1759 if (EQ (Fcompare_strings (string, make_number (0), Qnil,
1760 Fsymbol_name (tail),
1761 make_number (0) , Qnil, Qt),
1762 Qt))
1764 tem = tail;
1765 break;
1767 if (XSYMBOL (tail)->next == 0)
1768 break;
1769 XSETSYMBOL (tail, XSYMBOL (tail)->next);
1774 if (!SYMBOLP (tem))
1775 return Qnil;
1777 else if (HASH_TABLE_P (collection))
1779 struct Lisp_Hash_Table *h = XHASH_TABLE (collection);
1780 Lisp_Object key = Qnil;
1781 i = hash_lookup (h, string, NULL);
1782 if (i >= 0)
1783 tem = HASH_KEY (h, i);
1784 else
1785 for (i = 0; i < HASH_TABLE_SIZE (h); ++i)
1786 if (!NILP (HASH_HASH (h, i))
1787 && (key = HASH_KEY (h, i),
1788 SYMBOLP (key) ? key = Fsymbol_name (key) : key,
1789 STRINGP (key))
1790 && EQ (Fcompare_strings (string, make_number (0), Qnil,
1791 key, make_number (0) , Qnil,
1792 completion_ignore_case ? Qt : Qnil),
1793 Qt))
1795 tem = key;
1796 break;
1798 if (!STRINGP (tem))
1799 return Qnil;
1801 else
1802 return call3 (collection, string, predicate, Qlambda);
1804 /* Reject this element if it fails to match all the regexps. */
1805 if (CONSP (Vcompletion_regexp_list))
1807 ptrdiff_t count = SPECPDL_INDEX ();
1808 specbind (Qcase_fold_search, completion_ignore_case ? Qt : Qnil);
1809 for (regexps = Vcompletion_regexp_list; CONSP (regexps);
1810 regexps = XCDR (regexps))
1812 if (NILP (Fstring_match (XCAR (regexps),
1813 SYMBOLP (tem) ? string : tem,
1814 Qnil)))
1815 return unbind_to (count, Qnil);
1817 unbind_to (count, Qnil);
1820 /* Finally, check the predicate. */
1821 if (!NILP (predicate))
1823 return HASH_TABLE_P (collection)
1824 ? call2 (predicate, tem, HASH_VALUE (XHASH_TABLE (collection), i))
1825 : call1 (predicate, tem);
1827 else
1828 return Qt;
1831 static Lisp_Object Qmetadata;
1833 DEFUN ("internal-complete-buffer", Finternal_complete_buffer, Sinternal_complete_buffer, 3, 3, 0,
1834 doc: /* Perform completion on buffer names.
1835 STRING and PREDICATE have the same meanings as in `try-completion',
1836 `all-completions', and `test-completion'.
1838 If FLAG is nil, invoke `try-completion'; if it is t, invoke
1839 `all-completions'; otherwise invoke `test-completion'. */)
1840 (Lisp_Object string, Lisp_Object predicate, Lisp_Object flag)
1842 if (NILP (flag))
1843 return Ftry_completion (string, Vbuffer_alist, predicate);
1844 else if (EQ (flag, Qt))
1846 Lisp_Object res = Fall_completions (string, Vbuffer_alist, predicate, Qnil);
1847 if (SCHARS (string) > 0)
1848 return res;
1849 else
1850 { /* Strip out internal buffers. */
1851 Lisp_Object bufs = res;
1852 /* First, look for a non-internal buffer in `res'. */
1853 while (CONSP (bufs) && SREF (XCAR (bufs), 0) == ' ')
1854 bufs = XCDR (bufs);
1855 if (NILP (bufs))
1856 return (EQ (Flength (res), Flength (Vbuffer_alist))
1857 /* If all bufs are internal don't strip them out. */
1858 ? res : bufs);
1859 res = bufs;
1860 while (CONSP (XCDR (bufs)))
1861 if (SREF (XCAR (XCDR (bufs)), 0) == ' ')
1862 XSETCDR (bufs, XCDR (XCDR (bufs)));
1863 else
1864 bufs = XCDR (bufs);
1865 return res;
1868 else if (EQ (flag, Qlambda))
1869 return Ftest_completion (string, Vbuffer_alist, predicate);
1870 else if (EQ (flag, Qmetadata))
1871 return list2 (Qmetadata, Fcons (Qcategory, Qbuffer));
1872 else
1873 return Qnil;
1876 /* Like assoc but assumes KEY is a string, and ignores case if appropriate. */
1878 DEFUN ("assoc-string", Fassoc_string, Sassoc_string, 2, 3, 0,
1879 doc: /* Like `assoc' but specifically for strings (and symbols).
1881 This returns the first element of LIST whose car matches the string or
1882 symbol KEY, or nil if no match exists. When performing the
1883 comparison, symbols are first converted to strings, and unibyte
1884 strings to multibyte. If the optional arg CASE-FOLD is non-nil, case
1885 is ignored.
1887 Unlike `assoc', KEY can also match an entry in LIST consisting of a
1888 single string, rather than a cons cell whose car is a string. */)
1889 (register Lisp_Object key, Lisp_Object list, Lisp_Object case_fold)
1891 register Lisp_Object tail;
1893 if (SYMBOLP (key))
1894 key = Fsymbol_name (key);
1896 for (tail = list; CONSP (tail); tail = XCDR (tail))
1898 register Lisp_Object elt, tem, thiscar;
1899 elt = XCAR (tail);
1900 thiscar = CONSP (elt) ? XCAR (elt) : elt;
1901 if (SYMBOLP (thiscar))
1902 thiscar = Fsymbol_name (thiscar);
1903 else if (!STRINGP (thiscar))
1904 continue;
1905 tem = Fcompare_strings (thiscar, make_number (0), Qnil,
1906 key, make_number (0), Qnil,
1907 case_fold);
1908 if (EQ (tem, Qt))
1909 return elt;
1910 QUIT;
1912 return Qnil;
1916 DEFUN ("minibuffer-depth", Fminibuffer_depth, Sminibuffer_depth, 0, 0, 0,
1917 doc: /* Return current depth of activations of minibuffer, a nonnegative integer. */)
1918 (void)
1920 return make_number (minibuf_level);
1923 DEFUN ("minibuffer-prompt", Fminibuffer_prompt, Sminibuffer_prompt, 0, 0, 0,
1924 doc: /* Return the prompt string of the currently-active minibuffer.
1925 If no minibuffer is active, return nil. */)
1926 (void)
1928 return Fcopy_sequence (minibuf_prompt);
1932 void
1933 init_minibuf_once (void)
1935 Vminibuffer_list = Qnil;
1936 staticpro (&Vminibuffer_list);
1939 void
1940 syms_of_minibuf (void)
1942 minibuf_level = 0;
1943 minibuf_prompt = Qnil;
1944 staticpro (&minibuf_prompt);
1946 minibuf_save_list = Qnil;
1947 staticpro (&minibuf_save_list);
1949 DEFSYM (Qcompletion_ignore_case, "completion-ignore-case");
1950 DEFSYM (Qread_file_name_internal, "read-file-name-internal");
1951 DEFSYM (Qminibuffer_default, "minibuffer-default");
1952 Fset (Qminibuffer_default, Qnil);
1954 DEFSYM (Qminibuffer_completion_table, "minibuffer-completion-table");
1955 DEFSYM (Qminibuffer_completion_confirm, "minibuffer-completion-confirm");
1956 DEFSYM (Qminibuffer_completion_predicate, "minibuffer-completion-predicate");
1958 staticpro (&last_minibuf_string);
1959 last_minibuf_string = Qnil;
1961 DEFSYM (Qminibuffer_history, "minibuffer-history");
1962 DEFSYM (Qbuffer_name_history, "buffer-name-history");
1963 Fset (Qbuffer_name_history, Qnil);
1965 DEFSYM (Qcustom_variable_p, "custom-variable-p");
1966 DEFSYM (Qminibuffer_setup_hook, "minibuffer-setup-hook");
1967 DEFSYM (Qminibuffer_exit_hook, "minibuffer-exit-hook");
1968 DEFSYM (Qhistory_length, "history-length");
1969 DEFSYM (Qcurrent_input_method, "current-input-method");
1970 DEFSYM (Qactivate_input_method, "activate-input-method");
1971 DEFSYM (Qcase_fold_search, "case-fold-search");
1972 DEFSYM (Qmetadata, "metadata");
1974 DEFVAR_LISP ("read-expression-history", Vread_expression_history,
1975 doc: /* A history list for arguments that are Lisp expressions to evaluate.
1976 For example, `eval-expression' uses this. */);
1977 Vread_expression_history = Qnil;
1979 DEFSYM (Qread_expression_history, "read-expression-history");
1981 DEFVAR_LISP ("read-buffer-function", Vread_buffer_function,
1982 doc: /* If this is non-nil, `read-buffer' does its work by calling this function.
1983 The function is called with the arguments passed to `read-buffer'. */);
1984 Vread_buffer_function = Qnil;
1986 DEFVAR_BOOL ("read-buffer-completion-ignore-case",
1987 read_buffer_completion_ignore_case,
1988 doc: /* Non-nil means completion ignores case when reading a buffer name. */);
1989 read_buffer_completion_ignore_case = 0;
1991 DEFVAR_LISP ("minibuffer-setup-hook", Vminibuffer_setup_hook,
1992 doc: /* Normal hook run just after entry to minibuffer. */);
1993 Vminibuffer_setup_hook = Qnil;
1995 DEFVAR_LISP ("minibuffer-exit-hook", Vminibuffer_exit_hook,
1996 doc: /* Normal hook run just after exit from minibuffer. */);
1997 Vminibuffer_exit_hook = Qnil;
1999 DEFVAR_LISP ("history-length", Vhistory_length,
2000 doc: /* Maximum length of history lists before truncation takes place.
2001 A number means truncate to that length; truncation deletes old
2002 elements, and is done just after inserting a new element.
2003 A value of t means no truncation.
2005 This variable only affects history lists that don't specify their own
2006 maximum lengths. Setting the `history-length' property of a history
2007 variable overrides this default. */);
2008 XSETFASTINT (Vhistory_length, 100);
2010 DEFVAR_BOOL ("history-delete-duplicates", history_delete_duplicates,
2011 doc: /* Non-nil means to delete duplicates in history.
2012 If set to t when adding a new history element, all previous identical
2013 elements are deleted from the history list. */);
2014 history_delete_duplicates = 0;
2016 DEFVAR_LISP ("history-add-new-input", Vhistory_add_new_input,
2017 doc: /* Non-nil means to add new elements in history.
2018 If set to nil, minibuffer reading functions don't add new elements to the
2019 history list, so it is possible to do this afterwards by calling
2020 `add-to-history' explicitly. */);
2021 Vhistory_add_new_input = Qt;
2023 DEFVAR_BOOL ("completion-ignore-case", completion_ignore_case,
2024 doc: /* Non-nil means don't consider case significant in completion.
2025 For file-name completion, `read-file-name-completion-ignore-case'
2026 controls the behavior, rather than this variable.
2027 For buffer name completion, `read-buffer-completion-ignore-case'
2028 controls the behavior, rather than this variable. */);
2029 completion_ignore_case = 0;
2031 DEFVAR_BOOL ("enable-recursive-minibuffers", enable_recursive_minibuffers,
2032 doc: /* Non-nil means to allow minibuffer commands while in the minibuffer.
2033 This variable makes a difference whenever the minibuffer window is active. */);
2034 enable_recursive_minibuffers = 0;
2036 DEFVAR_LISP ("minibuffer-completion-table", Vminibuffer_completion_table,
2037 doc: /* Alist or obarray used for completion in the minibuffer.
2038 This becomes the ALIST argument to `try-completion' and `all-completions'.
2039 The value can also be a list of strings or a hash table.
2041 The value may alternatively be a function, which is given three arguments:
2042 STRING, the current buffer contents;
2043 PREDICATE, the predicate for filtering possible matches;
2044 CODE, which says what kind of things to do.
2045 CODE can be nil, t or `lambda':
2046 nil -- return the best completion of STRING, or nil if there is none.
2047 t -- return a list of all possible completions of STRING.
2048 lambda -- return t if STRING is a valid completion as it stands. */);
2049 Vminibuffer_completion_table = Qnil;
2051 DEFVAR_LISP ("minibuffer-completion-predicate", Vminibuffer_completion_predicate,
2052 doc: /* Within call to `completing-read', this holds the PREDICATE argument. */);
2053 Vminibuffer_completion_predicate = Qnil;
2055 DEFVAR_LISP ("minibuffer-completion-confirm", Vminibuffer_completion_confirm,
2056 doc: /* Whether to demand confirmation of completion before exiting minibuffer.
2057 If nil, confirmation is not required.
2058 If the value is `confirm', the user may exit with an input that is not
2059 a valid completion alternative, but Emacs asks for confirmation.
2060 If the value is `confirm-after-completion', the user may exit with an
2061 input that is not a valid completion alternative, but Emacs asks for
2062 confirmation if the user submitted the input right after any of the
2063 completion commands listed in `minibuffer-confirm-exit-commands'. */);
2064 Vminibuffer_completion_confirm = Qnil;
2066 DEFVAR_LISP ("minibuffer-completing-file-name",
2067 Vminibuffer_completing_file_name,
2068 doc: /* Non-nil means completing file names. */);
2069 Vminibuffer_completing_file_name = Qnil;
2071 DEFVAR_LISP ("minibuffer-help-form", Vminibuffer_help_form,
2072 doc: /* Value that `help-form' takes on inside the minibuffer. */);
2073 Vminibuffer_help_form = Qnil;
2075 DEFVAR_LISP ("minibuffer-history-variable", Vminibuffer_history_variable,
2076 doc: /* History list symbol to add minibuffer values to.
2077 Each string of minibuffer input, as it appears on exit from the minibuffer,
2078 is added with
2079 (set minibuffer-history-variable
2080 (cons STRING (symbol-value minibuffer-history-variable))) */);
2081 XSETFASTINT (Vminibuffer_history_variable, 0);
2083 DEFVAR_LISP ("minibuffer-history-position", Vminibuffer_history_position,
2084 doc: /* Current position of redoing in the history list. */);
2085 Vminibuffer_history_position = Qnil;
2087 DEFVAR_BOOL ("minibuffer-auto-raise", minibuffer_auto_raise,
2088 doc: /* Non-nil means entering the minibuffer raises the minibuffer's frame.
2089 Some uses of the echo area also raise that frame (since they use it too). */);
2090 minibuffer_auto_raise = 0;
2092 DEFVAR_LISP ("completion-regexp-list", Vcompletion_regexp_list,
2093 doc: /* List of regexps that should restrict possible completions.
2094 The basic completion functions only consider a completion acceptable
2095 if it matches all regular expressions in this list, with
2096 `case-fold-search' bound to the value of `completion-ignore-case'.
2097 See Info node `(elisp)Basic Completion', for a description of these
2098 functions. */);
2099 Vcompletion_regexp_list = Qnil;
2101 DEFVAR_BOOL ("minibuffer-allow-text-properties",
2102 minibuffer_allow_text_properties,
2103 doc: /* Non-nil means `read-from-minibuffer' should not discard text properties.
2104 This also affects `read-string', but it does not affect `read-minibuffer',
2105 `read-no-blanks-input', or any of the functions that do minibuffer input
2106 with completion; they always discard text properties. */);
2107 minibuffer_allow_text_properties = 0;
2109 DEFVAR_LISP ("minibuffer-prompt-properties", Vminibuffer_prompt_properties,
2110 doc: /* Text properties that are added to minibuffer prompts.
2111 These are in addition to the basic `field' property, and stickiness
2112 properties. */);
2113 /* We use `intern' here instead of Qread_only to avoid
2114 initialization-order problems. */
2115 Vminibuffer_prompt_properties = list2 (intern_c_string ("read-only"), Qt);
2117 DEFVAR_LISP ("read-hide-char", Vread_hide_char,
2118 doc: /* Whether to hide input characters in noninteractive mode.
2119 It must be a character, which will be used to mask the input
2120 characters. This variable should never be set globally. */);
2121 Vread_hide_char = Qnil;
2123 defsubr (&Sactive_minibuffer_window);
2124 defsubr (&Sset_minibuffer_window);
2125 defsubr (&Sread_from_minibuffer);
2126 defsubr (&Sread_string);
2127 defsubr (&Sread_command);
2128 defsubr (&Sread_variable);
2129 defsubr (&Sinternal_complete_buffer);
2130 defsubr (&Sread_buffer);
2131 defsubr (&Sread_no_blanks_input);
2132 defsubr (&Sminibuffer_depth);
2133 defsubr (&Sminibuffer_prompt);
2135 defsubr (&Sminibufferp);
2136 defsubr (&Sminibuffer_prompt_end);
2137 defsubr (&Sminibuffer_contents);
2138 defsubr (&Sminibuffer_contents_no_properties);
2139 defsubr (&Sminibuffer_completion_contents);
2141 defsubr (&Stry_completion);
2142 defsubr (&Sall_completions);
2143 defsubr (&Stest_completion);
2144 defsubr (&Sassoc_string);
2145 defsubr (&Scompleting_read);