Merge from emacs-24; up to 2012-05-08T14:11:47Z!monnier@iro.umontreal.ca
[emacs.git] / src / minibuf.c
blobdd4ca34c3fb7c63b36316733c0fad6381c0f02fd
1 /* Minibuffer input and completion.
3 Copyright (C) 1985-1986, 1993-2012 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 "lisp.h"
26 #include "commands.h"
27 #include "character.h"
28 #include "buffer.h"
29 #include "dispextern.h"
30 #include "keyboard.h"
31 #include "frame.h"
32 #include "window.h"
33 #include "syntax.h"
34 #include "intervals.h"
35 #include "keymap.h"
36 #include "termhooks.h"
38 /* List of buffers for use as minibuffers.
39 The first element of the list is used for the outermost minibuffer
40 invocation, the next element is used for a recursive minibuffer
41 invocation, etc. The list is extended at the end as deeper
42 minibuffer recursions are encountered. */
44 Lisp_Object Vminibuffer_list;
46 /* Data to remember during recursive minibuffer invocations. */
48 static Lisp_Object minibuf_save_list;
50 /* Depth in minibuffer invocations. */
52 EMACS_INT minibuf_level;
54 /* The maximum length of a minibuffer history. */
56 static Lisp_Object Qhistory_length;
58 /* Fread_minibuffer leaves the input here as a string. */
60 Lisp_Object last_minibuf_string;
62 static Lisp_Object Qminibuffer_history, Qbuffer_name_history;
64 static Lisp_Object Qread_file_name_internal;
66 /* Normal hooks for entry to and exit from minibuffer. */
68 static Lisp_Object Qminibuffer_setup_hook;
69 static Lisp_Object Qminibuffer_exit_hook;
71 Lisp_Object Qcompletion_ignore_case;
72 static Lisp_Object Qminibuffer_completion_table;
73 static Lisp_Object Qminibuffer_completion_predicate;
74 static Lisp_Object Qminibuffer_completion_confirm;
75 static Lisp_Object Qcustom_variable_p;
77 static Lisp_Object Qminibuffer_default;
79 static Lisp_Object Qcurrent_input_method, Qactivate_input_method;
81 static Lisp_Object Qcase_fold_search;
83 static Lisp_Object Qread_expression_history;
85 /* Prompt to display in front of the mini-buffer contents. */
87 static Lisp_Object minibuf_prompt;
89 /* Width of current mini-buffer prompt. Only set after display_line
90 of the line that contains the prompt. */
92 static ptrdiff_t minibuf_prompt_width;
95 /* Put minibuf on currently selected frame's minibuffer.
96 We do this whenever the user starts a new minibuffer
97 or when a minibuffer exits. */
99 static void
100 choose_minibuf_frame (void)
102 if (FRAMEP (selected_frame)
103 && FRAME_LIVE_P (XFRAME (selected_frame))
104 && !EQ (minibuf_window, XFRAME (selected_frame)->minibuffer_window))
106 struct frame *sf = XFRAME (selected_frame);
107 Lisp_Object buffer;
109 /* I don't think that any frames may validly have a null minibuffer
110 window anymore. */
111 if (NILP (sf->minibuffer_window))
112 emacs_abort ();
114 /* Under X, we come here with minibuf_window being the
115 minibuffer window of the unused termcap window created in
116 init_window_once. That window doesn't have a buffer. */
117 buffer = XWINDOW (minibuf_window)->buffer;
118 if (BUFFERP (buffer))
119 /* Use set_window_buffer instead of Fset_window_buffer (see
120 discussion of bug#11984, bug#12025, bug#12026). */
121 set_window_buffer (sf->minibuffer_window, buffer, 0, 0);
122 minibuf_window = sf->minibuffer_window;
125 /* Make sure no other frame has a minibuffer as its selected window,
126 because the text would not be displayed in it, and that would be
127 confusing. Only allow the selected frame to do this,
128 and that only if the minibuffer is active. */
130 Lisp_Object tail, frame;
132 FOR_EACH_FRAME (tail, frame)
133 if (MINI_WINDOW_P (XWINDOW (FRAME_SELECTED_WINDOW (XFRAME (frame))))
134 && !(EQ (frame, selected_frame)
135 && minibuf_level > 0))
136 Fset_frame_selected_window (frame, Fframe_first_window (frame), Qnil);
140 static Lisp_Object
141 choose_minibuf_frame_1 (Lisp_Object ignore)
143 choose_minibuf_frame ();
144 return Qnil;
147 DEFUN ("active-minibuffer-window", Factive_minibuffer_window,
148 Sactive_minibuffer_window, 0, 0, 0,
149 doc: /* Return the currently active minibuffer window, or nil if none. */)
150 (void)
152 return minibuf_level ? minibuf_window : Qnil;
155 DEFUN ("set-minibuffer-window", Fset_minibuffer_window,
156 Sset_minibuffer_window, 1, 1, 0,
157 doc: /* Specify which minibuffer window to use for the minibuffer.
158 This affects where the minibuffer is displayed if you put text in it
159 without invoking the usual minibuffer commands. */)
160 (Lisp_Object window)
162 CHECK_WINDOW (window);
163 if (! MINI_WINDOW_P (XWINDOW (window)))
164 error ("Window is not a minibuffer window");
166 minibuf_window = window;
168 return window;
172 /* Actual minibuffer invocation. */
174 static Lisp_Object read_minibuf_unwind (Lisp_Object);
175 static Lisp_Object run_exit_minibuf_hook (Lisp_Object);
176 static Lisp_Object read_minibuf (Lisp_Object, Lisp_Object,
177 Lisp_Object,
178 int, Lisp_Object,
179 Lisp_Object, Lisp_Object,
180 int, int);
181 static Lisp_Object read_minibuf_noninteractive (Lisp_Object, Lisp_Object,
182 Lisp_Object, Lisp_Object,
183 int, Lisp_Object,
184 Lisp_Object, Lisp_Object,
185 int, int);
186 static Lisp_Object string_to_object (Lisp_Object, Lisp_Object);
189 /* Read a Lisp object from VAL and return it. If VAL is an empty
190 string, and DEFALT is a string, read from DEFALT instead of VAL. */
192 static Lisp_Object
193 string_to_object (Lisp_Object val, Lisp_Object defalt)
195 struct gcpro gcpro1, gcpro2;
196 Lisp_Object expr_and_pos;
197 ptrdiff_t pos;
199 GCPRO2 (val, defalt);
201 if (STRINGP (val) && SCHARS (val) == 0)
203 if (STRINGP (defalt))
204 val = defalt;
205 else if (CONSP (defalt) && STRINGP (XCAR (defalt)))
206 val = XCAR (defalt);
209 expr_and_pos = Fread_from_string (val, Qnil, Qnil);
210 pos = XINT (Fcdr (expr_and_pos));
211 if (pos != SCHARS (val))
213 /* Ignore trailing whitespace; any other trailing junk
214 is an error. */
215 ptrdiff_t i;
216 pos = string_char_to_byte (val, pos);
217 for (i = pos; i < SBYTES (val); i++)
219 int c = SREF (val, i);
220 if (c != ' ' && c != '\t' && c != '\n')
221 error ("Trailing garbage following expression");
225 val = Fcar (expr_and_pos);
226 RETURN_UNGCPRO (val);
230 /* Like read_minibuf but reading from stdin. This function is called
231 from read_minibuf to do the job if noninteractive. */
233 static Lisp_Object
234 read_minibuf_noninteractive (Lisp_Object map, Lisp_Object initial,
235 Lisp_Object prompt, Lisp_Object backup_n,
236 int expflag,
237 Lisp_Object histvar, Lisp_Object histpos,
238 Lisp_Object defalt,
239 int allow_props, int inherit_input_method)
241 ptrdiff_t size, len;
242 char *line;
243 Lisp_Object val;
244 int c;
246 fprintf (stdout, "%s", SDATA (prompt));
247 fflush (stdout);
249 val = Qnil;
250 size = 100;
251 len = 0;
252 line = xmalloc (size);
254 while ((c = getchar ()) != '\n')
256 if (c == EOF)
258 if (errno != EINTR)
259 break;
261 else
263 if (len == size)
265 if (STRING_BYTES_BOUND / 2 < size)
266 memory_full (SIZE_MAX);
267 size *= 2;
268 line = xrealloc (line, size);
270 line[len++] = c;
274 if (len || c == '\n')
276 val = make_string (line, len);
277 xfree (line);
279 else
281 xfree (line);
282 error ("Error reading from stdin");
285 /* If Lisp form desired instead of string, parse it. */
286 if (expflag)
287 val = string_to_object (val, CONSP (defalt) ? XCAR (defalt) : defalt);
289 return val;
292 DEFUN ("minibufferp", Fminibufferp,
293 Sminibufferp, 0, 1, 0,
294 doc: /* Return t if BUFFER is a minibuffer.
295 No argument or nil as argument means use current buffer as BUFFER.
296 BUFFER can be a buffer or a buffer name. */)
297 (Lisp_Object buffer)
299 Lisp_Object tem;
301 if (NILP (buffer))
302 buffer = Fcurrent_buffer ();
303 else if (STRINGP (buffer))
304 buffer = Fget_buffer (buffer);
305 else
306 CHECK_BUFFER (buffer);
308 tem = Fmemq (buffer, Vminibuffer_list);
309 return ! NILP (tem) ? Qt : Qnil;
312 DEFUN ("minibuffer-prompt-end", Fminibuffer_prompt_end,
313 Sminibuffer_prompt_end, 0, 0, 0,
314 doc: /* Return the buffer position of the end of the minibuffer prompt.
315 Return (point-min) if current buffer is not a minibuffer. */)
316 (void)
318 /* This function is written to be most efficient when there's a prompt. */
319 Lisp_Object beg, end, tem;
320 beg = make_number (BEGV);
322 tem = Fmemq (Fcurrent_buffer (), Vminibuffer_list);
323 if (NILP (tem))
324 return beg;
326 end = Ffield_end (beg, Qnil, Qnil);
328 if (XINT (end) == ZV && NILP (Fget_char_property (beg, Qfield, Qnil)))
329 return beg;
330 else
331 return end;
334 DEFUN ("minibuffer-contents", Fminibuffer_contents,
335 Sminibuffer_contents, 0, 0, 0,
336 doc: /* Return the user input in a minibuffer as a string.
337 If the current buffer is not a minibuffer, return its entire contents. */)
338 (void)
340 ptrdiff_t prompt_end = XINT (Fminibuffer_prompt_end ());
341 return make_buffer_string (prompt_end, ZV, 1);
344 DEFUN ("minibuffer-contents-no-properties", Fminibuffer_contents_no_properties,
345 Sminibuffer_contents_no_properties, 0, 0, 0,
346 doc: /* Return the user input in a minibuffer as a string, without text-properties.
347 If the current buffer is not a minibuffer, return its entire contents. */)
348 (void)
350 ptrdiff_t prompt_end = XINT (Fminibuffer_prompt_end ());
351 return make_buffer_string (prompt_end, ZV, 0);
354 DEFUN ("minibuffer-completion-contents", Fminibuffer_completion_contents,
355 Sminibuffer_completion_contents, 0, 0, 0,
356 doc: /* Return the user input in a minibuffer before point as a string.
357 That is what completion commands operate on.
358 If the current buffer is not a minibuffer, return its entire contents. */)
359 (void)
361 ptrdiff_t prompt_end = XINT (Fminibuffer_prompt_end ());
362 if (PT < prompt_end)
363 error ("Cannot do completion in the prompt");
364 return make_buffer_string (prompt_end, PT, 1);
368 /* Read from the minibuffer using keymap MAP and initial contents INITIAL,
369 putting point minus BACKUP_N bytes from the end of INITIAL,
370 prompting with PROMPT (a string), using history list HISTVAR
371 with initial position HISTPOS. INITIAL should be a string or a
372 cons of a string and an integer. BACKUP_N should be <= 0, or
373 Qnil, which is equivalent to 0. If INITIAL is a cons, BACKUP_N is
374 ignored and replaced with an integer that puts point at one-indexed
375 position N in INITIAL, where N is the CDR of INITIAL, or at the
376 beginning of INITIAL if N <= 0.
378 Normally return the result as a string (the text that was read),
379 but if EXPFLAG is nonzero, read it and return the object read.
380 If HISTVAR is given, save the value read on that history only if it doesn't
381 match the front of that history list exactly. The value is pushed onto
382 the list as the string that was read.
384 DEFALT specifies the default value for the sake of history commands.
386 If ALLOW_PROPS is nonzero, we do not throw away text properties.
388 if INHERIT_INPUT_METHOD is nonzero, the minibuffer inherits the
389 current input method. */
391 static Lisp_Object
392 read_minibuf (Lisp_Object map, Lisp_Object initial, Lisp_Object prompt,
393 int expflag,
394 Lisp_Object histvar, Lisp_Object histpos, Lisp_Object defalt,
395 int allow_props, int inherit_input_method)
397 Lisp_Object val;
398 ptrdiff_t count = SPECPDL_INDEX ();
399 Lisp_Object mini_frame, ambient_dir, minibuffer, input_method;
400 struct gcpro gcpro1, gcpro2, gcpro3, gcpro4, gcpro5;
401 Lisp_Object enable_multibyte;
402 EMACS_INT pos = 0;
403 /* String to add to the history. */
404 Lisp_Object histstring;
406 Lisp_Object empty_minibuf;
407 Lisp_Object dummy, frame;
409 specbind (Qminibuffer_default, defalt);
410 specbind (intern ("inhibit-read-only"), Qnil);
412 /* If Vminibuffer_completing_file_name is `lambda' on entry, it was t
413 in previous recursive minibuffer, but was not set explicitly
414 to t for this invocation, so set it to nil in this minibuffer.
415 Save the old value now, before we change it. */
416 specbind (intern ("minibuffer-completing-file-name"), Vminibuffer_completing_file_name);
417 if (EQ (Vminibuffer_completing_file_name, Qlambda))
418 Vminibuffer_completing_file_name = Qnil;
420 #ifdef HAVE_WINDOW_SYSTEM
421 if (display_hourglass_p)
422 cancel_hourglass ();
423 #endif
425 if (!NILP (initial))
427 if (CONSP (initial))
429 Lisp_Object backup_n = XCDR (initial);
430 initial = XCAR (initial);
431 CHECK_STRING (initial);
432 if (!NILP (backup_n))
434 CHECK_NUMBER (backup_n);
435 /* Convert to distance from end of input. */
436 if (XINT (backup_n) < 1)
437 /* A number too small means the beginning of the string. */
438 pos = - SCHARS (initial);
439 else
440 pos = XINT (backup_n) - 1 - SCHARS (initial);
443 else
444 CHECK_STRING (initial);
446 val = Qnil;
447 ambient_dir = BVAR (current_buffer, directory);
448 input_method = Qnil;
449 enable_multibyte = Qnil;
451 /* Don't need to protect PROMPT, HISTVAR, and HISTPOS because we
452 store them away before we can GC. Don't need to protect
453 BACKUP_N because we use the value only if it is an integer. */
454 GCPRO5 (map, initial, val, ambient_dir, input_method);
456 if (!STRINGP (prompt))
457 prompt = empty_unibyte_string;
459 if (!enable_recursive_minibuffers
460 && minibuf_level > 0)
462 if (EQ (selected_window, minibuf_window))
463 error ("Command attempted to use minibuffer while in minibuffer");
464 else
465 /* If we're in another window, cancel the minibuffer that's active. */
466 Fthrow (Qexit,
467 build_string ("Command attempted to use minibuffer while in minibuffer"));
470 if ((noninteractive
471 /* In case we are running as a daemon, only do this before
472 detaching from the terminal. */
473 || (IS_DAEMON && (daemon_pipe[1] >= 0)))
474 && NILP (Vexecuting_kbd_macro))
476 val = read_minibuf_noninteractive (map, initial, prompt,
477 make_number (pos),
478 expflag, histvar, histpos, defalt,
479 allow_props, inherit_input_method);
480 UNGCPRO;
481 return unbind_to (count, val);
484 /* Choose the minibuffer window and frame, and take action on them. */
486 choose_minibuf_frame ();
488 record_unwind_protect (choose_minibuf_frame_1, Qnil);
490 record_unwind_protect (Fset_window_configuration,
491 Fcurrent_window_configuration (Qnil));
493 /* If the minibuffer window is on a different frame, save that
494 frame's configuration too. */
495 mini_frame = WINDOW_FRAME (XWINDOW (minibuf_window));
496 if (!EQ (mini_frame, selected_frame))
497 record_unwind_protect (Fset_window_configuration,
498 Fcurrent_window_configuration (mini_frame));
500 /* If the minibuffer is on an iconified or invisible frame,
501 make it visible now. */
502 Fmake_frame_visible (mini_frame);
504 if (minibuffer_auto_raise)
505 Fraise_frame (mini_frame);
507 temporarily_switch_to_single_kboard (XFRAME (mini_frame));
509 /* We have to do this after saving the window configuration
510 since that is what restores the current buffer. */
512 /* Arrange to restore a number of minibuffer-related variables.
513 We could bind each variable separately, but that would use lots of
514 specpdl slots. */
515 minibuf_save_list
516 = Fcons (Voverriding_local_map,
517 Fcons (minibuf_window,
518 minibuf_save_list));
519 minibuf_save_list
520 = Fcons (minibuf_prompt,
521 Fcons (make_number (minibuf_prompt_width),
522 Fcons (Vhelp_form,
523 Fcons (Vcurrent_prefix_arg,
524 Fcons (Vminibuffer_history_position,
525 Fcons (Vminibuffer_history_variable,
526 minibuf_save_list))))));
528 record_unwind_protect (read_minibuf_unwind, Qnil);
529 minibuf_level++;
530 /* We are exiting the minibuffer one way or the other, so run the hook.
531 It should be run before unwinding the minibuf settings. Do it
532 separately from read_minibuf_unwind because we need to make sure that
533 read_minibuf_unwind is fully executed even if exit-minibuffer-hook
534 signals an error. --Stef */
535 record_unwind_protect (run_exit_minibuf_hook, Qnil);
537 /* Now that we can restore all those variables, start changing them. */
539 minibuf_prompt_width = 0;
540 minibuf_prompt = Fcopy_sequence (prompt);
541 Vminibuffer_history_position = histpos;
542 Vminibuffer_history_variable = histvar;
543 Vhelp_form = Vminibuffer_help_form;
544 /* If this minibuffer is reading a file name, that doesn't mean
545 recursive ones are. But we cannot set it to nil, because
546 completion code still need to know the minibuffer is completing a
547 file name. So use `lambda' as intermediate value meaning
548 "t" in this minibuffer, but "nil" in next minibuffer. */
549 if (!NILP (Vminibuffer_completing_file_name))
550 Vminibuffer_completing_file_name = Qlambda;
552 if (inherit_input_method)
554 /* `current-input-method' is buffer local. So, remember it in
555 INPUT_METHOD before changing the current buffer. */
556 input_method = Fsymbol_value (Qcurrent_input_method);
557 enable_multibyte = BVAR (current_buffer, enable_multibyte_characters);
560 /* Switch to the minibuffer. */
562 minibuffer = get_minibuffer (minibuf_level);
563 Fset_buffer (minibuffer);
565 /* Defeat (setq-default truncate-lines t), since truncated lines do
566 not work correctly in minibuffers. (Bug#5715, etc) */
567 bset_truncate_lines (current_buffer, Qnil);
569 /* If appropriate, copy enable-multibyte-characters into the minibuffer. */
570 if (inherit_input_method)
571 bset_enable_multibyte_characters (current_buffer, enable_multibyte);
573 /* The current buffer's default directory is usually the right thing
574 for our minibuffer here. However, if you're typing a command at
575 a minibuffer-only frame when minibuf_level is zero, then buf IS
576 the current_buffer, so reset_buffer leaves buf's default
577 directory unchanged. This is a bummer when you've just started
578 up Emacs and buf's default directory is Qnil. Here's a hack; can
579 you think of something better to do? Find another buffer with a
580 better directory, and use that one instead. */
581 if (STRINGP (ambient_dir))
582 bset_directory (current_buffer, ambient_dir);
583 else
585 Lisp_Object buf_list;
587 for (buf_list = Vbuffer_alist;
588 CONSP (buf_list);
589 buf_list = XCDR (buf_list))
591 Lisp_Object other_buf;
593 other_buf = XCDR (XCAR (buf_list));
594 if (STRINGP (BVAR (XBUFFER (other_buf), directory)))
596 bset_directory (current_buffer,
597 BVAR (XBUFFER (other_buf), directory));
598 break;
603 if (!EQ (mini_frame, selected_frame))
604 Fredirect_frame_focus (selected_frame, mini_frame);
606 Vminibuf_scroll_window = selected_window;
607 if (minibuf_level == 1 || !EQ (minibuf_window, selected_window))
608 minibuf_selected_window = selected_window;
610 /* Empty out the minibuffers of all frames other than the one
611 where we are going to display one now.
612 Set them to point to ` *Minibuf-0*', which is always empty. */
613 empty_minibuf = get_minibuffer (0);
615 FOR_EACH_FRAME (dummy, frame)
617 Lisp_Object root_window = Fframe_root_window (frame);
618 Lisp_Object mini_window = XWINDOW (root_window)->next;
620 if (! NILP (mini_window) && ! EQ (mini_window, minibuf_window)
621 && !NILP (Fwindow_minibuffer_p (mini_window)))
622 /* Use set_window_buffer instead of Fset_window_buffer (see
623 discussion of bug#11984, bug#12025, bug#12026). */
624 set_window_buffer (mini_window, empty_minibuf, 0, 0);
627 /* Display this minibuffer in the proper window. */
628 /* Use set_window_buffer instead of Fset_window_buffer (see
629 discussion of bug#11984, bug#12025, bug#12026). */
630 set_window_buffer (minibuf_window, Fcurrent_buffer (), 0, 0);
631 Fselect_window (minibuf_window, Qnil);
632 XWINDOW (minibuf_window)->hscroll = 0;
634 Fmake_local_variable (Qprint_escape_newlines);
635 print_escape_newlines = 1;
637 /* Erase the buffer. */
639 ptrdiff_t count1 = SPECPDL_INDEX ();
640 specbind (Qinhibit_read_only, Qt);
641 specbind (Qinhibit_modification_hooks, Qt);
642 Ferase_buffer ();
644 if (!NILP (BVAR (current_buffer, enable_multibyte_characters))
645 && ! STRING_MULTIBYTE (minibuf_prompt))
646 minibuf_prompt = Fstring_make_multibyte (minibuf_prompt);
648 /* Insert the prompt, record where it ends. */
649 Finsert (1, &minibuf_prompt);
650 if (PT > BEG)
652 Fput_text_property (make_number (BEG), make_number (PT),
653 Qfront_sticky, Qt, Qnil);
654 Fput_text_property (make_number (BEG), make_number (PT),
655 Qrear_nonsticky, Qt, Qnil);
656 Fput_text_property (make_number (BEG), make_number (PT),
657 Qfield, Qt, Qnil);
658 Fadd_text_properties (make_number (BEG), make_number (PT),
659 Vminibuffer_prompt_properties, Qnil);
661 unbind_to (count1, Qnil);
664 minibuf_prompt_width = current_column ();
666 /* Put in the initial input. */
667 if (!NILP (initial))
669 Finsert (1, &initial);
670 Fforward_char (make_number (pos));
673 clear_message (1, 1);
674 bset_keymap (current_buffer, map);
676 /* Turn on an input method stored in INPUT_METHOD if any. */
677 if (STRINGP (input_method) && !NILP (Ffboundp (Qactivate_input_method)))
678 call1 (Qactivate_input_method, input_method);
680 Frun_hooks (1, &Qminibuffer_setup_hook);
682 /* Don't allow the user to undo past this point. */
683 bset_undo_list (current_buffer, Qnil);
685 recursive_edit_1 ();
687 /* If cursor is on the minibuffer line,
688 show the user we have exited by putting it in column 0. */
689 if (XWINDOW (minibuf_window)->cursor.vpos >= 0
690 && !noninteractive)
692 XWINDOW (minibuf_window)->cursor.hpos = 0;
693 XWINDOW (minibuf_window)->cursor.x = 0;
694 XWINDOW (minibuf_window)->must_be_updated_p = 1;
695 update_frame (XFRAME (selected_frame), 1, 1);
697 struct frame *f = XFRAME (XWINDOW (minibuf_window)->frame);
698 struct redisplay_interface *rif = FRAME_RIF (f);
699 if (rif && rif->flush_display)
700 rif->flush_display (f);
704 /* Make minibuffer contents into a string. */
705 Fset_buffer (minibuffer);
706 if (allow_props)
707 val = Fminibuffer_contents ();
708 else
709 val = Fminibuffer_contents_no_properties ();
711 /* VAL is the string of minibuffer text. */
713 last_minibuf_string = val;
715 /* Choose the string to add to the history. */
716 if (SCHARS (val) != 0)
717 histstring = val;
718 else if (STRINGP (defalt))
719 histstring = defalt;
720 else if (CONSP (defalt) && STRINGP (XCAR (defalt)))
721 histstring = XCAR (defalt);
722 else
723 histstring = Qnil;
725 /* Add the value to the appropriate history list, if any. */
726 if (!NILP (Vhistory_add_new_input)
727 && SYMBOLP (Vminibuffer_history_variable)
728 && !NILP (histstring))
730 /* If the caller wanted to save the value read on a history list,
731 then do so if the value is not already the front of the list. */
732 Lisp_Object histval;
734 /* If variable is unbound, make it nil. */
736 histval = find_symbol_value (Vminibuffer_history_variable);
737 if (EQ (histval, Qunbound))
738 Fset (Vminibuffer_history_variable, Qnil);
740 /* The value of the history variable must be a cons or nil. Other
741 values are unacceptable. We silently ignore these values. */
743 if (NILP (histval)
744 || (CONSP (histval)
745 /* Don't duplicate the most recent entry in the history. */
746 && (NILP (Fequal (histstring, Fcar (histval))))))
748 Lisp_Object length;
750 if (history_delete_duplicates) Fdelete (histstring, histval);
751 histval = Fcons (histstring, histval);
752 Fset (Vminibuffer_history_variable, histval);
754 /* Truncate if requested. */
755 length = Fget (Vminibuffer_history_variable, Qhistory_length);
756 if (NILP (length)) length = Vhistory_length;
757 if (INTEGERP (length))
759 if (XINT (length) <= 0)
760 Fset (Vminibuffer_history_variable, Qnil);
761 else
763 Lisp_Object temp;
765 temp = Fnthcdr (Fsub1 (length), histval);
766 if (CONSP (temp)) Fsetcdr (temp, Qnil);
772 /* If Lisp form desired instead of string, parse it. */
773 if (expflag)
774 val = string_to_object (val, defalt);
776 /* The appropriate frame will get selected
777 in set-window-configuration. */
778 UNGCPRO;
779 return unbind_to (count, val);
782 /* Return a buffer to be used as the minibuffer at depth `depth'.
783 depth = 0 is the lowest allowed argument, and that is the value
784 used for nonrecursive minibuffer invocations. */
786 Lisp_Object
787 get_minibuffer (EMACS_INT depth)
789 Lisp_Object tail, num, buf;
790 char name[sizeof " *Minibuf-*" + INT_STRLEN_BOUND (EMACS_INT)];
792 XSETFASTINT (num, depth);
793 tail = Fnthcdr (num, Vminibuffer_list);
794 if (NILP (tail))
796 tail = Fcons (Qnil, Qnil);
797 Vminibuffer_list = nconc2 (Vminibuffer_list, tail);
799 buf = Fcar (tail);
800 if (NILP (buf) || !BUFFER_LIVE_P (XBUFFER (buf)))
802 buf = Fget_buffer_create
803 (make_formatted_string (name, " *Minibuf-%"pI"d*", depth));
805 /* Although the buffer's name starts with a space, undo should be
806 enabled in it. */
807 Fbuffer_enable_undo (buf);
809 XSETCAR (tail, buf);
811 else
813 ptrdiff_t count = SPECPDL_INDEX ();
814 /* We have to empty both overlay lists. Otherwise we end
815 up with overlays that think they belong to this buffer
816 while the buffer doesn't know about them any more. */
817 delete_all_overlays (XBUFFER (buf));
818 reset_buffer (XBUFFER (buf));
819 record_unwind_current_buffer ();
820 Fset_buffer (buf);
821 if (!NILP (Ffboundp (intern ("minibuffer-inactive-mode"))))
822 call0 (intern ("minibuffer-inactive-mode"));
823 else
824 Fkill_all_local_variables ();
825 unbind_to (count, Qnil);
828 return buf;
831 static Lisp_Object
832 run_exit_minibuf_hook (Lisp_Object data)
834 safe_run_hooks (Qminibuffer_exit_hook);
835 return Qnil;
838 /* This function is called on exiting minibuffer, whether normally or
839 not, and it restores the current window, buffer, etc. */
841 static Lisp_Object
842 read_minibuf_unwind (Lisp_Object data)
844 Lisp_Object old_deactivate_mark;
845 Lisp_Object window;
847 /* If this was a recursive minibuffer,
848 tie the minibuffer window back to the outer level minibuffer buffer. */
849 minibuf_level--;
851 window = minibuf_window;
852 /* To keep things predictable, in case it matters, let's be in the
853 minibuffer when we reset the relevant variables. */
854 Fset_buffer (XWINDOW (window)->buffer);
856 /* Restore prompt, etc, from outer minibuffer level. */
857 minibuf_prompt = Fcar (minibuf_save_list);
858 minibuf_save_list = Fcdr (minibuf_save_list);
859 minibuf_prompt_width = XFASTINT (Fcar (minibuf_save_list));
860 minibuf_save_list = Fcdr (minibuf_save_list);
861 Vhelp_form = Fcar (minibuf_save_list);
862 minibuf_save_list = Fcdr (minibuf_save_list);
863 Vcurrent_prefix_arg = Fcar (minibuf_save_list);
864 minibuf_save_list = Fcdr (minibuf_save_list);
865 Vminibuffer_history_position = Fcar (minibuf_save_list);
866 minibuf_save_list = Fcdr (minibuf_save_list);
867 Vminibuffer_history_variable = Fcar (minibuf_save_list);
868 minibuf_save_list = Fcdr (minibuf_save_list);
869 Voverriding_local_map = Fcar (minibuf_save_list);
870 minibuf_save_list = Fcdr (minibuf_save_list);
871 #if 0
872 temp = Fcar (minibuf_save_list);
873 if (FRAME_LIVE_P (XFRAME (WINDOW_FRAME (XWINDOW (temp)))))
874 minibuf_window = temp;
875 #endif
876 minibuf_save_list = Fcdr (minibuf_save_list);
878 /* Erase the minibuffer we were using at this level. */
880 ptrdiff_t count = SPECPDL_INDEX ();
881 /* Prevent error in erase-buffer. */
882 specbind (Qinhibit_read_only, Qt);
883 specbind (Qinhibit_modification_hooks, Qt);
884 old_deactivate_mark = Vdeactivate_mark;
885 Ferase_buffer ();
886 Vdeactivate_mark = old_deactivate_mark;
887 unbind_to (count, Qnil);
890 /* When we get to the outmost level, make sure we resize the
891 mini-window back to its normal size. */
892 if (minibuf_level == 0)
893 resize_mini_window (XWINDOW (window), 0);
895 /* Make sure minibuffer window is erased, not ignored. */
896 windows_or_buffers_changed++;
897 XWINDOW (window)->last_modified = 0;
898 XWINDOW (window)->last_overlay_modified = 0;
900 /* In case the previous minibuffer displayed in this miniwindow is
901 dead, we may keep displaying this buffer (tho it's inactive), so reset it,
902 to make sure we don't leave around bindings and stuff which only
903 made sense during the read_minibuf invocation. */
904 call0 (intern ("minibuffer-inactive-mode"));
905 return Qnil;
909 DEFUN ("read-from-minibuffer", Fread_from_minibuffer,
910 Sread_from_minibuffer, 1, 7, 0,
911 doc: /* Read a string from the minibuffer, prompting with string PROMPT.
912 The optional second arg INITIAL-CONTENTS is an obsolete alternative to
913 DEFAULT-VALUE. It normally should be nil in new code, except when
914 HIST is a cons. It is discussed in more detail below.
916 Third arg KEYMAP is a keymap to use whilst reading;
917 if omitted or nil, the default is `minibuffer-local-map'.
919 If fourth arg READ is non-nil, interpret the result as a Lisp object
920 and return that object:
921 in other words, do `(car (read-from-string INPUT-STRING))'
923 Fifth arg HIST, if non-nil, specifies a history list and optionally
924 the initial position in the list. It can be a symbol, which is the
925 history list variable to use, or a cons cell (HISTVAR . HISTPOS).
926 In that case, HISTVAR is the history list variable to use, and
927 HISTPOS is the initial position for use by the minibuffer history
928 commands. For consistency, you should also specify that element of
929 the history as the value of INITIAL-CONTENTS. Positions are counted
930 starting from 1 at the beginning of the list.
932 Sixth arg DEFAULT-VALUE, if non-nil, should be a string, which is used
933 as the default to `read' if READ is non-nil and the user enters
934 empty input. But if READ is nil, this function does _not_ return
935 DEFAULT-VALUE for empty input! Instead, it returns the empty string.
937 Whatever the value of READ, DEFAULT-VALUE is made available via the
938 minibuffer history commands. DEFAULT-VALUE can also be a list of
939 strings, in which case all the strings are available in the history,
940 and the first string is the default to `read' if READ is non-nil.
942 Seventh arg INHERIT-INPUT-METHOD, if non-nil, means the minibuffer inherits
943 the current input method and the setting of `enable-multibyte-characters'.
945 If the variable `minibuffer-allow-text-properties' is non-nil,
946 then the string which is returned includes whatever text properties
947 were present in the minibuffer. Otherwise the value has no text properties.
949 The remainder of this documentation string describes the
950 INITIAL-CONTENTS argument in more detail. It is only relevant when
951 studying existing code, or when HIST is a cons. If non-nil,
952 INITIAL-CONTENTS is a string to be inserted into the minibuffer before
953 reading input. Normally, point is put at the end of that string.
954 However, if INITIAL-CONTENTS is \(STRING . POSITION), the initial
955 input is STRING, but point is placed at _one-indexed_ position
956 POSITION in the minibuffer. Any integer value less than or equal to
957 one puts point at the beginning of the string. *Note* that this
958 behavior differs from the way such arguments are used in `completing-read'
959 and some related functions, which use zero-indexing for POSITION. */)
960 (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)
962 Lisp_Object histvar, histpos, val;
963 struct gcpro gcpro1;
965 CHECK_STRING (prompt);
966 if (NILP (keymap))
967 keymap = Vminibuffer_local_map;
968 else
969 keymap = get_keymap (keymap, 1, 0);
971 if (SYMBOLP (hist))
973 histvar = hist;
974 histpos = Qnil;
976 else
978 histvar = Fcar_safe (hist);
979 histpos = Fcdr_safe (hist);
981 if (NILP (histvar))
982 histvar = Qminibuffer_history;
983 if (NILP (histpos))
984 XSETFASTINT (histpos, 0);
986 GCPRO1 (default_value);
987 val = read_minibuf (keymap, initial_contents, prompt,
988 !NILP (read),
989 histvar, histpos, default_value,
990 minibuffer_allow_text_properties,
991 !NILP (inherit_input_method));
992 UNGCPRO;
993 return val;
996 DEFUN ("read-minibuffer", Fread_minibuffer, Sread_minibuffer, 1, 2, 0,
997 doc: /* Return a Lisp object read using the minibuffer, unevaluated.
998 Prompt with PROMPT. If non-nil, optional second arg INITIAL-CONTENTS
999 is a string to insert in the minibuffer before reading.
1000 \(INITIAL-CONTENTS can also be a cons of a string and an integer.
1001 Such arguments are used as in `read-from-minibuffer'.) */)
1002 (Lisp_Object prompt, Lisp_Object initial_contents)
1004 CHECK_STRING (prompt);
1005 return read_minibuf (Vminibuffer_local_map, initial_contents,
1006 prompt, 1, Qminibuffer_history,
1007 make_number (0), Qnil, 0, 0);
1010 DEFUN ("eval-minibuffer", Feval_minibuffer, Seval_minibuffer, 1, 2, 0,
1011 doc: /* Return value of Lisp expression read using the minibuffer.
1012 Prompt with PROMPT. If non-nil, optional second arg INITIAL-CONTENTS
1013 is a string to insert in the minibuffer before reading.
1014 \(INITIAL-CONTENTS can also be a cons of a string and an integer.
1015 Such arguments are used as in `read-from-minibuffer'.) */)
1016 (Lisp_Object prompt, Lisp_Object initial_contents)
1018 return Feval (read_minibuf (Vread_expression_map, initial_contents,
1019 prompt, 1, Qread_expression_history,
1020 make_number (0), Qnil, 0, 0),
1021 Qnil);
1024 /* Functions that use the minibuffer to read various things. */
1026 DEFUN ("read-string", Fread_string, Sread_string, 1, 5, 0,
1027 doc: /* Read a string from the minibuffer, prompting with string PROMPT.
1028 If non-nil, second arg INITIAL-INPUT is a string to insert before reading.
1029 This argument has been superseded by DEFAULT-VALUE and should normally
1030 be nil in new code. It behaves as in `read-from-minibuffer'. See the
1031 documentation string of that function for details.
1032 The third arg HISTORY, if non-nil, specifies a history list
1033 and optionally the initial position in the list.
1034 See `read-from-minibuffer' for details of HISTORY argument.
1035 Fourth arg DEFAULT-VALUE is the default value or the list of default values.
1036 If non-nil, it is used for history commands, and as the value (or the first
1037 element of the list of default values) to return if the user enters the
1038 empty string.
1039 Fifth arg INHERIT-INPUT-METHOD, if non-nil, means the minibuffer inherits
1040 the current input method and the setting of `enable-multibyte-characters'. */)
1041 (Lisp_Object prompt, Lisp_Object initial_input, Lisp_Object history, Lisp_Object default_value, Lisp_Object inherit_input_method)
1043 Lisp_Object val;
1044 ptrdiff_t count = SPECPDL_INDEX ();
1046 /* Just in case we're in a recursive minibuffer, make it clear that the
1047 previous minibuffer's completion table does not apply to the new
1048 minibuffer.
1049 FIXME: `minibuffer-completion-table' should be buffer-local instead. */
1050 specbind (Qminibuffer_completion_table, Qnil);
1052 val = Fread_from_minibuffer (prompt, initial_input, Qnil,
1053 Qnil, history, default_value,
1054 inherit_input_method);
1055 if (STRINGP (val) && SCHARS (val) == 0 && ! NILP (default_value))
1056 val = CONSP (default_value) ? XCAR (default_value) : default_value;
1057 return unbind_to (count, val);
1060 DEFUN ("read-no-blanks-input", Fread_no_blanks_input, Sread_no_blanks_input, 1, 3, 0,
1061 doc: /* Read a string from the terminal, not allowing blanks.
1062 Prompt with PROMPT. Whitespace terminates the input. If INITIAL is
1063 non-nil, it should be a string, which is used as initial input, with
1064 point positioned at the end, so that SPACE will accept the input.
1065 \(Actually, INITIAL can also be a cons of a string and an integer.
1066 Such values are treated as in `read-from-minibuffer', but are normally
1067 not useful in this function.)
1068 Third arg INHERIT-INPUT-METHOD, if non-nil, means the minibuffer inherits
1069 the current input method and the setting of`enable-multibyte-characters'. */)
1070 (Lisp_Object prompt, Lisp_Object initial, Lisp_Object inherit_input_method)
1072 CHECK_STRING (prompt);
1073 return read_minibuf (Vminibuffer_local_ns_map, initial, prompt,
1074 0, Qminibuffer_history, make_number (0), Qnil, 0,
1075 !NILP (inherit_input_method));
1078 DEFUN ("read-command", Fread_command, Sread_command, 1, 2, 0,
1079 doc: /* Read the name of a command and return as a symbol.
1080 Prompt with PROMPT. By default, return DEFAULT-VALUE or its first element
1081 if it is a list. */)
1082 (Lisp_Object prompt, Lisp_Object default_value)
1084 Lisp_Object name, default_string;
1086 if (NILP (default_value))
1087 default_string = Qnil;
1088 else if (SYMBOLP (default_value))
1089 default_string = SYMBOL_NAME (default_value);
1090 else
1091 default_string = default_value;
1093 name = Fcompleting_read (prompt, Vobarray, Qcommandp, Qt,
1094 Qnil, Qnil, default_string, Qnil);
1095 if (NILP (name))
1096 return name;
1097 return Fintern (name, Qnil);
1100 #ifdef NOTDEF
1101 DEFUN ("read-function", Fread_function, Sread_function, 1, 1, 0,
1102 doc: /* One arg PROMPT, a string. Read the name of a function and return as a symbol.
1103 Prompt with PROMPT. */)
1104 (Lisp_Object prompt)
1106 return Fintern (Fcompleting_read (prompt, Vobarray, Qfboundp, Qt, Qnil, Qnil, Qnil, Qnil),
1107 Qnil);
1109 #endif /* NOTDEF */
1111 DEFUN ("read-variable", Fread_variable, Sread_variable, 1, 2, 0,
1112 doc: /* Read the name of a user option and return it as a symbol.
1113 Prompt with PROMPT. By default, return DEFAULT-VALUE or its first element
1114 if it is a list.
1115 A user option, or customizable variable, is one for which
1116 `custom-variable-p' returns non-nil. */)
1117 (Lisp_Object prompt, Lisp_Object default_value)
1119 Lisp_Object name, default_string;
1121 if (NILP (default_value))
1122 default_string = Qnil;
1123 else if (SYMBOLP (default_value))
1124 default_string = SYMBOL_NAME (default_value);
1125 else
1126 default_string = default_value;
1128 name = Fcompleting_read (prompt, Vobarray,
1129 Qcustom_variable_p, Qt,
1130 Qnil, Qnil, default_string, Qnil);
1131 if (NILP (name))
1132 return name;
1133 return Fintern (name, Qnil);
1136 DEFUN ("read-buffer", Fread_buffer, Sread_buffer, 1, 3, 0,
1137 doc: /* Read the name of a buffer and return as a string.
1138 Prompt with PROMPT.
1139 Optional second arg DEF is value to return if user enters an empty line.
1140 If DEF is a list of default values, return its first element.
1141 Optional third arg REQUIRE-MATCH determines whether non-existing
1142 buffer names are allowed. It has the same meaning as the
1143 REQUIRE-MATCH argument of `completing-read'.
1144 The argument PROMPT should be a string ending with a colon and a space.
1145 If `read-buffer-completion-ignore-case' is non-nil, completion ignores
1146 case while reading the buffer name.
1147 If `read-buffer-function' is non-nil, this works by calling it as a
1148 function, instead of the usual behavior. */)
1149 (Lisp_Object prompt, Lisp_Object def, Lisp_Object require_match)
1151 Lisp_Object args[4], result;
1152 char *s;
1153 ptrdiff_t len;
1154 ptrdiff_t count = SPECPDL_INDEX ();
1156 if (BUFFERP (def))
1157 def = BVAR (XBUFFER (def), name);
1159 specbind (Qcompletion_ignore_case,
1160 read_buffer_completion_ignore_case ? Qt : Qnil);
1162 if (NILP (Vread_buffer_function))
1164 if (!NILP (def))
1166 /* A default value was provided: we must change PROMPT,
1167 editing the default value in before the colon. To achieve
1168 this, we replace PROMPT with a substring that doesn't
1169 contain the terminal space and colon (if present). They
1170 are then added back using Fformat. */
1172 if (STRINGP (prompt))
1174 s = SSDATA (prompt);
1175 len = SBYTES (prompt);
1176 if (len >= 2 && s[len - 2] == ':' && s[len - 1] == ' ')
1177 len = len - 2;
1178 else if (len >= 1 && (s[len - 1] == ':' || s[len - 1] == ' '))
1179 len--;
1181 prompt = make_specified_string (s, -1, len,
1182 STRING_MULTIBYTE (prompt));
1185 args[0] = build_string ("%s (default %s): ");
1186 args[1] = prompt;
1187 args[2] = CONSP (def) ? XCAR (def) : def;
1188 prompt = Fformat (3, args);
1191 result = Fcompleting_read (prompt, intern ("internal-complete-buffer"),
1192 Qnil, require_match, Qnil,
1193 Qbuffer_name_history, def, Qnil);
1195 else
1197 args[0] = Vread_buffer_function;
1198 args[1] = prompt;
1199 args[2] = def;
1200 args[3] = require_match;
1201 result = Ffuncall (4, args);
1203 return unbind_to (count, result);
1206 static Lisp_Object
1207 minibuf_conform_representation (Lisp_Object string, Lisp_Object basis)
1209 if (STRING_MULTIBYTE (string) == STRING_MULTIBYTE (basis))
1210 return string;
1212 if (STRING_MULTIBYTE (string))
1213 return Fstring_make_unibyte (string);
1214 else
1215 return Fstring_make_multibyte (string);
1218 DEFUN ("try-completion", Ftry_completion, Stry_completion, 2, 3, 0,
1219 doc: /* Return common substring of all completions of STRING in COLLECTION.
1220 Test each possible completion specified by COLLECTION
1221 to see if it begins with STRING. The possible completions may be
1222 strings or symbols. Symbols are converted to strings before testing,
1223 see `symbol-name'.
1224 All that match STRING are compared together; the longest initial sequence
1225 common to all these matches is the return value.
1226 If there is no match at all, the return value is nil.
1227 For a unique match which is exact, the return value is t.
1229 If COLLECTION is an alist, the keys (cars of elements) are the
1230 possible completions. If an element is not a cons cell, then the
1231 element itself is the possible completion.
1232 If COLLECTION is a hash-table, all the keys that are strings or symbols
1233 are the possible completions.
1234 If COLLECTION is an obarray, the names of all symbols in the obarray
1235 are the possible completions.
1237 COLLECTION can also be a function to do the completion itself.
1238 It receives three arguments: the values STRING, PREDICATE and nil.
1239 Whatever it returns becomes the value of `try-completion'.
1241 If optional third argument PREDICATE is non-nil,
1242 it is used to test each possible match.
1243 The match is a candidate only if PREDICATE returns non-nil.
1244 The argument given to PREDICATE is the alist element
1245 or the symbol from the obarray. If COLLECTION is a hash-table,
1246 predicate is called with two arguments: the key and the value.
1247 Additionally to this predicate, `completion-regexp-list'
1248 is used to further constrain the set of candidates. */)
1249 (Lisp_Object string, Lisp_Object collection, Lisp_Object predicate)
1251 Lisp_Object bestmatch, tail, elt, eltstring;
1252 /* Size in bytes of BESTMATCH. */
1253 ptrdiff_t bestmatchsize = 0;
1254 /* These are in bytes, too. */
1255 ptrdiff_t compare, matchsize;
1256 enum { function_table, list_table, obarray_table, hash_table}
1257 type = (HASH_TABLE_P (collection) ? hash_table
1258 : VECTORP (collection) ? obarray_table
1259 : ((NILP (collection)
1260 || (CONSP (collection)
1261 && (!SYMBOLP (XCAR (collection))
1262 || NILP (XCAR (collection)))))
1263 ? list_table : function_table));
1264 ptrdiff_t idx = 0, obsize = 0;
1265 int matchcount = 0;
1266 ptrdiff_t bindcount = -1;
1267 Lisp_Object bucket, zero, end, tem;
1268 struct gcpro gcpro1, gcpro2, gcpro3, gcpro4;
1270 CHECK_STRING (string);
1271 if (type == function_table)
1272 return call3 (collection, string, predicate, Qnil);
1274 bestmatch = bucket = Qnil;
1275 zero = make_number (0);
1277 /* If COLLECTION is not a list, set TAIL just for gc pro. */
1278 tail = collection;
1279 if (type == obarray_table)
1281 collection = check_obarray (collection);
1282 obsize = ASIZE (collection);
1283 bucket = AREF (collection, idx);
1286 while (1)
1288 /* Get the next element of the alist, obarray, or hash-table. */
1289 /* Exit the loop if the elements are all used up. */
1290 /* elt gets the alist element or symbol.
1291 eltstring gets the name to check as a completion. */
1293 if (type == list_table)
1295 if (!CONSP (tail))
1296 break;
1297 elt = XCAR (tail);
1298 eltstring = CONSP (elt) ? XCAR (elt) : elt;
1299 tail = XCDR (tail);
1301 else if (type == obarray_table)
1303 if (!EQ (bucket, zero))
1305 if (!SYMBOLP (bucket))
1306 error ("Bad data in guts of obarray");
1307 elt = bucket;
1308 eltstring = elt;
1309 if (XSYMBOL (bucket)->next)
1310 XSETSYMBOL (bucket, XSYMBOL (bucket)->next);
1311 else
1312 XSETFASTINT (bucket, 0);
1314 else if (++idx >= obsize)
1315 break;
1316 else
1318 bucket = AREF (collection, idx);
1319 continue;
1322 else /* if (type == hash_table) */
1324 while (idx < HASH_TABLE_SIZE (XHASH_TABLE (collection))
1325 && NILP (HASH_HASH (XHASH_TABLE (collection), idx)))
1326 idx++;
1327 if (idx >= HASH_TABLE_SIZE (XHASH_TABLE (collection)))
1328 break;
1329 else
1330 elt = eltstring = HASH_KEY (XHASH_TABLE (collection), idx++);
1333 /* Is this element a possible completion? */
1335 if (SYMBOLP (eltstring))
1336 eltstring = Fsymbol_name (eltstring);
1338 if (STRINGP (eltstring)
1339 && SCHARS (string) <= SCHARS (eltstring)
1340 && (tem = Fcompare_strings (eltstring, zero,
1341 make_number (SCHARS (string)),
1342 string, zero, Qnil,
1343 completion_ignore_case ? Qt : Qnil),
1344 EQ (Qt, tem)))
1346 /* Yes. */
1347 Lisp_Object regexps;
1349 /* Ignore this element if it fails to match all the regexps. */
1351 for (regexps = Vcompletion_regexp_list; CONSP (regexps);
1352 regexps = XCDR (regexps))
1354 if (bindcount < 0) {
1355 bindcount = SPECPDL_INDEX ();
1356 specbind (Qcase_fold_search,
1357 completion_ignore_case ? Qt : Qnil);
1359 tem = Fstring_match (XCAR (regexps), eltstring, zero);
1360 if (NILP (tem))
1361 break;
1363 if (CONSP (regexps))
1364 continue;
1367 /* Ignore this element if there is a predicate
1368 and the predicate doesn't like it. */
1370 if (!NILP (predicate))
1372 if (EQ (predicate, Qcommandp))
1373 tem = Fcommandp (elt, Qnil);
1374 else
1376 if (bindcount >= 0)
1378 unbind_to (bindcount, Qnil);
1379 bindcount = -1;
1381 GCPRO4 (tail, string, eltstring, bestmatch);
1382 tem = (type == hash_table
1383 ? call2 (predicate, elt,
1384 HASH_VALUE (XHASH_TABLE (collection),
1385 idx - 1))
1386 : call1 (predicate, elt));
1387 UNGCPRO;
1389 if (NILP (tem)) continue;
1392 /* Update computation of how much all possible completions match */
1394 if (NILP (bestmatch))
1396 matchcount = 1;
1397 bestmatch = eltstring;
1398 bestmatchsize = SCHARS (eltstring);
1400 else
1402 compare = min (bestmatchsize, SCHARS (eltstring));
1403 tem = Fcompare_strings (bestmatch, zero,
1404 make_number (compare),
1405 eltstring, zero,
1406 make_number (compare),
1407 completion_ignore_case ? Qt : Qnil);
1408 if (EQ (tem, Qt))
1409 matchsize = compare;
1410 else if (XINT (tem) < 0)
1411 matchsize = - XINT (tem) - 1;
1412 else
1413 matchsize = XINT (tem) - 1;
1415 if (completion_ignore_case)
1417 /* If this is an exact match except for case,
1418 use it as the best match rather than one that is not an
1419 exact match. This way, we get the case pattern
1420 of the actual match. */
1421 if ((matchsize == SCHARS (eltstring)
1422 && matchsize < SCHARS (bestmatch))
1424 /* If there is more than one exact match ignoring case,
1425 and one of them is exact including case,
1426 prefer that one. */
1427 /* If there is no exact match ignoring case,
1428 prefer a match that does not change the case
1429 of the input. */
1430 ((matchsize == SCHARS (eltstring))
1432 (matchsize == SCHARS (bestmatch))
1433 && (tem = Fcompare_strings (eltstring, zero,
1434 make_number (SCHARS (string)),
1435 string, zero,
1436 Qnil,
1437 Qnil),
1438 EQ (Qt, tem))
1439 && (tem = Fcompare_strings (bestmatch, zero,
1440 make_number (SCHARS (string)),
1441 string, zero,
1442 Qnil,
1443 Qnil),
1444 ! EQ (Qt, tem))))
1445 bestmatch = eltstring;
1447 if (bestmatchsize != SCHARS (eltstring)
1448 || bestmatchsize != matchsize)
1449 /* Don't count the same string multiple times. */
1450 matchcount++;
1451 bestmatchsize = matchsize;
1452 if (matchsize <= SCHARS (string)
1453 /* If completion-ignore-case is non-nil, don't
1454 short-circuit because we want to find the best
1455 possible match *including* case differences. */
1456 && !completion_ignore_case
1457 && matchcount > 1)
1458 /* No need to look any further. */
1459 break;
1464 if (bindcount >= 0) {
1465 unbind_to (bindcount, Qnil);
1466 bindcount = -1;
1469 if (NILP (bestmatch))
1470 return Qnil; /* No completions found. */
1471 /* If we are ignoring case, and there is no exact match,
1472 and no additional text was supplied,
1473 don't change the case of what the user typed. */
1474 if (completion_ignore_case && bestmatchsize == SCHARS (string)
1475 && SCHARS (bestmatch) > bestmatchsize)
1476 return minibuf_conform_representation (string, bestmatch);
1478 /* Return t if the supplied string is an exact match (counting case);
1479 it does not require any change to be made. */
1480 if (matchcount == 1 && !NILP (Fequal (bestmatch, string)))
1481 return Qt;
1483 XSETFASTINT (zero, 0); /* Else extract the part in which */
1484 XSETFASTINT (end, bestmatchsize); /* all completions agree. */
1485 return Fsubstring (bestmatch, zero, end);
1488 DEFUN ("all-completions", Fall_completions, Sall_completions, 2, 4, 0,
1489 doc: /* Search for partial matches to STRING in COLLECTION.
1490 Test each of the possible completions specified by COLLECTION
1491 to see if it begins with STRING. The possible completions may be
1492 strings or symbols. Symbols are converted to strings before testing,
1493 see `symbol-name'.
1494 The value is a list of all the possible completions that match STRING.
1496 If COLLECTION is an alist, the keys (cars of elements) are the
1497 possible completions. If an element is not a cons cell, then the
1498 element itself is the possible completion.
1499 If COLLECTION is a hash-table, all the keys that are strings or symbols
1500 are the possible completions.
1501 If COLLECTION is an obarray, the names of all symbols in the obarray
1502 are the possible completions.
1504 COLLECTION can also be a function to do the completion itself.
1505 It receives three arguments: the values STRING, PREDICATE and t.
1506 Whatever it returns becomes the value of `all-completions'.
1508 If optional third argument PREDICATE is non-nil,
1509 it is used to test each possible match.
1510 The match is a candidate only if PREDICATE returns non-nil.
1511 The argument given to PREDICATE is the alist element
1512 or the symbol from the obarray. If COLLECTION is a hash-table,
1513 predicate is called with two arguments: the key and the value.
1514 Additionally to this predicate, `completion-regexp-list'
1515 is used to further constrain the set of candidates.
1517 An obsolete optional fourth argument HIDE-SPACES is still accepted for
1518 backward compatibility. If non-nil, strings in COLLECTION that start
1519 with a space are ignored unless STRING itself starts with a space. */)
1520 (Lisp_Object string, Lisp_Object collection, Lisp_Object predicate, Lisp_Object hide_spaces)
1522 Lisp_Object tail, elt, eltstring;
1523 Lisp_Object allmatches;
1524 int type = HASH_TABLE_P (collection) ? 3
1525 : VECTORP (collection) ? 2
1526 : NILP (collection) || (CONSP (collection)
1527 && (!SYMBOLP (XCAR (collection))
1528 || NILP (XCAR (collection))));
1529 ptrdiff_t idx = 0, obsize = 0;
1530 ptrdiff_t bindcount = -1;
1531 Lisp_Object bucket, tem, zero;
1532 struct gcpro gcpro1, gcpro2, gcpro3, gcpro4;
1534 CHECK_STRING (string);
1535 if (type == 0)
1536 return call3 (collection, string, predicate, Qt);
1537 allmatches = bucket = Qnil;
1538 zero = make_number (0);
1540 /* If COLLECTION is not a list, set TAIL just for gc pro. */
1541 tail = collection;
1542 if (type == 2)
1544 collection = check_obarray (collection);
1545 obsize = ASIZE (collection);
1546 bucket = AREF (collection, idx);
1549 while (1)
1551 /* Get the next element of the alist, obarray, or hash-table. */
1552 /* Exit the loop if the elements are all used up. */
1553 /* elt gets the alist element or symbol.
1554 eltstring gets the name to check as a completion. */
1556 if (type == 1)
1558 if (!CONSP (tail))
1559 break;
1560 elt = XCAR (tail);
1561 eltstring = CONSP (elt) ? XCAR (elt) : elt;
1562 tail = XCDR (tail);
1564 else if (type == 2)
1566 if (!EQ (bucket, zero))
1568 if (!SYMBOLP (bucket))
1569 error ("Bad data in guts of obarray");
1570 elt = bucket;
1571 eltstring = elt;
1572 if (XSYMBOL (bucket)->next)
1573 XSETSYMBOL (bucket, XSYMBOL (bucket)->next);
1574 else
1575 XSETFASTINT (bucket, 0);
1577 else if (++idx >= obsize)
1578 break;
1579 else
1581 bucket = AREF (collection, idx);
1582 continue;
1585 else /* if (type == 3) */
1587 while (idx < HASH_TABLE_SIZE (XHASH_TABLE (collection))
1588 && NILP (HASH_HASH (XHASH_TABLE (collection), idx)))
1589 idx++;
1590 if (idx >= HASH_TABLE_SIZE (XHASH_TABLE (collection)))
1591 break;
1592 else
1593 elt = eltstring = HASH_KEY (XHASH_TABLE (collection), idx++);
1596 /* Is this element a possible completion? */
1598 if (SYMBOLP (eltstring))
1599 eltstring = Fsymbol_name (eltstring);
1601 if (STRINGP (eltstring)
1602 && SCHARS (string) <= SCHARS (eltstring)
1603 /* If HIDE_SPACES, reject alternatives that start with space
1604 unless the input starts with space. */
1605 && (NILP (hide_spaces)
1606 || (SBYTES (string) > 0
1607 && SREF (string, 0) == ' ')
1608 || SREF (eltstring, 0) != ' ')
1609 && (tem = Fcompare_strings (eltstring, zero,
1610 make_number (SCHARS (string)),
1611 string, zero,
1612 make_number (SCHARS (string)),
1613 completion_ignore_case ? Qt : Qnil),
1614 EQ (Qt, tem)))
1616 /* Yes. */
1617 Lisp_Object regexps;
1619 /* Ignore this element if it fails to match all the regexps. */
1621 for (regexps = Vcompletion_regexp_list; CONSP (regexps);
1622 regexps = XCDR (regexps))
1624 if (bindcount < 0) {
1625 bindcount = SPECPDL_INDEX ();
1626 specbind (Qcase_fold_search,
1627 completion_ignore_case ? Qt : Qnil);
1629 tem = Fstring_match (XCAR (regexps), eltstring, zero);
1630 if (NILP (tem))
1631 break;
1633 if (CONSP (regexps))
1634 continue;
1637 /* Ignore this element if there is a predicate
1638 and the predicate doesn't like it. */
1640 if (!NILP (predicate))
1642 if (EQ (predicate, Qcommandp))
1643 tem = Fcommandp (elt, Qnil);
1644 else
1646 if (bindcount >= 0) {
1647 unbind_to (bindcount, Qnil);
1648 bindcount = -1;
1650 GCPRO4 (tail, eltstring, allmatches, string);
1651 tem = type == 3
1652 ? call2 (predicate, elt,
1653 HASH_VALUE (XHASH_TABLE (collection), idx - 1))
1654 : call1 (predicate, elt);
1655 UNGCPRO;
1657 if (NILP (tem)) continue;
1659 /* Ok => put it on the list. */
1660 allmatches = Fcons (eltstring, allmatches);
1664 if (bindcount >= 0) {
1665 unbind_to (bindcount, Qnil);
1666 bindcount = -1;
1669 return Fnreverse (allmatches);
1672 DEFUN ("completing-read", Fcompleting_read, Scompleting_read, 2, 8, 0,
1673 doc: /* Read a string in the minibuffer, with completion.
1674 PROMPT is a string to prompt with; normally it ends in a colon and a space.
1675 COLLECTION can be a list of strings, an alist, an obarray or a hash table.
1676 COLLECTION can also be a function to do the completion itself.
1677 PREDICATE limits completion to a subset of COLLECTION.
1678 See `try-completion' and `all-completions' for more details
1679 on completion, COLLECTION, and PREDICATE.
1681 REQUIRE-MATCH can take the following values:
1682 - t means that the user is not allowed to exit unless
1683 the input is (or completes to) an element of COLLECTION or is null.
1684 - nil means that the user can exit with any input.
1685 - `confirm' means that the user can exit with any input, but she needs
1686 to confirm her choice if the input is not an element of COLLECTION.
1687 - `confirm-after-completion' means that the user can exit with any
1688 input, but she needs to confirm her choice if she called
1689 `minibuffer-complete' right before `minibuffer-complete-and-exit'
1690 and the input is not an element of COLLECTION.
1691 - anything else behaves like t except that typing RET does not exit if it
1692 does non-null completion.
1694 If the input is null, `completing-read' returns DEF, or the first element
1695 of the list of default values, or an empty string if DEF is nil,
1696 regardless of the value of REQUIRE-MATCH.
1698 If INITIAL-INPUT is non-nil, insert it in the minibuffer initially,
1699 with point positioned at the end.
1700 If it is (STRING . POSITION), the initial input is STRING, but point
1701 is placed at _zero-indexed_ position POSITION in STRING. (*Note*
1702 that this is different from `read-from-minibuffer' and related
1703 functions, which use one-indexing for POSITION.) This feature is
1704 deprecated--it is best to pass nil for INITIAL-INPUT and supply the
1705 default value DEF instead. The user can yank the default value into
1706 the minibuffer easily using \\<minibuffer-local-map>\\[next-history-element].
1708 HIST, if non-nil, specifies a history list and optionally the initial
1709 position in the list. It can be a symbol, which is the history list
1710 variable to use, or it can be a cons cell (HISTVAR . HISTPOS). In
1711 that case, HISTVAR is the history list variable to use, and HISTPOS
1712 is the initial position (the position in the list used by the
1713 minibuffer history commands). For consistency, you should also
1714 specify that element of the history as the value of
1715 INITIAL-INPUT. (This is the only case in which you should use
1716 INITIAL-INPUT instead of DEF.) Positions are counted starting from
1717 1 at the beginning of the list. The variable `history-length'
1718 controls the maximum length of a history list.
1720 DEF, if non-nil, is the default value or the list of default values.
1722 If INHERIT-INPUT-METHOD is non-nil, the minibuffer inherits
1723 the current input method and the setting of `enable-multibyte-characters'.
1725 Completion ignores case if the ambient value of
1726 `completion-ignore-case' is non-nil.
1728 See also `completing-read-function'. */)
1729 (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)
1731 Lisp_Object args[9];
1732 args[0] = Fsymbol_value (intern ("completing-read-function"));
1733 args[1] = prompt;
1734 args[2] = collection;
1735 args[3] = predicate;
1736 args[4] = require_match;
1737 args[5] = initial_input;
1738 args[6] = hist;
1739 args[7] = def;
1740 args[8] = inherit_input_method;
1741 return Ffuncall (9, args);
1744 /* Test whether TXT is an exact completion. */
1745 DEFUN ("test-completion", Ftest_completion, Stest_completion, 2, 3, 0,
1746 doc: /* Return non-nil if STRING is a valid completion.
1747 Takes the same arguments as `all-completions' and `try-completion'.
1748 If COLLECTION is a function, it is called with three arguments:
1749 the values STRING, PREDICATE and `lambda'. */)
1750 (Lisp_Object string, Lisp_Object collection, Lisp_Object predicate)
1752 Lisp_Object regexps, tail, tem = Qnil;
1753 ptrdiff_t i = 0;
1755 CHECK_STRING (string);
1757 if ((CONSP (collection)
1758 && (!SYMBOLP (XCAR (collection)) || NILP (XCAR (collection))))
1759 || NILP (collection))
1761 tem = Fassoc_string (string, collection, completion_ignore_case ? Qt : Qnil);
1762 if (NILP (tem))
1763 return Qnil;
1765 else if (VECTORP (collection))
1767 /* Bypass intern-soft as that loses for nil. */
1768 tem = oblookup (collection,
1769 SSDATA (string),
1770 SCHARS (string),
1771 SBYTES (string));
1772 if (!SYMBOLP (tem))
1774 if (STRING_MULTIBYTE (string))
1775 string = Fstring_make_unibyte (string);
1776 else
1777 string = Fstring_make_multibyte (string);
1779 tem = oblookup (collection,
1780 SSDATA (string),
1781 SCHARS (string),
1782 SBYTES (string));
1785 if (completion_ignore_case && !SYMBOLP (tem))
1787 for (i = ASIZE (collection) - 1; i >= 0; i--)
1789 tail = AREF (collection, i);
1790 if (SYMBOLP (tail))
1791 while (1)
1793 if (EQ (Fcompare_strings (string, make_number (0), Qnil,
1794 Fsymbol_name (tail),
1795 make_number (0) , Qnil, Qt),
1796 Qt))
1798 tem = tail;
1799 break;
1801 if (XSYMBOL (tail)->next == 0)
1802 break;
1803 XSETSYMBOL (tail, XSYMBOL (tail)->next);
1808 if (!SYMBOLP (tem))
1809 return Qnil;
1811 else if (HASH_TABLE_P (collection))
1813 struct Lisp_Hash_Table *h = XHASH_TABLE (collection);
1814 i = hash_lookup (h, string, NULL);
1815 if (i >= 0)
1816 tem = HASH_KEY (h, i);
1817 else
1818 for (i = 0; i < HASH_TABLE_SIZE (h); ++i)
1819 if (!NILP (HASH_HASH (h, i))
1820 && EQ (Fcompare_strings (string, make_number (0), Qnil,
1821 HASH_KEY (h, i), make_number (0) , Qnil,
1822 completion_ignore_case ? Qt : Qnil),
1823 Qt))
1825 tem = HASH_KEY (h, i);
1826 break;
1828 if (!STRINGP (tem))
1829 return Qnil;
1831 else
1832 return call3 (collection, string, predicate, Qlambda);
1834 /* Reject this element if it fails to match all the regexps. */
1835 if (CONSP (Vcompletion_regexp_list))
1837 ptrdiff_t count = SPECPDL_INDEX ();
1838 specbind (Qcase_fold_search, completion_ignore_case ? Qt : Qnil);
1839 for (regexps = Vcompletion_regexp_list; CONSP (regexps);
1840 regexps = XCDR (regexps))
1842 if (NILP (Fstring_match (XCAR (regexps),
1843 SYMBOLP (tem) ? string : tem,
1844 Qnil)))
1845 return unbind_to (count, Qnil);
1847 unbind_to (count, Qnil);
1850 /* Finally, check the predicate. */
1851 if (!NILP (predicate))
1853 return HASH_TABLE_P (collection)
1854 ? call2 (predicate, tem, HASH_VALUE (XHASH_TABLE (collection), i))
1855 : call1 (predicate, tem);
1857 else
1858 return Qt;
1861 static Lisp_Object Qmetadata;
1863 DEFUN ("internal-complete-buffer", Finternal_complete_buffer, Sinternal_complete_buffer, 3, 3, 0,
1864 doc: /* Perform completion on buffer names.
1865 STRING and PREDICATE have the same meanings as in `try-completion',
1866 `all-completions', and `test-completion'.
1868 If FLAG is nil, invoke `try-completion'; if it is t, invoke
1869 `all-completions'; otherwise invoke `test-completion'. */)
1870 (Lisp_Object string, Lisp_Object predicate, Lisp_Object flag)
1872 if (NILP (flag))
1873 return Ftry_completion (string, Vbuffer_alist, predicate);
1874 else if (EQ (flag, Qt))
1876 Lisp_Object res = Fall_completions (string, Vbuffer_alist, predicate, Qnil);
1877 if (SCHARS (string) > 0)
1878 return res;
1879 else
1880 { /* Strip out internal buffers. */
1881 Lisp_Object bufs = res;
1882 /* First, look for a non-internal buffer in `res'. */
1883 while (CONSP (bufs) && SREF (XCAR (bufs), 0) == ' ')
1884 bufs = XCDR (bufs);
1885 if (NILP (bufs))
1886 return (EQ (Flength (res), Flength (Vbuffer_alist))
1887 /* If all bufs are internal don't strip them out. */
1888 ? res : bufs);
1889 res = bufs;
1890 while (CONSP (XCDR (bufs)))
1891 if (SREF (XCAR (XCDR (bufs)), 0) == ' ')
1892 XSETCDR (bufs, XCDR (XCDR (bufs)));
1893 else
1894 bufs = XCDR (bufs);
1895 return res;
1898 else if (EQ (flag, Qlambda))
1899 return Ftest_completion (string, Vbuffer_alist, predicate);
1900 else if (EQ (flag, Qmetadata))
1901 return Fcons (Qmetadata, Fcons (Fcons (Qcategory, Qbuffer), Qnil));
1902 else
1903 return Qnil;
1906 /* Like assoc but assumes KEY is a string, and ignores case if appropriate. */
1908 DEFUN ("assoc-string", Fassoc_string, Sassoc_string, 2, 3, 0,
1909 doc: /* Like `assoc' but specifically for strings (and symbols).
1911 This returns the first element of LIST whose car matches the string or
1912 symbol KEY, or nil if no match exists. When performing the
1913 comparison, symbols are first converted to strings, and unibyte
1914 strings to multibyte. If the optional arg CASE-FOLD is non-nil, case
1915 is ignored.
1917 Unlike `assoc', KEY can also match an entry in LIST consisting of a
1918 single string, rather than a cons cell whose car is a string. */)
1919 (register Lisp_Object key, Lisp_Object list, Lisp_Object case_fold)
1921 register Lisp_Object tail;
1923 if (SYMBOLP (key))
1924 key = Fsymbol_name (key);
1926 for (tail = list; CONSP (tail); tail = XCDR (tail))
1928 register Lisp_Object elt, tem, thiscar;
1929 elt = XCAR (tail);
1930 thiscar = CONSP (elt) ? XCAR (elt) : elt;
1931 if (SYMBOLP (thiscar))
1932 thiscar = Fsymbol_name (thiscar);
1933 else if (!STRINGP (thiscar))
1934 continue;
1935 tem = Fcompare_strings (thiscar, make_number (0), Qnil,
1936 key, make_number (0), Qnil,
1937 case_fold);
1938 if (EQ (tem, Qt))
1939 return elt;
1940 QUIT;
1942 return Qnil;
1946 DEFUN ("minibuffer-depth", Fminibuffer_depth, Sminibuffer_depth, 0, 0, 0,
1947 doc: /* Return current depth of activations of minibuffer, a nonnegative integer. */)
1948 (void)
1950 return make_number (minibuf_level);
1953 DEFUN ("minibuffer-prompt", Fminibuffer_prompt, Sminibuffer_prompt, 0, 0, 0,
1954 doc: /* Return the prompt string of the currently-active minibuffer.
1955 If no minibuffer is active, return nil. */)
1956 (void)
1958 return Fcopy_sequence (minibuf_prompt);
1962 void
1963 init_minibuf_once (void)
1965 Vminibuffer_list = Qnil;
1966 staticpro (&Vminibuffer_list);
1969 void
1970 syms_of_minibuf (void)
1972 minibuf_level = 0;
1973 minibuf_prompt = Qnil;
1974 staticpro (&minibuf_prompt);
1976 minibuf_save_list = Qnil;
1977 staticpro (&minibuf_save_list);
1979 DEFSYM (Qcompletion_ignore_case, "completion-ignore-case");
1980 DEFSYM (Qread_file_name_internal, "read-file-name-internal");
1981 DEFSYM (Qminibuffer_default, "minibuffer-default");
1982 Fset (Qminibuffer_default, Qnil);
1984 DEFSYM (Qminibuffer_completion_table, "minibuffer-completion-table");
1985 DEFSYM (Qminibuffer_completion_confirm, "minibuffer-completion-confirm");
1986 DEFSYM (Qminibuffer_completion_predicate, "minibuffer-completion-predicate");
1988 staticpro (&last_minibuf_string);
1989 last_minibuf_string = Qnil;
1991 DEFSYM (Qminibuffer_history, "minibuffer-history");
1992 DEFSYM (Qbuffer_name_history, "buffer-name-history");
1993 Fset (Qbuffer_name_history, Qnil);
1995 DEFSYM (Qcustom_variable_p, "custom-variable-p");
1996 DEFSYM (Qminibuffer_setup_hook, "minibuffer-setup-hook");
1997 DEFSYM (Qminibuffer_exit_hook, "minibuffer-exit-hook");
1998 DEFSYM (Qhistory_length, "history-length");
1999 DEFSYM (Qcurrent_input_method, "current-input-method");
2000 DEFSYM (Qactivate_input_method, "activate-input-method");
2001 DEFSYM (Qcase_fold_search, "case-fold-search");
2002 DEFSYM (Qmetadata, "metadata");
2004 DEFVAR_LISP ("read-expression-history", Vread_expression_history,
2005 doc: /* A history list for arguments that are Lisp expressions to evaluate.
2006 For example, `eval-expression' uses this. */);
2007 Vread_expression_history = Qnil;
2009 DEFSYM (Qread_expression_history, "read-expression-history");
2011 DEFVAR_LISP ("read-buffer-function", Vread_buffer_function,
2012 doc: /* If this is non-nil, `read-buffer' does its work by calling this function.
2013 The function is called with the arguments passed to `read-buffer'. */);
2014 Vread_buffer_function = Qnil;
2016 DEFVAR_BOOL ("read-buffer-completion-ignore-case",
2017 read_buffer_completion_ignore_case,
2018 doc: /* Non-nil means completion ignores case when reading a buffer name. */);
2019 read_buffer_completion_ignore_case = 0;
2021 DEFVAR_LISP ("minibuffer-setup-hook", Vminibuffer_setup_hook,
2022 doc: /* Normal hook run just after entry to minibuffer. */);
2023 Vminibuffer_setup_hook = Qnil;
2025 DEFVAR_LISP ("minibuffer-exit-hook", Vminibuffer_exit_hook,
2026 doc: /* Normal hook run just after exit from minibuffer. */);
2027 Vminibuffer_exit_hook = Qnil;
2029 DEFVAR_LISP ("history-length", Vhistory_length,
2030 doc: /* Maximum length of history lists before truncation takes place.
2031 A number means truncate to that length; truncation deletes old
2032 elements, and is done just after inserting a new element.
2033 A value of t means no truncation.
2035 This variable only affects history lists that don't specify their own
2036 maximum lengths. Setting the `history-length' property of a history
2037 variable overrides this default. */);
2038 XSETFASTINT (Vhistory_length, 30);
2040 DEFVAR_BOOL ("history-delete-duplicates", history_delete_duplicates,
2041 doc: /* Non-nil means to delete duplicates in history.
2042 If set to t when adding a new history element, all previous identical
2043 elements are deleted from the history list. */);
2044 history_delete_duplicates = 0;
2046 DEFVAR_LISP ("history-add-new-input", Vhistory_add_new_input,
2047 doc: /* Non-nil means to add new elements in history.
2048 If set to nil, minibuffer reading functions don't add new elements to the
2049 history list, so it is possible to do this afterwards by calling
2050 `add-to-history' explicitly. */);
2051 Vhistory_add_new_input = Qt;
2053 DEFVAR_BOOL ("completion-ignore-case", completion_ignore_case,
2054 doc: /* Non-nil means don't consider case significant in completion.
2055 For file-name completion, `read-file-name-completion-ignore-case'
2056 controls the behavior, rather than this variable.
2057 For buffer name completion, `read-buffer-completion-ignore-case'
2058 controls the behavior, rather than this variable. */);
2059 completion_ignore_case = 0;
2061 DEFVAR_BOOL ("enable-recursive-minibuffers", enable_recursive_minibuffers,
2062 doc: /* Non-nil means to allow minibuffer commands while in the minibuffer.
2063 This variable makes a difference whenever the minibuffer window is active. */);
2064 enable_recursive_minibuffers = 0;
2066 DEFVAR_LISP ("minibuffer-completion-table", Vminibuffer_completion_table,
2067 doc: /* Alist or obarray used for completion in the minibuffer.
2068 This becomes the ALIST argument to `try-completion' and `all-completions'.
2069 The value can also be a list of strings or a hash table.
2071 The value may alternatively be a function, which is given three arguments:
2072 STRING, the current buffer contents;
2073 PREDICATE, the predicate for filtering possible matches;
2074 CODE, which says what kind of things to do.
2075 CODE can be nil, t or `lambda':
2076 nil -- return the best completion of STRING, or nil if there is none.
2077 t -- return a list of all possible completions of STRING.
2078 lambda -- return t if STRING is a valid completion as it stands. */);
2079 Vminibuffer_completion_table = Qnil;
2081 DEFVAR_LISP ("minibuffer-completion-predicate", Vminibuffer_completion_predicate,
2082 doc: /* Within call to `completing-read', this holds the PREDICATE argument. */);
2083 Vminibuffer_completion_predicate = Qnil;
2085 DEFVAR_LISP ("minibuffer-completion-confirm", Vminibuffer_completion_confirm,
2086 doc: /* Whether to demand confirmation of completion before exiting minibuffer.
2087 If nil, confirmation is not required.
2088 If the value is `confirm', the user may exit with an input that is not
2089 a valid completion alternative, but Emacs asks for confirmation.
2090 If the value is `confirm-after-completion', the user may exit with an
2091 input that is not a valid completion alternative, but Emacs asks for
2092 confirmation if the user submitted the input right after any of the
2093 completion commands listed in `minibuffer-confirm-exit-commands'. */);
2094 Vminibuffer_completion_confirm = Qnil;
2096 DEFVAR_LISP ("minibuffer-completing-file-name",
2097 Vminibuffer_completing_file_name,
2098 doc: /* Non-nil means completing file names. */);
2099 Vminibuffer_completing_file_name = Qnil;
2101 DEFVAR_LISP ("minibuffer-help-form", Vminibuffer_help_form,
2102 doc: /* Value that `help-form' takes on inside the minibuffer. */);
2103 Vminibuffer_help_form = Qnil;
2105 DEFVAR_LISP ("minibuffer-history-variable", Vminibuffer_history_variable,
2106 doc: /* History list symbol to add minibuffer values to.
2107 Each string of minibuffer input, as it appears on exit from the minibuffer,
2108 is added with
2109 (set minibuffer-history-variable
2110 (cons STRING (symbol-value minibuffer-history-variable))) */);
2111 XSETFASTINT (Vminibuffer_history_variable, 0);
2113 DEFVAR_LISP ("minibuffer-history-position", Vminibuffer_history_position,
2114 doc: /* Current position of redoing in the history list. */);
2115 Vminibuffer_history_position = Qnil;
2117 DEFVAR_BOOL ("minibuffer-auto-raise", minibuffer_auto_raise,
2118 doc: /* Non-nil means entering the minibuffer raises the minibuffer's frame.
2119 Some uses of the echo area also raise that frame (since they use it too). */);
2120 minibuffer_auto_raise = 0;
2122 DEFVAR_LISP ("completion-regexp-list", Vcompletion_regexp_list,
2123 doc: /* List of regexps that should restrict possible completions.
2124 The basic completion functions only consider a completion acceptable
2125 if it matches all regular expressions in this list, with
2126 `case-fold-search' bound to the value of `completion-ignore-case'.
2127 See Info node `(elisp)Basic Completion', for a description of these
2128 functions. */);
2129 Vcompletion_regexp_list = Qnil;
2131 DEFVAR_BOOL ("minibuffer-allow-text-properties",
2132 minibuffer_allow_text_properties,
2133 doc: /* Non-nil means `read-from-minibuffer' should not discard text properties.
2134 This also affects `read-string', but it does not affect `read-minibuffer',
2135 `read-no-blanks-input', or any of the functions that do minibuffer input
2136 with completion; they always discard text properties. */);
2137 minibuffer_allow_text_properties = 0;
2139 DEFVAR_LISP ("minibuffer-prompt-properties", Vminibuffer_prompt_properties,
2140 doc: /* Text properties that are added to minibuffer prompts.
2141 These are in addition to the basic `field' property, and stickiness
2142 properties. */);
2143 /* We use `intern' here instead of Qread_only to avoid
2144 initialization-order problems. */
2145 Vminibuffer_prompt_properties
2146 = Fcons (intern_c_string ("read-only"), Fcons (Qt, Qnil));
2148 DEFVAR_LISP ("read-expression-map", Vread_expression_map,
2149 doc: /* Minibuffer keymap used for reading Lisp expressions. */);
2150 Vread_expression_map = Qnil;
2152 defsubr (&Sactive_minibuffer_window);
2153 defsubr (&Sset_minibuffer_window);
2154 defsubr (&Sread_from_minibuffer);
2155 defsubr (&Seval_minibuffer);
2156 defsubr (&Sread_minibuffer);
2157 defsubr (&Sread_string);
2158 defsubr (&Sread_command);
2159 defsubr (&Sread_variable);
2160 defsubr (&Sinternal_complete_buffer);
2161 defsubr (&Sread_buffer);
2162 defsubr (&Sread_no_blanks_input);
2163 defsubr (&Sminibuffer_depth);
2164 defsubr (&Sminibuffer_prompt);
2166 defsubr (&Sminibufferp);
2167 defsubr (&Sminibuffer_prompt_end);
2168 defsubr (&Sminibuffer_contents);
2169 defsubr (&Sminibuffer_contents_no_properties);
2170 defsubr (&Sminibuffer_completion_contents);
2172 defsubr (&Stry_completion);
2173 defsubr (&Sall_completions);
2174 defsubr (&Stest_completion);
2175 defsubr (&Sassoc_string);
2176 defsubr (&Scompleting_read);