Reorder conditions that are written backwards
[emacs.git] / src / minibuf.c
blobe4f819068733ef67847faefbb0e14e68c1b9cfb9
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 #include <binary-io.h>
27 #include "lisp.h"
28 #include "commands.h"
29 #include "character.h"
30 #include "buffer.h"
31 #include "dispextern.h"
32 #include "keyboard.h"
33 #include "frame.h"
34 #include "window.h"
35 #include "syntax.h"
36 #include "intervals.h"
37 #include "keymap.h"
38 #include "termhooks.h"
39 #include "systty.h"
41 /* List of buffers for use as minibuffers.
42 The first element of the list is used for the outermost minibuffer
43 invocation, the next element is used for a recursive minibuffer
44 invocation, etc. The list is extended at the end as deeper
45 minibuffer recursions are encountered. */
47 Lisp_Object Vminibuffer_list;
49 /* Data to remember during recursive minibuffer invocations. */
51 static Lisp_Object minibuf_save_list;
53 /* Depth in minibuffer invocations. */
55 EMACS_INT minibuf_level;
57 /* The maximum length of a minibuffer history. */
59 static Lisp_Object Qhistory_length;
61 /* Fread_minibuffer leaves the input here as a string. */
63 Lisp_Object last_minibuf_string;
65 static Lisp_Object Qminibuffer_history, Qbuffer_name_history;
67 static Lisp_Object Qread_file_name_internal;
69 /* Normal hooks for entry to and exit from minibuffer. */
71 static Lisp_Object Qminibuffer_setup_hook;
72 static Lisp_Object Qminibuffer_exit_hook;
74 Lisp_Object Qcompletion_ignore_case;
75 static Lisp_Object Qminibuffer_completion_table;
76 static Lisp_Object Qminibuffer_completion_predicate;
77 static Lisp_Object Qminibuffer_completion_confirm;
78 static Lisp_Object Qcustom_variable_p;
80 static Lisp_Object Qminibuffer_default;
82 static Lisp_Object Qcurrent_input_method, Qactivate_input_method;
84 static Lisp_Object Qcase_fold_search;
86 static Lisp_Object Qread_expression_history;
88 /* Prompt to display in front of the mini-buffer contents. */
90 static Lisp_Object minibuf_prompt;
92 /* Width of current mini-buffer prompt. Only set after display_line
93 of the line that contains the prompt. */
95 static ptrdiff_t minibuf_prompt_width;
98 /* Put minibuf on currently selected frame's minibuffer.
99 We do this whenever the user starts a new minibuffer
100 or when a minibuffer exits. */
102 static void
103 choose_minibuf_frame (void)
105 if (FRAMEP (selected_frame)
106 && FRAME_LIVE_P (XFRAME (selected_frame))
107 && !EQ (minibuf_window, XFRAME (selected_frame)->minibuffer_window))
109 struct frame *sf = XFRAME (selected_frame);
110 Lisp_Object buffer;
112 /* I don't think that any frames may validly have a null minibuffer
113 window anymore. */
114 if (NILP (sf->minibuffer_window))
115 emacs_abort ();
117 /* Under X, we come here with minibuf_window being the
118 minibuffer window of the unused termcap window created in
119 init_window_once. That window doesn't have a buffer. */
120 buffer = XWINDOW (minibuf_window)->contents;
121 if (BUFFERP (buffer))
122 /* Use set_window_buffer instead of Fset_window_buffer (see
123 discussion of bug#11984, bug#12025, bug#12026). */
124 set_window_buffer (sf->minibuffer_window, buffer, 0, 0);
125 minibuf_window = sf->minibuffer_window;
128 /* Make sure no other frame has a minibuffer as its selected window,
129 because the text would not be displayed in it, and that would be
130 confusing. Only allow the selected frame to do this,
131 and that only if the minibuffer is active. */
133 Lisp_Object tail, frame;
135 FOR_EACH_FRAME (tail, frame)
136 if (MINI_WINDOW_P (XWINDOW (FRAME_SELECTED_WINDOW (XFRAME (frame))))
137 && !(EQ (frame, selected_frame)
138 && minibuf_level > 0))
139 Fset_frame_selected_window (frame, Fframe_first_window (frame), Qnil);
143 DEFUN ("active-minibuffer-window", Factive_minibuffer_window,
144 Sactive_minibuffer_window, 0, 0, 0,
145 doc: /* Return the currently active minibuffer window, or nil if none. */)
146 (void)
148 return minibuf_level ? minibuf_window : Qnil;
151 DEFUN ("set-minibuffer-window", Fset_minibuffer_window,
152 Sset_minibuffer_window, 1, 1, 0,
153 doc: /* Specify which minibuffer window to use for the minibuffer.
154 This affects where the minibuffer is displayed if you put text in it
155 without invoking the usual minibuffer commands. */)
156 (Lisp_Object window)
158 CHECK_WINDOW (window);
159 if (! MINI_WINDOW_P (XWINDOW (window)))
160 error ("Window is not a minibuffer window");
162 minibuf_window = window;
164 return window;
168 /* Actual minibuffer invocation. */
170 static void read_minibuf_unwind (void);
171 static void run_exit_minibuf_hook (void);
174 /* Read a Lisp object from VAL and return it. If VAL is an empty
175 string, and DEFALT is a string, read from DEFALT instead of VAL. */
177 static Lisp_Object
178 string_to_object (Lisp_Object val, Lisp_Object defalt)
180 struct gcpro gcpro1, gcpro2;
181 Lisp_Object expr_and_pos;
182 ptrdiff_t pos;
184 GCPRO2 (val, defalt);
186 if (STRINGP (val) && SCHARS (val) == 0)
188 if (STRINGP (defalt))
189 val = defalt;
190 else if (CONSP (defalt) && STRINGP (XCAR (defalt)))
191 val = XCAR (defalt);
194 expr_and_pos = Fread_from_string (val, Qnil, Qnil);
195 pos = XINT (Fcdr (expr_and_pos));
196 if (pos != SCHARS (val))
198 /* Ignore trailing whitespace; any other trailing junk
199 is an error. */
200 ptrdiff_t i;
201 pos = string_char_to_byte (val, pos);
202 for (i = pos; i < SBYTES (val); i++)
204 int c = SREF (val, i);
205 if (c != ' ' && c != '\t' && c != '\n')
206 error ("Trailing garbage following expression");
210 val = Fcar (expr_and_pos);
211 RETURN_UNGCPRO (val);
215 /* Like read_minibuf but reading from stdin. This function is called
216 from read_minibuf to do the job if noninteractive. */
218 static Lisp_Object
219 read_minibuf_noninteractive (Lisp_Object map, Lisp_Object initial,
220 Lisp_Object prompt, Lisp_Object backup_n,
221 bool expflag,
222 Lisp_Object histvar, Lisp_Object histpos,
223 Lisp_Object defalt,
224 bool allow_props, bool inherit_input_method)
226 ptrdiff_t size, len;
227 char *line;
228 Lisp_Object val;
229 int c;
230 unsigned char hide_char = 0;
231 struct emacs_tty etty;
232 bool etty_valid;
234 /* Check, whether we need to suppress echoing. */
235 if (CHARACTERP (Vread_hide_char))
236 hide_char = XFASTINT (Vread_hide_char);
238 /* Manipulate tty. */
239 if (hide_char)
241 etty_valid = emacs_get_tty (fileno (stdin), &etty) == 0;
242 if (etty_valid)
243 set_binary_mode (fileno (stdin), O_BINARY);
244 suppress_echo_on_tty (fileno (stdin));
247 fprintf (stdout, "%s", SDATA (prompt));
248 fflush (stdout);
250 val = Qnil;
251 size = 100;
252 len = 0;
253 line = xmalloc (size);
255 while ((c = getchar ()) != '\n' && c != '\r')
257 if (c == EOF)
259 if (errno != EINTR)
260 break;
262 else
264 if (hide_char)
265 fprintf (stdout, "%c", hide_char);
266 if (len == size)
268 if (size > STRING_BYTES_BOUND / 2)
269 memory_full (SIZE_MAX);
270 size *= 2;
271 line = xrealloc (line, size);
273 line[len++] = c;
277 /* Reset tty. */
278 if (hide_char)
280 fprintf (stdout, "\n");
281 if (etty_valid)
283 emacs_set_tty (fileno (stdin), &etty, 0);
284 set_binary_mode (fileno (stdin), O_TEXT);
288 if (len || c == '\n' || c == '\r')
290 val = make_string (line, len);
291 xfree (line);
293 else
295 xfree (line);
296 error ("Error reading from stdin");
299 /* If Lisp form desired instead of string, parse it. */
300 if (expflag)
301 val = string_to_object (val, CONSP (defalt) ? XCAR (defalt) : defalt);
303 return val;
306 DEFUN ("minibufferp", Fminibufferp,
307 Sminibufferp, 0, 1, 0,
308 doc: /* Return t if BUFFER is a minibuffer.
309 No argument or nil as argument means use current buffer as BUFFER.
310 BUFFER can be a buffer or a buffer name. */)
311 (Lisp_Object buffer)
313 Lisp_Object tem;
315 if (NILP (buffer))
316 buffer = Fcurrent_buffer ();
317 else if (STRINGP (buffer))
318 buffer = Fget_buffer (buffer);
319 else
320 CHECK_BUFFER (buffer);
322 tem = Fmemq (buffer, Vminibuffer_list);
323 return ! NILP (tem) ? Qt : Qnil;
326 DEFUN ("minibuffer-prompt-end", Fminibuffer_prompt_end,
327 Sminibuffer_prompt_end, 0, 0, 0,
328 doc: /* Return the buffer position of the end of the minibuffer prompt.
329 Return (point-min) if current buffer is not a minibuffer. */)
330 (void)
332 /* This function is written to be most efficient when there's a prompt. */
333 Lisp_Object beg, end, tem;
334 beg = make_number (BEGV);
336 tem = Fmemq (Fcurrent_buffer (), Vminibuffer_list);
337 if (NILP (tem))
338 return beg;
340 end = Ffield_end (beg, Qnil, Qnil);
342 if (XINT (end) == ZV && NILP (Fget_char_property (beg, Qfield, Qnil)))
343 return beg;
344 else
345 return end;
348 DEFUN ("minibuffer-contents", Fminibuffer_contents,
349 Sminibuffer_contents, 0, 0, 0,
350 doc: /* Return the user input in a minibuffer as a string.
351 If the current buffer is not a minibuffer, return its entire contents. */)
352 (void)
354 ptrdiff_t prompt_end = XINT (Fminibuffer_prompt_end ());
355 return make_buffer_string (prompt_end, ZV, 1);
358 DEFUN ("minibuffer-contents-no-properties", Fminibuffer_contents_no_properties,
359 Sminibuffer_contents_no_properties, 0, 0, 0,
360 doc: /* Return the user input in a minibuffer as a string, without text-properties.
361 If the current buffer is not a minibuffer, return its entire contents. */)
362 (void)
364 ptrdiff_t prompt_end = XINT (Fminibuffer_prompt_end ());
365 return make_buffer_string (prompt_end, ZV, 0);
368 DEFUN ("minibuffer-completion-contents", Fminibuffer_completion_contents,
369 Sminibuffer_completion_contents, 0, 0, 0,
370 doc: /* Return the user input in a minibuffer before point as a string.
371 That is what completion commands operate on.
372 If the current buffer is not a minibuffer, return its entire contents. */)
373 (void)
375 ptrdiff_t prompt_end = XINT (Fminibuffer_prompt_end ());
376 if (PT < prompt_end)
377 error ("Cannot do completion in the prompt");
378 return make_buffer_string (prompt_end, PT, 1);
382 /* Read from the minibuffer using keymap MAP and initial contents INITIAL,
383 putting point minus BACKUP_N bytes from the end of INITIAL,
384 prompting with PROMPT (a string), using history list HISTVAR
385 with initial position HISTPOS. INITIAL should be a string or a
386 cons of a string and an integer. BACKUP_N should be <= 0, or
387 Qnil, which is equivalent to 0. If INITIAL is a cons, BACKUP_N is
388 ignored and replaced with an integer that puts point at one-indexed
389 position N in INITIAL, where N is the CDR of INITIAL, or at the
390 beginning of INITIAL if N <= 0.
392 Normally return the result as a string (the text that was read),
393 but if EXPFLAG, read it and return the object read.
394 If HISTVAR is given, save the value read on that history only if it doesn't
395 match the front of that history list exactly. The value is pushed onto
396 the list as the string that was read.
398 DEFALT specifies the default value for the sake of history commands.
400 If ALLOW_PROPS, do not throw away text properties.
402 if INHERIT_INPUT_METHOD, the minibuffer inherits the
403 current input method. */
405 static Lisp_Object
406 read_minibuf (Lisp_Object map, Lisp_Object initial, Lisp_Object prompt,
407 bool expflag,
408 Lisp_Object histvar, Lisp_Object histpos, Lisp_Object defalt,
409 bool allow_props, bool inherit_input_method)
411 Lisp_Object val;
412 ptrdiff_t count = SPECPDL_INDEX ();
413 Lisp_Object mini_frame, ambient_dir, minibuffer, input_method;
414 struct gcpro gcpro1, gcpro2, gcpro3, gcpro4, gcpro5;
415 Lisp_Object enable_multibyte;
416 EMACS_INT pos = 0;
417 /* String to add to the history. */
418 Lisp_Object histstring;
419 Lisp_Object histval;
421 Lisp_Object empty_minibuf;
422 Lisp_Object dummy, frame;
424 specbind (Qminibuffer_default, defalt);
425 specbind (intern ("inhibit-read-only"), Qnil);
427 /* If Vminibuffer_completing_file_name is `lambda' on entry, it was t
428 in previous recursive minibuffer, but was not set explicitly
429 to t for this invocation, so set it to nil in this minibuffer.
430 Save the old value now, before we change it. */
431 specbind (intern ("minibuffer-completing-file-name"),
432 Vminibuffer_completing_file_name);
433 if (EQ (Vminibuffer_completing_file_name, Qlambda))
434 Vminibuffer_completing_file_name = Qnil;
436 #ifdef HAVE_WINDOW_SYSTEM
437 if (display_hourglass_p)
438 cancel_hourglass ();
439 #endif
441 if (!NILP (initial))
443 if (CONSP (initial))
445 Lisp_Object backup_n = XCDR (initial);
446 initial = XCAR (initial);
447 CHECK_STRING (initial);
448 if (!NILP (backup_n))
450 CHECK_NUMBER (backup_n);
451 /* Convert to distance from end of input. */
452 if (XINT (backup_n) < 1)
453 /* A number too small means the beginning of the string. */
454 pos = - SCHARS (initial);
455 else
456 pos = XINT (backup_n) - 1 - SCHARS (initial);
459 else
460 CHECK_STRING (initial);
462 val = Qnil;
463 ambient_dir = BVAR (current_buffer, directory);
464 input_method = Qnil;
465 enable_multibyte = Qnil;
467 /* Don't need to protect PROMPT, HISTVAR, and HISTPOS because we
468 store them away before we can GC. Don't need to protect
469 BACKUP_N because we use the value only if it is an integer. */
470 GCPRO5 (map, initial, val, ambient_dir, input_method);
472 if (!STRINGP (prompt))
473 prompt = empty_unibyte_string;
475 if (!enable_recursive_minibuffers
476 && minibuf_level > 0)
478 if (EQ (selected_window, minibuf_window))
479 error ("Command attempted to use minibuffer while in minibuffer");
480 else
481 /* If we're in another window, cancel the minibuffer that's active. */
482 Fthrow (Qexit,
483 build_string ("Command attempted to use minibuffer while in minibuffer"));
486 if ((noninteractive
487 /* In case we are running as a daemon, only do this before
488 detaching from the terminal. */
489 || (IS_DAEMON && (daemon_pipe[1] >= 0)))
490 && NILP (Vexecuting_kbd_macro))
492 val = read_minibuf_noninteractive (map, initial, prompt,
493 make_number (pos),
494 expflag, histvar, histpos, defalt,
495 allow_props, inherit_input_method);
496 UNGCPRO;
497 return unbind_to (count, val);
500 /* Choose the minibuffer window and frame, and take action on them. */
502 /* Prepare for restoring the current buffer since choose_minibuf_frame
503 calling Fset_frame_selected_window may change it (Bug#12766). */
504 record_unwind_protect (restore_buffer, Fcurrent_buffer ());
506 choose_minibuf_frame ();
508 record_unwind_protect_void (choose_minibuf_frame);
510 record_unwind_protect (restore_window_configuration,
511 Fcurrent_window_configuration (Qnil));
513 /* If the minibuffer window is on a different frame, save that
514 frame's configuration too. */
515 mini_frame = WINDOW_FRAME (XWINDOW (minibuf_window));
516 if (!EQ (mini_frame, selected_frame))
517 record_unwind_protect (restore_window_configuration,
518 Fcurrent_window_configuration (mini_frame));
520 /* If the minibuffer is on an iconified or invisible frame,
521 make it visible now. */
522 Fmake_frame_visible (mini_frame);
524 if (minibuffer_auto_raise)
525 Fraise_frame (mini_frame);
527 temporarily_switch_to_single_kboard (XFRAME (mini_frame));
529 /* We have to do this after saving the window configuration
530 since that is what restores the current buffer. */
532 /* Arrange to restore a number of minibuffer-related variables.
533 We could bind each variable separately, but that would use lots of
534 specpdl slots. */
535 minibuf_save_list
536 = Fcons (Voverriding_local_map,
537 Fcons (minibuf_window,
538 minibuf_save_list));
539 minibuf_save_list
540 = Fcons (minibuf_prompt,
541 Fcons (make_number (minibuf_prompt_width),
542 Fcons (Vhelp_form,
543 Fcons (Vcurrent_prefix_arg,
544 Fcons (Vminibuffer_history_position,
545 Fcons (Vminibuffer_history_variable,
546 minibuf_save_list))))));
548 record_unwind_protect_void (read_minibuf_unwind);
549 minibuf_level++;
550 /* We are exiting the minibuffer one way or the other, so run the hook.
551 It should be run before unwinding the minibuf settings. Do it
552 separately from read_minibuf_unwind because we need to make sure that
553 read_minibuf_unwind is fully executed even if exit-minibuffer-hook
554 signals an error. --Stef */
555 record_unwind_protect_void (run_exit_minibuf_hook);
557 /* Now that we can restore all those variables, start changing them. */
559 minibuf_prompt_width = 0;
560 minibuf_prompt = Fcopy_sequence (prompt);
561 Vminibuffer_history_position = histpos;
562 Vminibuffer_history_variable = histvar;
563 Vhelp_form = Vminibuffer_help_form;
564 /* If this minibuffer is reading a file name, that doesn't mean
565 recursive ones are. But we cannot set it to nil, because
566 completion code still need to know the minibuffer is completing a
567 file name. So use `lambda' as intermediate value meaning
568 "t" in this minibuffer, but "nil" in next minibuffer. */
569 if (!NILP (Vminibuffer_completing_file_name))
570 Vminibuffer_completing_file_name = Qlambda;
572 /* If variable is unbound, make it nil. */
573 histval = find_symbol_value (Vminibuffer_history_variable);
574 if (EQ (histval, Qunbound))
576 Fset (Vminibuffer_history_variable, Qnil);
577 histval = Qnil;
580 if (inherit_input_method)
582 /* `current-input-method' is buffer local. So, remember it in
583 INPUT_METHOD before changing the current buffer. */
584 input_method = Fsymbol_value (Qcurrent_input_method);
585 enable_multibyte = BVAR (current_buffer, enable_multibyte_characters);
588 /* Switch to the minibuffer. */
590 minibuffer = get_minibuffer (minibuf_level);
591 Fset_buffer (minibuffer);
593 /* Defeat (setq-default truncate-lines t), since truncated lines do
594 not work correctly in minibuffers. (Bug#5715, etc) */
595 bset_truncate_lines (current_buffer, Qnil);
597 /* If appropriate, copy enable-multibyte-characters into the minibuffer. */
598 if (inherit_input_method)
599 bset_enable_multibyte_characters (current_buffer, enable_multibyte);
601 /* The current buffer's default directory is usually the right thing
602 for our minibuffer here. However, if you're typing a command at
603 a minibuffer-only frame when minibuf_level is zero, then buf IS
604 the current_buffer, so reset_buffer leaves buf's default
605 directory unchanged. This is a bummer when you've just started
606 up Emacs and buf's default directory is Qnil. Here's a hack; can
607 you think of something better to do? Find another buffer with a
608 better directory, and use that one instead. */
609 if (STRINGP (ambient_dir))
610 bset_directory (current_buffer, ambient_dir);
611 else
613 Lisp_Object tail, buf;
615 FOR_EACH_LIVE_BUFFER (tail, buf)
616 if (STRINGP (BVAR (XBUFFER (buf), directory)))
618 bset_directory (current_buffer,
619 BVAR (XBUFFER (buf), directory));
620 break;
624 if (!EQ (mini_frame, selected_frame))
625 Fredirect_frame_focus (selected_frame, mini_frame);
627 Vminibuf_scroll_window = selected_window;
628 if (minibuf_level == 1 || !EQ (minibuf_window, selected_window))
629 minibuf_selected_window = selected_window;
631 /* Empty out the minibuffers of all frames other than the one
632 where we are going to display one now.
633 Set them to point to ` *Minibuf-0*', which is always empty. */
634 empty_minibuf = get_minibuffer (0);
636 FOR_EACH_FRAME (dummy, frame)
638 Lisp_Object root_window = Fframe_root_window (frame);
639 Lisp_Object mini_window = XWINDOW (root_window)->next;
641 if (! NILP (mini_window) && ! EQ (mini_window, minibuf_window)
642 && !NILP (Fwindow_minibuffer_p (mini_window)))
643 /* Use set_window_buffer instead of Fset_window_buffer (see
644 discussion of bug#11984, bug#12025, bug#12026). */
645 set_window_buffer (mini_window, empty_minibuf, 0, 0);
648 /* Display this minibuffer in the proper window. */
649 /* Use set_window_buffer instead of Fset_window_buffer (see
650 discussion of bug#11984, bug#12025, bug#12026). */
651 set_window_buffer (minibuf_window, Fcurrent_buffer (), 0, 0);
652 Fselect_window (minibuf_window, Qnil);
653 XWINDOW (minibuf_window)->hscroll = 0;
655 Fmake_local_variable (Qprint_escape_newlines);
656 print_escape_newlines = 1;
658 /* Erase the buffer. */
660 ptrdiff_t count1 = SPECPDL_INDEX ();
661 specbind (Qinhibit_read_only, Qt);
662 specbind (Qinhibit_modification_hooks, Qt);
663 Ferase_buffer ();
665 if (!NILP (BVAR (current_buffer, enable_multibyte_characters))
666 && ! STRING_MULTIBYTE (minibuf_prompt))
667 minibuf_prompt = Fstring_make_multibyte (minibuf_prompt);
669 /* Insert the prompt, record where it ends. */
670 Finsert (1, &minibuf_prompt);
671 if (PT > BEG)
673 Fput_text_property (make_number (BEG), make_number (PT),
674 Qfront_sticky, Qt, Qnil);
675 Fput_text_property (make_number (BEG), make_number (PT),
676 Qrear_nonsticky, Qt, Qnil);
677 Fput_text_property (make_number (BEG), make_number (PT),
678 Qfield, Qt, Qnil);
679 Fadd_text_properties (make_number (BEG), make_number (PT),
680 Vminibuffer_prompt_properties, Qnil);
682 unbind_to (count1, Qnil);
685 minibuf_prompt_width = current_column ();
687 /* Put in the initial input. */
688 if (!NILP (initial))
690 Finsert (1, &initial);
691 Fforward_char (make_number (pos));
694 clear_message (1, 1);
695 bset_keymap (current_buffer, map);
697 /* Turn on an input method stored in INPUT_METHOD if any. */
698 if (STRINGP (input_method) && !NILP (Ffboundp (Qactivate_input_method)))
699 call1 (Qactivate_input_method, input_method);
701 Frun_hooks (1, &Qminibuffer_setup_hook);
703 /* Don't allow the user to undo past this point. */
704 bset_undo_list (current_buffer, Qnil);
706 recursive_edit_1 ();
708 /* If cursor is on the minibuffer line,
709 show the user we have exited by putting it in column 0. */
710 if (XWINDOW (minibuf_window)->cursor.vpos >= 0
711 && !noninteractive)
713 XWINDOW (minibuf_window)->cursor.hpos = 0;
714 XWINDOW (minibuf_window)->cursor.x = 0;
715 XWINDOW (minibuf_window)->must_be_updated_p = 1;
716 update_frame (XFRAME (selected_frame), 1, 1);
717 flush_frame (XFRAME (XWINDOW (minibuf_window)->frame));
720 /* Make minibuffer contents into a string. */
721 Fset_buffer (minibuffer);
722 if (allow_props)
723 val = Fminibuffer_contents ();
724 else
725 val = Fminibuffer_contents_no_properties ();
727 /* VAL is the string of minibuffer text. */
729 last_minibuf_string = val;
731 /* Choose the string to add to the history. */
732 if (SCHARS (val) != 0)
733 histstring = val;
734 else if (STRINGP (defalt))
735 histstring = defalt;
736 else if (CONSP (defalt) && STRINGP (XCAR (defalt)))
737 histstring = XCAR (defalt);
738 else
739 histstring = Qnil;
741 /* Add the value to the appropriate history list, if any. */
742 if (!NILP (Vhistory_add_new_input)
743 && SYMBOLP (Vminibuffer_history_variable)
744 && !NILP (histstring))
746 /* If the caller wanted to save the value read on a history list,
747 then do so if the value is not already the front of the list. */
749 /* The value of the history variable must be a cons or nil. Other
750 values are unacceptable. We silently ignore these values. */
752 if (NILP (histval)
753 || (CONSP (histval)
754 /* Don't duplicate the most recent entry in the history. */
755 && (NILP (Fequal (histstring, Fcar (histval))))))
757 Lisp_Object length;
759 if (history_delete_duplicates) Fdelete (histstring, histval);
760 histval = Fcons (histstring, histval);
761 Fset (Vminibuffer_history_variable, histval);
763 /* Truncate if requested. */
764 length = Fget (Vminibuffer_history_variable, Qhistory_length);
765 if (NILP (length)) length = Vhistory_length;
766 if (INTEGERP (length))
768 if (XINT (length) <= 0)
769 Fset (Vminibuffer_history_variable, Qnil);
770 else
772 Lisp_Object temp;
774 temp = Fnthcdr (Fsub1 (length), histval);
775 if (CONSP (temp)) Fsetcdr (temp, Qnil);
781 /* If Lisp form desired instead of string, parse it. */
782 if (expflag)
783 val = string_to_object (val, defalt);
785 /* The appropriate frame will get selected
786 in set-window-configuration. */
787 UNGCPRO;
788 return unbind_to (count, val);
791 /* Return a buffer to be used as the minibuffer at depth `depth'.
792 depth = 0 is the lowest allowed argument, and that is the value
793 used for nonrecursive minibuffer invocations. */
795 Lisp_Object
796 get_minibuffer (EMACS_INT depth)
798 Lisp_Object tail, num, buf;
799 char name[sizeof " *Minibuf-*" + INT_STRLEN_BOUND (EMACS_INT)];
801 XSETFASTINT (num, depth);
802 tail = Fnthcdr (num, Vminibuffer_list);
803 if (NILP (tail))
805 tail = list1 (Qnil);
806 Vminibuffer_list = nconc2 (Vminibuffer_list, tail);
808 buf = Fcar (tail);
809 if (NILP (buf) || !BUFFER_LIVE_P (XBUFFER (buf)))
811 buf = Fget_buffer_create
812 (make_formatted_string (name, " *Minibuf-%"pI"d*", depth));
814 /* Although the buffer's name starts with a space, undo should be
815 enabled in it. */
816 Fbuffer_enable_undo (buf);
818 XSETCAR (tail, buf);
820 else
822 ptrdiff_t count = SPECPDL_INDEX ();
823 /* We have to empty both overlay lists. Otherwise we end
824 up with overlays that think they belong to this buffer
825 while the buffer doesn't know about them any more. */
826 delete_all_overlays (XBUFFER (buf));
827 reset_buffer (XBUFFER (buf));
828 record_unwind_current_buffer ();
829 Fset_buffer (buf);
830 if (!NILP (Ffboundp (intern ("minibuffer-inactive-mode"))))
831 call0 (intern ("minibuffer-inactive-mode"));
832 else
833 Fkill_all_local_variables ();
834 unbind_to (count, Qnil);
837 return buf;
840 static void
841 run_exit_minibuf_hook (void)
843 safe_run_hooks (Qminibuffer_exit_hook);
846 /* This function is called on exiting minibuffer, whether normally or
847 not, and it restores the current window, buffer, etc. */
849 static void
850 read_minibuf_unwind (void)
852 Lisp_Object old_deactivate_mark;
853 Lisp_Object window;
855 /* If this was a recursive minibuffer,
856 tie the minibuffer window back to the outer level minibuffer buffer. */
857 minibuf_level--;
859 window = minibuf_window;
860 /* To keep things predictable, in case it matters, let's be in the
861 minibuffer when we reset the relevant variables. */
862 Fset_buffer (XWINDOW (window)->contents);
864 /* Restore prompt, etc, from outer minibuffer level. */
865 minibuf_prompt = Fcar (minibuf_save_list);
866 minibuf_save_list = Fcdr (minibuf_save_list);
867 minibuf_prompt_width = XFASTINT (Fcar (minibuf_save_list));
868 minibuf_save_list = Fcdr (minibuf_save_list);
869 Vhelp_form = Fcar (minibuf_save_list);
870 minibuf_save_list = Fcdr (minibuf_save_list);
871 Vcurrent_prefix_arg = Fcar (minibuf_save_list);
872 minibuf_save_list = Fcdr (minibuf_save_list);
873 Vminibuffer_history_position = Fcar (minibuf_save_list);
874 minibuf_save_list = Fcdr (minibuf_save_list);
875 Vminibuffer_history_variable = Fcar (minibuf_save_list);
876 minibuf_save_list = Fcdr (minibuf_save_list);
877 Voverriding_local_map = Fcar (minibuf_save_list);
878 minibuf_save_list = Fcdr (minibuf_save_list);
879 #if 0
880 temp = Fcar (minibuf_save_list);
881 if (FRAME_LIVE_P (XFRAME (WINDOW_FRAME (XWINDOW (temp)))))
882 minibuf_window = temp;
883 #endif
884 minibuf_save_list = Fcdr (minibuf_save_list);
886 /* Erase the minibuffer we were using at this level. */
888 ptrdiff_t count = SPECPDL_INDEX ();
889 /* Prevent error in erase-buffer. */
890 specbind (Qinhibit_read_only, Qt);
891 specbind (Qinhibit_modification_hooks, Qt);
892 old_deactivate_mark = Vdeactivate_mark;
893 Ferase_buffer ();
894 Vdeactivate_mark = old_deactivate_mark;
895 unbind_to (count, Qnil);
898 /* When we get to the outmost level, make sure we resize the
899 mini-window back to its normal size. */
900 if (minibuf_level == 0)
901 resize_mini_window (XWINDOW (window), 0);
903 /* In case the previous minibuffer displayed in this miniwindow is
904 dead, we may keep displaying this buffer (tho it's inactive), so reset it,
905 to make sure we don't leave around bindings and stuff which only
906 made sense during the read_minibuf invocation. */
907 call0 (intern ("minibuffer-inactive-mode"));
911 DEFUN ("read-from-minibuffer", Fread_from_minibuffer,
912 Sread_from_minibuffer, 1, 7, 0,
913 doc: /* Read a string from the minibuffer, prompting with string PROMPT.
914 The optional second arg INITIAL-CONTENTS is an obsolete alternative to
915 DEFAULT-VALUE. It normally should be nil in new code, except when
916 HIST is a cons. It is discussed in more detail below.
918 Third arg KEYMAP is a keymap to use whilst reading;
919 if omitted or nil, the default is `minibuffer-local-map'.
921 If fourth arg READ is non-nil, interpret the result as a Lisp object
922 and return that object:
923 in other words, do `(car (read-from-string INPUT-STRING))'
925 Fifth arg HIST, if non-nil, specifies a history list and optionally
926 the initial position in the list. It can be a symbol, which is the
927 history list variable to use, or a cons cell (HISTVAR . HISTPOS).
928 In that case, HISTVAR is the history list variable to use, and
929 HISTPOS is the initial position for use by the minibuffer history
930 commands. For consistency, you should also specify that element of
931 the history as the value of INITIAL-CONTENTS. Positions are counted
932 starting from 1 at the beginning of the list.
934 Sixth arg DEFAULT-VALUE, if non-nil, should be a string, which is used
935 as the default to `read' if READ is non-nil and the user enters
936 empty input. But if READ is nil, this function does _not_ return
937 DEFAULT-VALUE for empty input! Instead, it returns the empty string.
939 Whatever the value of READ, DEFAULT-VALUE is made available via the
940 minibuffer history commands. DEFAULT-VALUE can also be a list of
941 strings, in which case all the strings are available in the history,
942 and the first string is the default to `read' if READ is non-nil.
944 Seventh arg INHERIT-INPUT-METHOD, if non-nil, means the minibuffer inherits
945 the current input method and the setting of `enable-multibyte-characters'.
947 If the variable `minibuffer-allow-text-properties' is non-nil,
948 then the string which is returned includes whatever text properties
949 were present in the minibuffer. Otherwise the value has no text properties.
951 The remainder of this documentation string describes the
952 INITIAL-CONTENTS argument in more detail. It is only relevant when
953 studying existing code, or when HIST is a cons. If non-nil,
954 INITIAL-CONTENTS is a string to be inserted into the minibuffer before
955 reading input. Normally, point is put at the end of that string.
956 However, if INITIAL-CONTENTS is \(STRING . POSITION), the initial
957 input is STRING, but point is placed at _one-indexed_ position
958 POSITION in the minibuffer. Any integer value less than or equal to
959 one puts point at the beginning of the string. *Note* that this
960 behavior differs from the way such arguments are used in `completing-read'
961 and some related functions, which use zero-indexing for POSITION. */)
962 (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)
964 Lisp_Object histvar, histpos, val;
965 struct gcpro gcpro1;
967 CHECK_STRING (prompt);
968 if (NILP (keymap))
969 keymap = Vminibuffer_local_map;
970 else
971 keymap = get_keymap (keymap, 1, 0);
973 if (SYMBOLP (hist))
975 histvar = hist;
976 histpos = Qnil;
978 else
980 histvar = Fcar_safe (hist);
981 histpos = Fcdr_safe (hist);
983 if (NILP (histvar))
984 histvar = Qminibuffer_history;
985 if (NILP (histpos))
986 XSETFASTINT (histpos, 0);
988 GCPRO1 (default_value);
989 val = read_minibuf (keymap, initial_contents, prompt,
990 !NILP (read),
991 histvar, histpos, default_value,
992 minibuffer_allow_text_properties,
993 !NILP (inherit_input_method));
994 UNGCPRO;
995 return val;
998 /* Functions that use the minibuffer to read various things. */
1000 DEFUN ("read-string", Fread_string, Sread_string, 1, 5, 0,
1001 doc: /* Read a string from the minibuffer, prompting with string PROMPT.
1002 If non-nil, second arg INITIAL-INPUT is a string to insert before reading.
1003 This argument has been superseded by DEFAULT-VALUE and should normally be nil
1004 in new code. It behaves as INITIAL-CONTENTS in `read-from-minibuffer' (which
1005 see).
1006 The third arg HISTORY, if non-nil, specifies a history list
1007 and optionally the initial position in the list.
1008 See `read-from-minibuffer' for details of HISTORY argument.
1009 Fourth arg DEFAULT-VALUE is the default value or the list of default values.
1010 If non-nil, it is used for history commands, and as the value (or the first
1011 element of the list of default values) to return if the user enters the
1012 empty string.
1013 Fifth arg INHERIT-INPUT-METHOD, if non-nil, means the minibuffer inherits
1014 the current input method and the setting of `enable-multibyte-characters'. */)
1015 (Lisp_Object prompt, Lisp_Object initial_input, Lisp_Object history, Lisp_Object default_value, Lisp_Object inherit_input_method)
1017 Lisp_Object val;
1018 ptrdiff_t count = SPECPDL_INDEX ();
1020 /* Just in case we're in a recursive minibuffer, make it clear that the
1021 previous minibuffer's completion table does not apply to the new
1022 minibuffer.
1023 FIXME: `minibuffer-completion-table' should be buffer-local instead. */
1024 specbind (Qminibuffer_completion_table, Qnil);
1026 val = Fread_from_minibuffer (prompt, initial_input, Qnil,
1027 Qnil, history, default_value,
1028 inherit_input_method);
1029 if (STRINGP (val) && SCHARS (val) == 0 && ! NILP (default_value))
1030 val = CONSP (default_value) ? XCAR (default_value) : default_value;
1031 return unbind_to (count, val);
1034 DEFUN ("read-no-blanks-input", Fread_no_blanks_input, Sread_no_blanks_input, 1, 3, 0,
1035 doc: /* Read a string from the terminal, not allowing blanks.
1036 Prompt with PROMPT. Whitespace terminates the input. If INITIAL is
1037 non-nil, it should be a string, which is used as initial input, with
1038 point positioned at the end, so that SPACE will accept the input.
1039 \(Actually, INITIAL can also be a cons of a string and an integer.
1040 Such values are treated as in `read-from-minibuffer', but are normally
1041 not useful in this function.)
1042 Third arg INHERIT-INPUT-METHOD, if non-nil, means the minibuffer inherits
1043 the current input method and the setting of`enable-multibyte-characters'. */)
1044 (Lisp_Object prompt, Lisp_Object initial, Lisp_Object inherit_input_method)
1046 CHECK_STRING (prompt);
1047 return read_minibuf (Vminibuffer_local_ns_map, initial, prompt,
1048 0, Qminibuffer_history, make_number (0), Qnil, 0,
1049 !NILP (inherit_input_method));
1052 DEFUN ("read-command", Fread_command, Sread_command, 1, 2, 0,
1053 doc: /* Read the name of a command and return as a symbol.
1054 Prompt with PROMPT. By default, return DEFAULT-VALUE or its first element
1055 if it is a list. */)
1056 (Lisp_Object prompt, Lisp_Object default_value)
1058 Lisp_Object name, default_string;
1060 if (NILP (default_value))
1061 default_string = Qnil;
1062 else if (SYMBOLP (default_value))
1063 default_string = SYMBOL_NAME (default_value);
1064 else
1065 default_string = default_value;
1067 name = Fcompleting_read (prompt, Vobarray, Qcommandp, Qt,
1068 Qnil, Qnil, default_string, Qnil);
1069 if (NILP (name))
1070 return name;
1071 return Fintern (name, Qnil);
1074 #ifdef NOTDEF
1075 DEFUN ("read-function", Fread_function, Sread_function, 1, 1, 0,
1076 doc: /* One arg PROMPT, a string. Read the name of a function and return as a symbol.
1077 Prompt with PROMPT. */)
1078 (Lisp_Object prompt)
1080 return Fintern (Fcompleting_read (prompt, Vobarray, Qfboundp, Qt, Qnil, Qnil, Qnil, Qnil),
1081 Qnil);
1083 #endif /* NOTDEF */
1085 DEFUN ("read-variable", Fread_variable, Sread_variable, 1, 2, 0,
1086 doc: /* Read the name of a user option and return it as a symbol.
1087 Prompt with PROMPT. By default, return DEFAULT-VALUE or its first element
1088 if it is a list.
1089 A user option, or customizable variable, is one for which
1090 `custom-variable-p' returns non-nil. */)
1091 (Lisp_Object prompt, Lisp_Object default_value)
1093 Lisp_Object name, default_string;
1095 if (NILP (default_value))
1096 default_string = Qnil;
1097 else if (SYMBOLP (default_value))
1098 default_string = SYMBOL_NAME (default_value);
1099 else
1100 default_string = default_value;
1102 name = Fcompleting_read (prompt, Vobarray,
1103 Qcustom_variable_p, Qt,
1104 Qnil, Qnil, default_string, Qnil);
1105 if (NILP (name))
1106 return name;
1107 return Fintern (name, Qnil);
1110 DEFUN ("read-buffer", Fread_buffer, Sread_buffer, 1, 3, 0,
1111 doc: /* Read the name of a buffer and return as a string.
1112 Prompt with PROMPT.
1113 Optional second arg DEF is value to return if user enters an empty line.
1114 If DEF is a list of default values, return its first element.
1115 Optional third arg REQUIRE-MATCH determines whether non-existing
1116 buffer names are allowed. It has the same meaning as the
1117 REQUIRE-MATCH argument of `completing-read'.
1118 The argument PROMPT should be a string ending with a colon and a space.
1119 If `read-buffer-completion-ignore-case' is non-nil, completion ignores
1120 case while reading the buffer name.
1121 If `read-buffer-function' is non-nil, this works by calling it as a
1122 function, instead of the usual behavior. */)
1123 (Lisp_Object prompt, Lisp_Object def, Lisp_Object require_match)
1125 Lisp_Object args[4], result;
1126 char *s;
1127 ptrdiff_t len;
1128 ptrdiff_t count = SPECPDL_INDEX ();
1130 if (BUFFERP (def))
1131 def = BVAR (XBUFFER (def), name);
1133 specbind (Qcompletion_ignore_case,
1134 read_buffer_completion_ignore_case ? Qt : Qnil);
1136 if (NILP (Vread_buffer_function))
1138 if (!NILP (def))
1140 /* A default value was provided: we must change PROMPT,
1141 editing the default value in before the colon. To achieve
1142 this, we replace PROMPT with a substring that doesn't
1143 contain the terminal space and colon (if present). They
1144 are then added back using Fformat. */
1146 if (STRINGP (prompt))
1148 s = SSDATA (prompt);
1149 len = SBYTES (prompt);
1150 if (len >= 2 && s[len - 2] == ':' && s[len - 1] == ' ')
1151 len = len - 2;
1152 else if (len >= 1 && (s[len - 1] == ':' || s[len - 1] == ' '))
1153 len--;
1155 prompt = make_specified_string (s, -1, len,
1156 STRING_MULTIBYTE (prompt));
1159 args[0] = build_string ("%s (default %s): ");
1160 args[1] = prompt;
1161 args[2] = CONSP (def) ? XCAR (def) : def;
1162 prompt = Fformat (3, args);
1165 result = Fcompleting_read (prompt, intern ("internal-complete-buffer"),
1166 Qnil, require_match, Qnil,
1167 Qbuffer_name_history, def, Qnil);
1169 else
1171 args[0] = Vread_buffer_function;
1172 args[1] = prompt;
1173 args[2] = def;
1174 args[3] = require_match;
1175 result = Ffuncall (4, args);
1177 return unbind_to (count, result);
1180 static Lisp_Object
1181 minibuf_conform_representation (Lisp_Object string, Lisp_Object basis)
1183 if (STRING_MULTIBYTE (string) == STRING_MULTIBYTE (basis))
1184 return string;
1186 if (STRING_MULTIBYTE (string))
1187 return Fstring_make_unibyte (string);
1188 else
1189 return Fstring_make_multibyte (string);
1192 DEFUN ("try-completion", Ftry_completion, Stry_completion, 2, 3, 0,
1193 doc: /* Return common substring of all completions of STRING in COLLECTION.
1194 Test each possible completion specified by COLLECTION
1195 to see if it begins with STRING. The possible completions may be
1196 strings or symbols. Symbols are converted to strings before testing,
1197 see `symbol-name'.
1198 All that match STRING are compared together; the longest initial sequence
1199 common to all these matches is the return value.
1200 If there is no match at all, the return value is nil.
1201 For a unique match which is exact, the return value is t.
1203 If COLLECTION is an alist, the keys (cars of elements) are the
1204 possible completions. If an element is not a cons cell, then the
1205 element itself is the possible completion.
1206 If COLLECTION is a hash-table, all the keys that are strings or symbols
1207 are the possible completions.
1208 If COLLECTION is an obarray, the names of all symbols in the obarray
1209 are the possible completions.
1211 COLLECTION can also be a function to do the completion itself.
1212 It receives three arguments: the values STRING, PREDICATE and nil.
1213 Whatever it returns becomes the value of `try-completion'.
1215 If optional third argument PREDICATE is non-nil,
1216 it is used to test each possible match.
1217 The match is a candidate only if PREDICATE returns non-nil.
1218 The argument given to PREDICATE is the alist element
1219 or the symbol from the obarray. If COLLECTION is a hash-table,
1220 predicate is called with two arguments: the key and the value.
1221 Additionally to this predicate, `completion-regexp-list'
1222 is used to further constrain the set of candidates. */)
1223 (Lisp_Object string, Lisp_Object collection, Lisp_Object predicate)
1225 Lisp_Object bestmatch, tail, elt, eltstring;
1226 /* Size in bytes of BESTMATCH. */
1227 ptrdiff_t bestmatchsize = 0;
1228 /* These are in bytes, too. */
1229 ptrdiff_t compare, matchsize;
1230 enum { function_table, list_table, obarray_table, hash_table}
1231 type = (HASH_TABLE_P (collection) ? hash_table
1232 : VECTORP (collection) ? obarray_table
1233 : ((NILP (collection)
1234 || (CONSP (collection) && !FUNCTIONP (collection)))
1235 ? list_table : function_table));
1236 ptrdiff_t idx = 0, obsize = 0;
1237 int matchcount = 0;
1238 ptrdiff_t bindcount = -1;
1239 Lisp_Object bucket, zero, end, tem;
1240 struct gcpro gcpro1, gcpro2, gcpro3, gcpro4;
1242 CHECK_STRING (string);
1243 if (type == function_table)
1244 return call3 (collection, string, predicate, Qnil);
1246 bestmatch = bucket = Qnil;
1247 zero = make_number (0);
1249 /* If COLLECTION is not a list, set TAIL just for gc pro. */
1250 tail = collection;
1251 if (type == obarray_table)
1253 collection = check_obarray (collection);
1254 obsize = ASIZE (collection);
1255 bucket = AREF (collection, idx);
1258 while (1)
1260 /* Get the next element of the alist, obarray, or hash-table. */
1261 /* Exit the loop if the elements are all used up. */
1262 /* elt gets the alist element or symbol.
1263 eltstring gets the name to check as a completion. */
1265 if (type == list_table)
1267 if (!CONSP (tail))
1268 break;
1269 elt = XCAR (tail);
1270 eltstring = CONSP (elt) ? XCAR (elt) : elt;
1271 tail = XCDR (tail);
1273 else if (type == obarray_table)
1275 if (!EQ (bucket, zero))
1277 if (!SYMBOLP (bucket))
1278 error ("Bad data in guts of obarray");
1279 elt = bucket;
1280 eltstring = elt;
1281 if (XSYMBOL (bucket)->next)
1282 XSETSYMBOL (bucket, XSYMBOL (bucket)->next);
1283 else
1284 XSETFASTINT (bucket, 0);
1286 else if (++idx >= obsize)
1287 break;
1288 else
1290 bucket = AREF (collection, idx);
1291 continue;
1294 else /* if (type == hash_table) */
1296 while (idx < HASH_TABLE_SIZE (XHASH_TABLE (collection))
1297 && NILP (HASH_HASH (XHASH_TABLE (collection), idx)))
1298 idx++;
1299 if (idx >= HASH_TABLE_SIZE (XHASH_TABLE (collection)))
1300 break;
1301 else
1302 elt = eltstring = HASH_KEY (XHASH_TABLE (collection), idx++);
1305 /* Is this element a possible completion? */
1307 if (SYMBOLP (eltstring))
1308 eltstring = Fsymbol_name (eltstring);
1310 if (STRINGP (eltstring)
1311 && SCHARS (string) <= SCHARS (eltstring)
1312 && (tem = Fcompare_strings (eltstring, zero,
1313 make_number (SCHARS (string)),
1314 string, zero, Qnil,
1315 completion_ignore_case ? Qt : Qnil),
1316 EQ (Qt, tem)))
1318 /* Yes. */
1319 Lisp_Object regexps;
1321 /* Ignore this element if it fails to match all the regexps. */
1323 for (regexps = Vcompletion_regexp_list; CONSP (regexps);
1324 regexps = XCDR (regexps))
1326 if (bindcount < 0) {
1327 bindcount = SPECPDL_INDEX ();
1328 specbind (Qcase_fold_search,
1329 completion_ignore_case ? Qt : Qnil);
1331 tem = Fstring_match (XCAR (regexps), eltstring, zero);
1332 if (NILP (tem))
1333 break;
1335 if (CONSP (regexps))
1336 continue;
1339 /* Ignore this element if there is a predicate
1340 and the predicate doesn't like it. */
1342 if (!NILP (predicate))
1344 if (EQ (predicate, Qcommandp))
1345 tem = Fcommandp (elt, Qnil);
1346 else
1348 if (bindcount >= 0)
1350 unbind_to (bindcount, Qnil);
1351 bindcount = -1;
1353 GCPRO4 (tail, string, eltstring, bestmatch);
1354 tem = (type == hash_table
1355 ? call2 (predicate, elt,
1356 HASH_VALUE (XHASH_TABLE (collection),
1357 idx - 1))
1358 : call1 (predicate, elt));
1359 UNGCPRO;
1361 if (NILP (tem)) continue;
1364 /* Update computation of how much all possible completions match */
1366 if (NILP (bestmatch))
1368 matchcount = 1;
1369 bestmatch = eltstring;
1370 bestmatchsize = SCHARS (eltstring);
1372 else
1374 compare = min (bestmatchsize, SCHARS (eltstring));
1375 tem = Fcompare_strings (bestmatch, zero,
1376 make_number (compare),
1377 eltstring, zero,
1378 make_number (compare),
1379 completion_ignore_case ? Qt : Qnil);
1380 matchsize = EQ (tem, Qt) ? compare : eabs (XINT (tem)) - 1;
1382 if (completion_ignore_case)
1384 /* If this is an exact match except for case,
1385 use it as the best match rather than one that is not an
1386 exact match. This way, we get the case pattern
1387 of the actual match. */
1388 if ((matchsize == SCHARS (eltstring)
1389 && matchsize < SCHARS (bestmatch))
1391 /* If there is more than one exact match ignoring case,
1392 and one of them is exact including case,
1393 prefer that one. */
1394 /* If there is no exact match ignoring case,
1395 prefer a match that does not change the case
1396 of the input. */
1397 ((matchsize == SCHARS (eltstring))
1399 (matchsize == SCHARS (bestmatch))
1400 && (tem = Fcompare_strings (eltstring, zero,
1401 make_number (SCHARS (string)),
1402 string, zero,
1403 Qnil,
1404 Qnil),
1405 EQ (Qt, tem))
1406 && (tem = Fcompare_strings (bestmatch, zero,
1407 make_number (SCHARS (string)),
1408 string, zero,
1409 Qnil,
1410 Qnil),
1411 ! EQ (Qt, tem))))
1412 bestmatch = eltstring;
1414 if (bestmatchsize != SCHARS (eltstring)
1415 || bestmatchsize != matchsize)
1416 /* Don't count the same string multiple times. */
1417 matchcount += matchcount <= 1;
1418 bestmatchsize = matchsize;
1419 if (matchsize <= SCHARS (string)
1420 /* If completion-ignore-case is non-nil, don't
1421 short-circuit because we want to find the best
1422 possible match *including* case differences. */
1423 && !completion_ignore_case
1424 && matchcount > 1)
1425 /* No need to look any further. */
1426 break;
1431 if (bindcount >= 0) {
1432 unbind_to (bindcount, Qnil);
1433 bindcount = -1;
1436 if (NILP (bestmatch))
1437 return Qnil; /* No completions found. */
1438 /* If we are ignoring case, and there is no exact match,
1439 and no additional text was supplied,
1440 don't change the case of what the user typed. */
1441 if (completion_ignore_case && bestmatchsize == SCHARS (string)
1442 && SCHARS (bestmatch) > bestmatchsize)
1443 return minibuf_conform_representation (string, bestmatch);
1445 /* Return t if the supplied string is an exact match (counting case);
1446 it does not require any change to be made. */
1447 if (matchcount == 1 && !NILP (Fequal (bestmatch, string)))
1448 return Qt;
1450 XSETFASTINT (zero, 0); /* Else extract the part in which */
1451 XSETFASTINT (end, bestmatchsize); /* all completions agree. */
1452 return Fsubstring (bestmatch, zero, end);
1455 DEFUN ("all-completions", Fall_completions, Sall_completions, 2, 4, 0,
1456 doc: /* Search for partial matches to STRING in COLLECTION.
1457 Test each of the possible completions specified by COLLECTION
1458 to see if it begins with STRING. The possible completions may be
1459 strings or symbols. Symbols are converted to strings before testing,
1460 see `symbol-name'.
1461 The value is a list of all the possible completions that match STRING.
1463 If COLLECTION is an alist, the keys (cars of elements) are the
1464 possible completions. If an element is not a cons cell, then the
1465 element itself is the possible completion.
1466 If COLLECTION is a hash-table, all the keys that are strings or symbols
1467 are the possible completions.
1468 If COLLECTION is an obarray, the names of all symbols in the obarray
1469 are the possible completions.
1471 COLLECTION can also be a function to do the completion itself.
1472 It receives three arguments: the values STRING, PREDICATE and t.
1473 Whatever it returns becomes the value of `all-completions'.
1475 If optional third argument PREDICATE is non-nil,
1476 it is used to test each possible match.
1477 The match is a candidate only if PREDICATE returns non-nil.
1478 The argument given to PREDICATE is the alist element
1479 or the symbol from the obarray. If COLLECTION is a hash-table,
1480 predicate is called with two arguments: the key and the value.
1481 Additionally to this predicate, `completion-regexp-list'
1482 is used to further constrain the set of candidates.
1484 An obsolete optional fourth argument HIDE-SPACES is still accepted for
1485 backward compatibility. If non-nil, strings in COLLECTION that start
1486 with a space are ignored unless STRING itself starts with a space. */)
1487 (Lisp_Object string, Lisp_Object collection, Lisp_Object predicate, Lisp_Object hide_spaces)
1489 Lisp_Object tail, elt, eltstring;
1490 Lisp_Object allmatches;
1491 int type = HASH_TABLE_P (collection) ? 3
1492 : VECTORP (collection) ? 2
1493 : NILP (collection) || (CONSP (collection) && !FUNCTIONP (collection));
1494 ptrdiff_t idx = 0, obsize = 0;
1495 ptrdiff_t bindcount = -1;
1496 Lisp_Object bucket, tem, zero;
1497 struct gcpro gcpro1, gcpro2, gcpro3, gcpro4;
1499 CHECK_STRING (string);
1500 if (type == 0)
1501 return call3 (collection, string, predicate, Qt);
1502 allmatches = bucket = Qnil;
1503 zero = make_number (0);
1505 /* If COLLECTION is not a list, set TAIL just for gc pro. */
1506 tail = collection;
1507 if (type == 2)
1509 collection = check_obarray (collection);
1510 obsize = ASIZE (collection);
1511 bucket = AREF (collection, idx);
1514 while (1)
1516 /* Get the next element of the alist, obarray, or hash-table. */
1517 /* Exit the loop if the elements are all used up. */
1518 /* elt gets the alist element or symbol.
1519 eltstring gets the name to check as a completion. */
1521 if (type == 1)
1523 if (!CONSP (tail))
1524 break;
1525 elt = XCAR (tail);
1526 eltstring = CONSP (elt) ? XCAR (elt) : elt;
1527 tail = XCDR (tail);
1529 else if (type == 2)
1531 if (!EQ (bucket, zero))
1533 if (!SYMBOLP (bucket))
1534 error ("Bad data in guts of obarray");
1535 elt = bucket;
1536 eltstring = elt;
1537 if (XSYMBOL (bucket)->next)
1538 XSETSYMBOL (bucket, XSYMBOL (bucket)->next);
1539 else
1540 XSETFASTINT (bucket, 0);
1542 else if (++idx >= obsize)
1543 break;
1544 else
1546 bucket = AREF (collection, idx);
1547 continue;
1550 else /* if (type == 3) */
1552 while (idx < HASH_TABLE_SIZE (XHASH_TABLE (collection))
1553 && NILP (HASH_HASH (XHASH_TABLE (collection), idx)))
1554 idx++;
1555 if (idx >= HASH_TABLE_SIZE (XHASH_TABLE (collection)))
1556 break;
1557 else
1558 elt = eltstring = HASH_KEY (XHASH_TABLE (collection), idx++);
1561 /* Is this element a possible completion? */
1563 if (SYMBOLP (eltstring))
1564 eltstring = Fsymbol_name (eltstring);
1566 if (STRINGP (eltstring)
1567 && SCHARS (string) <= SCHARS (eltstring)
1568 /* If HIDE_SPACES, reject alternatives that start with space
1569 unless the input starts with space. */
1570 && (NILP (hide_spaces)
1571 || (SBYTES (string) > 0
1572 && SREF (string, 0) == ' ')
1573 || SREF (eltstring, 0) != ' ')
1574 && (tem = Fcompare_strings (eltstring, zero,
1575 make_number (SCHARS (string)),
1576 string, zero,
1577 make_number (SCHARS (string)),
1578 completion_ignore_case ? Qt : Qnil),
1579 EQ (Qt, tem)))
1581 /* Yes. */
1582 Lisp_Object regexps;
1584 /* Ignore this element if it fails to match all the regexps. */
1586 for (regexps = Vcompletion_regexp_list; CONSP (regexps);
1587 regexps = XCDR (regexps))
1589 if (bindcount < 0) {
1590 bindcount = SPECPDL_INDEX ();
1591 specbind (Qcase_fold_search,
1592 completion_ignore_case ? Qt : Qnil);
1594 tem = Fstring_match (XCAR (regexps), eltstring, zero);
1595 if (NILP (tem))
1596 break;
1598 if (CONSP (regexps))
1599 continue;
1602 /* Ignore this element if there is a predicate
1603 and the predicate doesn't like it. */
1605 if (!NILP (predicate))
1607 if (EQ (predicate, Qcommandp))
1608 tem = Fcommandp (elt, Qnil);
1609 else
1611 if (bindcount >= 0) {
1612 unbind_to (bindcount, Qnil);
1613 bindcount = -1;
1615 GCPRO4 (tail, eltstring, allmatches, string);
1616 tem = type == 3
1617 ? call2 (predicate, elt,
1618 HASH_VALUE (XHASH_TABLE (collection), idx - 1))
1619 : call1 (predicate, elt);
1620 UNGCPRO;
1622 if (NILP (tem)) continue;
1624 /* Ok => put it on the list. */
1625 allmatches = Fcons (eltstring, allmatches);
1629 if (bindcount >= 0) {
1630 unbind_to (bindcount, Qnil);
1631 bindcount = -1;
1634 return Fnreverse (allmatches);
1637 DEFUN ("completing-read", Fcompleting_read, Scompleting_read, 2, 8, 0,
1638 doc: /* Read a string in the minibuffer, with completion.
1639 PROMPT is a string to prompt with; normally it ends in a colon and a space.
1640 COLLECTION can be a list of strings, an alist, an obarray or a hash table.
1641 COLLECTION can also be a function to do the completion itself.
1642 PREDICATE limits completion to a subset of COLLECTION.
1643 See `try-completion' and `all-completions' for more details
1644 on completion, COLLECTION, and PREDICATE.
1646 REQUIRE-MATCH can take the following values:
1647 - t means that the user is not allowed to exit unless
1648 the input is (or completes to) an element of COLLECTION or is null.
1649 - nil means that the user can exit with any input.
1650 - `confirm' means that the user can exit with any input, but she needs
1651 to confirm her choice if the input is not an element of COLLECTION.
1652 - `confirm-after-completion' means that the user can exit with any
1653 input, but she needs to confirm her choice if she called
1654 `minibuffer-complete' right before `minibuffer-complete-and-exit'
1655 and the input is not an element of COLLECTION.
1656 - anything else behaves like t except that typing RET does not exit if it
1657 does non-null completion.
1659 If the input is null, `completing-read' returns DEF, or the first element
1660 of the list of default values, or an empty string if DEF is nil,
1661 regardless of the value of REQUIRE-MATCH.
1663 If INITIAL-INPUT is non-nil, insert it in the minibuffer initially,
1664 with point positioned at the end.
1665 If it is (STRING . POSITION), the initial input is STRING, but point
1666 is placed at _zero-indexed_ position POSITION in STRING. (*Note*
1667 that this is different from `read-from-minibuffer' and related
1668 functions, which use one-indexing for POSITION.) This feature is
1669 deprecated--it is best to pass nil for INITIAL-INPUT and supply the
1670 default value DEF instead. The user can yank the default value into
1671 the minibuffer easily using \\<minibuffer-local-map>\\[next-history-element].
1673 HIST, if non-nil, specifies a history list and optionally the initial
1674 position in the list. It can be a symbol, which is the history list
1675 variable to use, or it can be a cons cell (HISTVAR . HISTPOS). In
1676 that case, HISTVAR is the history list variable to use, and HISTPOS
1677 is the initial position (the position in the list used by the
1678 minibuffer history commands). For consistency, you should also
1679 specify that element of the history as the value of
1680 INITIAL-INPUT. (This is the only case in which you should use
1681 INITIAL-INPUT instead of DEF.) Positions are counted starting from
1682 1 at the beginning of the list. The variable `history-length'
1683 controls the maximum length of a history list.
1685 DEF, if non-nil, is the default value or the list of default values.
1687 If INHERIT-INPUT-METHOD is non-nil, the minibuffer inherits
1688 the current input method and the setting of `enable-multibyte-characters'.
1690 Completion ignores case if the ambient value of
1691 `completion-ignore-case' is non-nil.
1693 See also `completing-read-function'. */)
1694 (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)
1696 Lisp_Object args[9];
1697 args[0] = Fsymbol_value (intern ("completing-read-function"));
1698 args[1] = prompt;
1699 args[2] = collection;
1700 args[3] = predicate;
1701 args[4] = require_match;
1702 args[5] = initial_input;
1703 args[6] = hist;
1704 args[7] = def;
1705 args[8] = inherit_input_method;
1706 return Ffuncall (9, args);
1709 /* Test whether TXT is an exact completion. */
1710 DEFUN ("test-completion", Ftest_completion, Stest_completion, 2, 3, 0,
1711 doc: /* Return non-nil if STRING is a valid completion.
1712 Takes the same arguments as `all-completions' and `try-completion'.
1713 If COLLECTION is a function, it is called with three arguments:
1714 the values STRING, PREDICATE and `lambda'. */)
1715 (Lisp_Object string, Lisp_Object collection, Lisp_Object predicate)
1717 Lisp_Object regexps, tail, tem = Qnil;
1718 ptrdiff_t i = 0;
1720 CHECK_STRING (string);
1722 if (NILP (collection) || (CONSP (collection) && !FUNCTIONP (collection)))
1724 tem = Fassoc_string (string, collection, completion_ignore_case ? Qt : Qnil);
1725 if (NILP (tem))
1726 return Qnil;
1728 else if (VECTORP (collection))
1730 /* Bypass intern-soft as that loses for nil. */
1731 tem = oblookup (collection,
1732 SSDATA (string),
1733 SCHARS (string),
1734 SBYTES (string));
1735 if (!SYMBOLP (tem))
1737 if (STRING_MULTIBYTE (string))
1738 string = Fstring_make_unibyte (string);
1739 else
1740 string = Fstring_make_multibyte (string);
1742 tem = oblookup (collection,
1743 SSDATA (string),
1744 SCHARS (string),
1745 SBYTES (string));
1748 if (completion_ignore_case && !SYMBOLP (tem))
1750 for (i = ASIZE (collection) - 1; i >= 0; i--)
1752 tail = AREF (collection, i);
1753 if (SYMBOLP (tail))
1754 while (1)
1756 if (EQ (Fcompare_strings (string, make_number (0), Qnil,
1757 Fsymbol_name (tail),
1758 make_number (0) , Qnil, Qt),
1759 Qt))
1761 tem = tail;
1762 break;
1764 if (XSYMBOL (tail)->next == 0)
1765 break;
1766 XSETSYMBOL (tail, XSYMBOL (tail)->next);
1771 if (!SYMBOLP (tem))
1772 return Qnil;
1774 else if (HASH_TABLE_P (collection))
1776 struct Lisp_Hash_Table *h = XHASH_TABLE (collection);
1777 Lisp_Object key = Qnil;
1778 i = hash_lookup (h, string, NULL);
1779 if (i >= 0)
1780 tem = HASH_KEY (h, i);
1781 else
1782 for (i = 0; i < HASH_TABLE_SIZE (h); ++i)
1783 if (!NILP (HASH_HASH (h, i))
1784 && (key = HASH_KEY (h, i),
1785 SYMBOLP (key) ? key = Fsymbol_name (key) : key,
1786 STRINGP (key))
1787 && EQ (Fcompare_strings (string, make_number (0), Qnil,
1788 key, make_number (0) , Qnil,
1789 completion_ignore_case ? Qt : Qnil),
1790 Qt))
1792 tem = key;
1793 break;
1795 if (!STRINGP (tem))
1796 return Qnil;
1798 else
1799 return call3 (collection, string, predicate, Qlambda);
1801 /* Reject this element if it fails to match all the regexps. */
1802 if (CONSP (Vcompletion_regexp_list))
1804 ptrdiff_t count = SPECPDL_INDEX ();
1805 specbind (Qcase_fold_search, completion_ignore_case ? Qt : Qnil);
1806 for (regexps = Vcompletion_regexp_list; CONSP (regexps);
1807 regexps = XCDR (regexps))
1809 if (NILP (Fstring_match (XCAR (regexps),
1810 SYMBOLP (tem) ? string : tem,
1811 Qnil)))
1812 return unbind_to (count, Qnil);
1814 unbind_to (count, Qnil);
1817 /* Finally, check the predicate. */
1818 if (!NILP (predicate))
1820 return HASH_TABLE_P (collection)
1821 ? call2 (predicate, tem, HASH_VALUE (XHASH_TABLE (collection), i))
1822 : call1 (predicate, tem);
1824 else
1825 return Qt;
1828 static Lisp_Object Qmetadata;
1830 DEFUN ("internal-complete-buffer", Finternal_complete_buffer, Sinternal_complete_buffer, 3, 3, 0,
1831 doc: /* Perform completion on buffer names.
1832 STRING and PREDICATE have the same meanings as in `try-completion',
1833 `all-completions', and `test-completion'.
1835 If FLAG is nil, invoke `try-completion'; if it is t, invoke
1836 `all-completions'; otherwise invoke `test-completion'. */)
1837 (Lisp_Object string, Lisp_Object predicate, Lisp_Object flag)
1839 if (NILP (flag))
1840 return Ftry_completion (string, Vbuffer_alist, predicate);
1841 else if (EQ (flag, Qt))
1843 Lisp_Object res = Fall_completions (string, Vbuffer_alist, predicate, Qnil);
1844 if (SCHARS (string) > 0)
1845 return res;
1846 else
1847 { /* Strip out internal buffers. */
1848 Lisp_Object bufs = res;
1849 /* First, look for a non-internal buffer in `res'. */
1850 while (CONSP (bufs) && SREF (XCAR (bufs), 0) == ' ')
1851 bufs = XCDR (bufs);
1852 if (NILP (bufs))
1853 return (EQ (Flength (res), Flength (Vbuffer_alist))
1854 /* If all bufs are internal don't strip them out. */
1855 ? res : bufs);
1856 res = bufs;
1857 while (CONSP (XCDR (bufs)))
1858 if (SREF (XCAR (XCDR (bufs)), 0) == ' ')
1859 XSETCDR (bufs, XCDR (XCDR (bufs)));
1860 else
1861 bufs = XCDR (bufs);
1862 return res;
1865 else if (EQ (flag, Qlambda))
1866 return Ftest_completion (string, Vbuffer_alist, predicate);
1867 else if (EQ (flag, Qmetadata))
1868 return list2 (Qmetadata, Fcons (Qcategory, Qbuffer));
1869 else
1870 return Qnil;
1873 /* Like assoc but assumes KEY is a string, and ignores case if appropriate. */
1875 DEFUN ("assoc-string", Fassoc_string, Sassoc_string, 2, 3, 0,
1876 doc: /* Like `assoc' but specifically for strings (and symbols).
1878 This returns the first element of LIST whose car matches the string or
1879 symbol KEY, or nil if no match exists. When performing the
1880 comparison, symbols are first converted to strings, and unibyte
1881 strings to multibyte. If the optional arg CASE-FOLD is non-nil, case
1882 is ignored.
1884 Unlike `assoc', KEY can also match an entry in LIST consisting of a
1885 single string, rather than a cons cell whose car is a string. */)
1886 (register Lisp_Object key, Lisp_Object list, Lisp_Object case_fold)
1888 register Lisp_Object tail;
1890 if (SYMBOLP (key))
1891 key = Fsymbol_name (key);
1893 for (tail = list; CONSP (tail); tail = XCDR (tail))
1895 register Lisp_Object elt, tem, thiscar;
1896 elt = XCAR (tail);
1897 thiscar = CONSP (elt) ? XCAR (elt) : elt;
1898 if (SYMBOLP (thiscar))
1899 thiscar = Fsymbol_name (thiscar);
1900 else if (!STRINGP (thiscar))
1901 continue;
1902 tem = Fcompare_strings (thiscar, make_number (0), Qnil,
1903 key, make_number (0), Qnil,
1904 case_fold);
1905 if (EQ (tem, Qt))
1906 return elt;
1907 QUIT;
1909 return Qnil;
1913 DEFUN ("minibuffer-depth", Fminibuffer_depth, Sminibuffer_depth, 0, 0, 0,
1914 doc: /* Return current depth of activations of minibuffer, a nonnegative integer. */)
1915 (void)
1917 return make_number (minibuf_level);
1920 DEFUN ("minibuffer-prompt", Fminibuffer_prompt, Sminibuffer_prompt, 0, 0, 0,
1921 doc: /* Return the prompt string of the currently-active minibuffer.
1922 If no minibuffer is active, return nil. */)
1923 (void)
1925 return Fcopy_sequence (minibuf_prompt);
1929 void
1930 init_minibuf_once (void)
1932 Vminibuffer_list = Qnil;
1933 staticpro (&Vminibuffer_list);
1936 void
1937 syms_of_minibuf (void)
1939 minibuf_level = 0;
1940 minibuf_prompt = Qnil;
1941 staticpro (&minibuf_prompt);
1943 minibuf_save_list = Qnil;
1944 staticpro (&minibuf_save_list);
1946 DEFSYM (Qcompletion_ignore_case, "completion-ignore-case");
1947 DEFSYM (Qread_file_name_internal, "read-file-name-internal");
1948 DEFSYM (Qminibuffer_default, "minibuffer-default");
1949 Fset (Qminibuffer_default, Qnil);
1951 DEFSYM (Qminibuffer_completion_table, "minibuffer-completion-table");
1952 DEFSYM (Qminibuffer_completion_confirm, "minibuffer-completion-confirm");
1953 DEFSYM (Qminibuffer_completion_predicate, "minibuffer-completion-predicate");
1955 staticpro (&last_minibuf_string);
1956 last_minibuf_string = Qnil;
1958 DEFSYM (Qminibuffer_history, "minibuffer-history");
1959 DEFSYM (Qbuffer_name_history, "buffer-name-history");
1960 Fset (Qbuffer_name_history, Qnil);
1962 DEFSYM (Qcustom_variable_p, "custom-variable-p");
1963 DEFSYM (Qminibuffer_setup_hook, "minibuffer-setup-hook");
1964 DEFSYM (Qminibuffer_exit_hook, "minibuffer-exit-hook");
1965 DEFSYM (Qhistory_length, "history-length");
1966 DEFSYM (Qcurrent_input_method, "current-input-method");
1967 DEFSYM (Qactivate_input_method, "activate-input-method");
1968 DEFSYM (Qcase_fold_search, "case-fold-search");
1969 DEFSYM (Qmetadata, "metadata");
1971 DEFVAR_LISP ("read-expression-history", Vread_expression_history,
1972 doc: /* A history list for arguments that are Lisp expressions to evaluate.
1973 For example, `eval-expression' uses this. */);
1974 Vread_expression_history = Qnil;
1976 DEFSYM (Qread_expression_history, "read-expression-history");
1978 DEFVAR_LISP ("read-buffer-function", Vread_buffer_function,
1979 doc: /* If this is non-nil, `read-buffer' does its work by calling this function.
1980 The function is called with the arguments passed to `read-buffer'. */);
1981 Vread_buffer_function = Qnil;
1983 DEFVAR_BOOL ("read-buffer-completion-ignore-case",
1984 read_buffer_completion_ignore_case,
1985 doc: /* Non-nil means completion ignores case when reading a buffer name. */);
1986 read_buffer_completion_ignore_case = 0;
1988 DEFVAR_LISP ("minibuffer-setup-hook", Vminibuffer_setup_hook,
1989 doc: /* Normal hook run just after entry to minibuffer. */);
1990 Vminibuffer_setup_hook = Qnil;
1992 DEFVAR_LISP ("minibuffer-exit-hook", Vminibuffer_exit_hook,
1993 doc: /* Normal hook run just after exit from minibuffer. */);
1994 Vminibuffer_exit_hook = Qnil;
1996 DEFVAR_LISP ("history-length", Vhistory_length,
1997 doc: /* Maximum length of history lists before truncation takes place.
1998 A number means truncate to that length; truncation deletes old
1999 elements, and is done just after inserting a new element.
2000 A value of t means no truncation.
2002 This variable only affects history lists that don't specify their own
2003 maximum lengths. Setting the `history-length' property of a history
2004 variable overrides this default. */);
2005 XSETFASTINT (Vhistory_length, 100);
2007 DEFVAR_BOOL ("history-delete-duplicates", history_delete_duplicates,
2008 doc: /* Non-nil means to delete duplicates in history.
2009 If set to t when adding a new history element, all previous identical
2010 elements are deleted from the history list. */);
2011 history_delete_duplicates = 0;
2013 DEFVAR_LISP ("history-add-new-input", Vhistory_add_new_input,
2014 doc: /* Non-nil means to add new elements in history.
2015 If set to nil, minibuffer reading functions don't add new elements to the
2016 history list, so it is possible to do this afterwards by calling
2017 `add-to-history' explicitly. */);
2018 Vhistory_add_new_input = Qt;
2020 DEFVAR_BOOL ("completion-ignore-case", completion_ignore_case,
2021 doc: /* Non-nil means don't consider case significant in completion.
2022 For file-name completion, `read-file-name-completion-ignore-case'
2023 controls the behavior, rather than this variable.
2024 For buffer name completion, `read-buffer-completion-ignore-case'
2025 controls the behavior, rather than this variable. */);
2026 completion_ignore_case = 0;
2028 DEFVAR_BOOL ("enable-recursive-minibuffers", enable_recursive_minibuffers,
2029 doc: /* Non-nil means to allow minibuffer commands while in the minibuffer.
2030 This variable makes a difference whenever the minibuffer window is active. */);
2031 enable_recursive_minibuffers = 0;
2033 DEFVAR_LISP ("minibuffer-completion-table", Vminibuffer_completion_table,
2034 doc: /* Alist or obarray used for completion in the minibuffer.
2035 This becomes the ALIST argument to `try-completion' and `all-completions'.
2036 The value can also be a list of strings or a hash table.
2038 The value may alternatively be a function, which is given three arguments:
2039 STRING, the current buffer contents;
2040 PREDICATE, the predicate for filtering possible matches;
2041 CODE, which says what kind of things to do.
2042 CODE can be nil, t or `lambda':
2043 nil -- return the best completion of STRING, or nil if there is none.
2044 t -- return a list of all possible completions of STRING.
2045 lambda -- return t if STRING is a valid completion as it stands. */);
2046 Vminibuffer_completion_table = Qnil;
2048 DEFVAR_LISP ("minibuffer-completion-predicate", Vminibuffer_completion_predicate,
2049 doc: /* Within call to `completing-read', this holds the PREDICATE argument. */);
2050 Vminibuffer_completion_predicate = Qnil;
2052 DEFVAR_LISP ("minibuffer-completion-confirm", Vminibuffer_completion_confirm,
2053 doc: /* Whether to demand confirmation of completion before exiting minibuffer.
2054 If nil, confirmation is not required.
2055 If the value is `confirm', the user may exit with an input that is not
2056 a valid completion alternative, but Emacs asks for confirmation.
2057 If the value is `confirm-after-completion', the user may exit with an
2058 input that is not a valid completion alternative, but Emacs asks for
2059 confirmation if the user submitted the input right after any of the
2060 completion commands listed in `minibuffer-confirm-exit-commands'. */);
2061 Vminibuffer_completion_confirm = Qnil;
2063 DEFVAR_LISP ("minibuffer-completing-file-name",
2064 Vminibuffer_completing_file_name,
2065 doc: /* Non-nil means completing file names. */);
2066 Vminibuffer_completing_file_name = Qnil;
2068 DEFVAR_LISP ("minibuffer-help-form", Vminibuffer_help_form,
2069 doc: /* Value that `help-form' takes on inside the minibuffer. */);
2070 Vminibuffer_help_form = Qnil;
2072 DEFVAR_LISP ("minibuffer-history-variable", Vminibuffer_history_variable,
2073 doc: /* History list symbol to add minibuffer values to.
2074 Each string of minibuffer input, as it appears on exit from the minibuffer,
2075 is added with
2076 (set minibuffer-history-variable
2077 (cons STRING (symbol-value minibuffer-history-variable))) */);
2078 XSETFASTINT (Vminibuffer_history_variable, 0);
2080 DEFVAR_LISP ("minibuffer-history-position", Vminibuffer_history_position,
2081 doc: /* Current position of redoing in the history list. */);
2082 Vminibuffer_history_position = Qnil;
2084 DEFVAR_BOOL ("minibuffer-auto-raise", minibuffer_auto_raise,
2085 doc: /* Non-nil means entering the minibuffer raises the minibuffer's frame.
2086 Some uses of the echo area also raise that frame (since they use it too). */);
2087 minibuffer_auto_raise = 0;
2089 DEFVAR_LISP ("completion-regexp-list", Vcompletion_regexp_list,
2090 doc: /* List of regexps that should restrict possible completions.
2091 The basic completion functions only consider a completion acceptable
2092 if it matches all regular expressions in this list, with
2093 `case-fold-search' bound to the value of `completion-ignore-case'.
2094 See Info node `(elisp)Basic Completion', for a description of these
2095 functions. */);
2096 Vcompletion_regexp_list = Qnil;
2098 DEFVAR_BOOL ("minibuffer-allow-text-properties",
2099 minibuffer_allow_text_properties,
2100 doc: /* Non-nil means `read-from-minibuffer' should not discard text properties.
2101 This also affects `read-string', but it does not affect `read-minibuffer',
2102 `read-no-blanks-input', or any of the functions that do minibuffer input
2103 with completion; they always discard text properties. */);
2104 minibuffer_allow_text_properties = 0;
2106 DEFVAR_LISP ("minibuffer-prompt-properties", Vminibuffer_prompt_properties,
2107 doc: /* Text properties that are added to minibuffer prompts.
2108 These are in addition to the basic `field' property, and stickiness
2109 properties. */);
2110 /* We use `intern' here instead of Qread_only to avoid
2111 initialization-order problems. */
2112 Vminibuffer_prompt_properties = list2 (intern_c_string ("read-only"), Qt);
2114 DEFVAR_LISP ("read-hide-char", Vread_hide_char,
2115 doc: /* Whether to hide input characters in noninteractive mode.
2116 It must be a character, which will be used to mask the input
2117 characters. This variable should never be set globally. */);
2118 Vread_hide_char = Qnil;
2120 defsubr (&Sactive_minibuffer_window);
2121 defsubr (&Sset_minibuffer_window);
2122 defsubr (&Sread_from_minibuffer);
2123 defsubr (&Sread_string);
2124 defsubr (&Sread_command);
2125 defsubr (&Sread_variable);
2126 defsubr (&Sinternal_complete_buffer);
2127 defsubr (&Sread_buffer);
2128 defsubr (&Sread_no_blanks_input);
2129 defsubr (&Sminibuffer_depth);
2130 defsubr (&Sminibuffer_prompt);
2132 defsubr (&Sminibufferp);
2133 defsubr (&Sminibuffer_prompt_end);
2134 defsubr (&Sminibuffer_contents);
2135 defsubr (&Sminibuffer_contents_no_properties);
2136 defsubr (&Sminibuffer_completion_contents);
2138 defsubr (&Stry_completion);
2139 defsubr (&Sall_completions);
2140 defsubr (&Stest_completion);
2141 defsubr (&Sassoc_string);
2142 defsubr (&Scompleting_read);