Don't call Fset_window_buffer from C code.
[emacs.git] / src / minibuf.c
blob59da974df000825a5d3b297e3b65a690a3f98f96
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>
24 #include <setjmp.h>
26 #include "lisp.h"
27 #include "commands.h"
28 #include "character.h"
29 #include "buffer.h"
30 #include "dispextern.h"
31 #include "keyboard.h"
32 #include "frame.h"
33 #include "window.h"
34 #include "syntax.h"
35 #include "intervals.h"
36 #include "keymap.h"
37 #include "termhooks.h"
39 /* List of buffers for use as minibuffers.
40 The first element of the list is used for the outermost minibuffer
41 invocation, the next element is used for a recursive minibuffer
42 invocation, etc. The list is extended at the end as deeper
43 minibuffer recursions are encountered. */
45 Lisp_Object Vminibuffer_list;
47 /* Data to remember during recursive minibuffer invocations. */
49 static Lisp_Object minibuf_save_list;
51 /* Depth in minibuffer invocations. */
53 EMACS_INT minibuf_level;
55 /* The maximum length of a minibuffer history. */
57 static Lisp_Object Qhistory_length;
59 /* Fread_minibuffer leaves the input here as a string. */
61 Lisp_Object last_minibuf_string;
63 static Lisp_Object Qminibuffer_history, Qbuffer_name_history;
65 static Lisp_Object Qread_file_name_internal;
67 /* Normal hooks for entry to and exit from minibuffer. */
69 static Lisp_Object Qminibuffer_setup_hook;
70 static Lisp_Object Qminibuffer_exit_hook;
72 Lisp_Object Qcompletion_ignore_case;
73 static Lisp_Object Qminibuffer_completion_table;
74 static Lisp_Object Qminibuffer_completion_predicate;
75 static Lisp_Object Qminibuffer_completion_confirm;
76 static Lisp_Object Qcustom_variable_p;
78 static Lisp_Object Qminibuffer_default;
80 static Lisp_Object Qcurrent_input_method, Qactivate_input_method;
82 static Lisp_Object Qcase_fold_search;
84 static Lisp_Object Qread_expression_history;
86 /* Prompt to display in front of the mini-buffer contents. */
88 static Lisp_Object minibuf_prompt;
90 /* Width of current mini-buffer prompt. Only set after display_line
91 of the line that contains the prompt. */
93 static ptrdiff_t minibuf_prompt_width;
96 /* Put minibuf on currently selected frame's minibuffer.
97 We do this whenever the user starts a new minibuffer
98 or when a minibuffer exits. */
100 static void
101 choose_minibuf_frame (void)
103 if (FRAMEP (selected_frame)
104 && FRAME_LIVE_P (XFRAME (selected_frame))
105 && !EQ (minibuf_window, XFRAME (selected_frame)->minibuffer_window))
107 struct frame *sf = XFRAME (selected_frame);
108 Lisp_Object buffer;
110 /* I don't think that any frames may validly have a null minibuffer
111 window anymore. */
112 if (NILP (sf->minibuffer_window))
113 abort ();
115 /* Under X, we come here with minibuf_window being the
116 minibuffer window of the unused termcap window created in
117 init_window_once. That window doesn't have a buffer. */
118 buffer = XWINDOW (minibuf_window)->buffer;
119 if (BUFFERP (buffer))
120 /* Use set_window_buffer instead of Fset_window_buffer (see
121 discussion of bug#11984, bug#12025, bug#12026). */
122 set_window_buffer (sf->minibuffer_window, buffer, 0, 0);
123 minibuf_window = sf->minibuffer_window;
126 /* Make sure no other frame has a minibuffer as its selected window,
127 because the text would not be displayed in it, and that would be
128 confusing. Only allow the selected frame to do this,
129 and that only if the minibuffer is active. */
131 Lisp_Object tail, frame;
133 FOR_EACH_FRAME (tail, frame)
134 if (MINI_WINDOW_P (XWINDOW (FRAME_SELECTED_WINDOW (XFRAME (frame))))
135 && !(EQ (frame, selected_frame)
136 && minibuf_level > 0))
137 Fset_frame_selected_window (frame, Fframe_first_window (frame), Qnil);
141 static Lisp_Object
142 choose_minibuf_frame_1 (Lisp_Object ignore)
144 choose_minibuf_frame ();
145 return Qnil;
148 DEFUN ("active-minibuffer-window", Factive_minibuffer_window,
149 Sactive_minibuffer_window, 0, 0, 0,
150 doc: /* Return the currently active minibuffer window, or nil if none. */)
151 (void)
153 return minibuf_level ? minibuf_window : Qnil;
156 DEFUN ("set-minibuffer-window", Fset_minibuffer_window,
157 Sset_minibuffer_window, 1, 1, 0,
158 doc: /* Specify which minibuffer window to use for the minibuffer.
159 This affects where the minibuffer is displayed if you put text in it
160 without invoking the usual minibuffer commands. */)
161 (Lisp_Object window)
163 CHECK_WINDOW (window);
164 if (! MINI_WINDOW_P (XWINDOW (window)))
165 error ("Window is not a minibuffer window");
167 minibuf_window = window;
169 return window;
173 /* Actual minibuffer invocation. */
175 static Lisp_Object read_minibuf_unwind (Lisp_Object);
176 static Lisp_Object run_exit_minibuf_hook (Lisp_Object);
177 static Lisp_Object read_minibuf (Lisp_Object, Lisp_Object,
178 Lisp_Object,
179 int, Lisp_Object,
180 Lisp_Object, Lisp_Object,
181 int, int);
182 static Lisp_Object read_minibuf_noninteractive (Lisp_Object, Lisp_Object,
183 Lisp_Object, Lisp_Object,
184 int, Lisp_Object,
185 Lisp_Object, Lisp_Object,
186 int, int);
187 static Lisp_Object string_to_object (Lisp_Object, Lisp_Object);
190 /* Read a Lisp object from VAL and return it. If VAL is an empty
191 string, and DEFALT is a string, read from DEFALT instead of VAL. */
193 static Lisp_Object
194 string_to_object (Lisp_Object val, Lisp_Object defalt)
196 struct gcpro gcpro1, gcpro2;
197 Lisp_Object expr_and_pos;
198 ptrdiff_t pos;
200 GCPRO2 (val, defalt);
202 if (STRINGP (val) && SCHARS (val) == 0)
204 if (STRINGP (defalt))
205 val = defalt;
206 else if (CONSP (defalt) && STRINGP (XCAR (defalt)))
207 val = XCAR (defalt);
210 expr_and_pos = Fread_from_string (val, Qnil, Qnil);
211 pos = XINT (Fcdr (expr_and_pos));
212 if (pos != SCHARS (val))
214 /* Ignore trailing whitespace; any other trailing junk
215 is an error. */
216 ptrdiff_t i;
217 pos = string_char_to_byte (val, pos);
218 for (i = pos; i < SBYTES (val); i++)
220 int c = SREF (val, i);
221 if (c != ' ' && c != '\t' && c != '\n')
222 error ("Trailing garbage following expression");
226 val = Fcar (expr_and_pos);
227 RETURN_UNGCPRO (val);
231 /* Like read_minibuf but reading from stdin. This function is called
232 from read_minibuf to do the job if noninteractive. */
234 static Lisp_Object
235 read_minibuf_noninteractive (Lisp_Object map, Lisp_Object initial,
236 Lisp_Object prompt, Lisp_Object backup_n,
237 int expflag,
238 Lisp_Object histvar, Lisp_Object histpos,
239 Lisp_Object defalt,
240 int allow_props, int inherit_input_method)
242 ptrdiff_t size, len;
243 char *line;
244 Lisp_Object val;
245 int c;
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')
257 if (c == EOF)
259 if (errno != EINTR)
260 break;
262 else
264 if (len == size)
266 if (STRING_BYTES_BOUND / 2 < size)
267 memory_full (SIZE_MAX);
268 size *= 2;
269 line = xrealloc (line, size);
271 line[len++] = c;
275 if (len || c == '\n')
277 val = make_string (line, len);
278 xfree (line);
280 else
282 xfree (line);
283 error ("Error reading from stdin");
286 /* If Lisp form desired instead of string, parse it. */
287 if (expflag)
288 val = string_to_object (val, CONSP (defalt) ? XCAR (defalt) : defalt);
290 return val;
293 DEFUN ("minibufferp", Fminibufferp,
294 Sminibufferp, 0, 1, 0,
295 doc: /* Return t if BUFFER is a minibuffer.
296 No argument or nil as argument means use current buffer as BUFFER.
297 BUFFER can be a buffer or a buffer name. */)
298 (Lisp_Object buffer)
300 Lisp_Object tem;
302 if (NILP (buffer))
303 buffer = Fcurrent_buffer ();
304 else if (STRINGP (buffer))
305 buffer = Fget_buffer (buffer);
306 else
307 CHECK_BUFFER (buffer);
309 tem = Fmemq (buffer, Vminibuffer_list);
310 return ! NILP (tem) ? Qt : Qnil;
313 DEFUN ("minibuffer-prompt-end", Fminibuffer_prompt_end,
314 Sminibuffer_prompt_end, 0, 0, 0,
315 doc: /* Return the buffer position of the end of the minibuffer prompt.
316 Return (point-min) if current buffer is not a minibuffer. */)
317 (void)
319 /* This function is written to be most efficient when there's a prompt. */
320 Lisp_Object beg, end, tem;
321 beg = make_number (BEGV);
323 tem = Fmemq (Fcurrent_buffer (), Vminibuffer_list);
324 if (NILP (tem))
325 return beg;
327 end = Ffield_end (beg, Qnil, Qnil);
329 if (XINT (end) == ZV && NILP (Fget_char_property (beg, Qfield, Qnil)))
330 return beg;
331 else
332 return end;
335 DEFUN ("minibuffer-contents", Fminibuffer_contents,
336 Sminibuffer_contents, 0, 0, 0,
337 doc: /* Return the user input in a minibuffer as a string.
338 If the current buffer is not a minibuffer, return its entire contents. */)
339 (void)
341 ptrdiff_t prompt_end = XINT (Fminibuffer_prompt_end ());
342 return make_buffer_string (prompt_end, ZV, 1);
345 DEFUN ("minibuffer-contents-no-properties", Fminibuffer_contents_no_properties,
346 Sminibuffer_contents_no_properties, 0, 0, 0,
347 doc: /* Return the user input in a minibuffer as a string, without text-properties.
348 If the current buffer is not a minibuffer, return its entire contents. */)
349 (void)
351 ptrdiff_t prompt_end = XINT (Fminibuffer_prompt_end ());
352 return make_buffer_string (prompt_end, ZV, 0);
355 DEFUN ("minibuffer-completion-contents", Fminibuffer_completion_contents,
356 Sminibuffer_completion_contents, 0, 0, 0,
357 doc: /* Return the user input in a minibuffer before point as a string.
358 That is what completion commands operate on.
359 If the current buffer is not a minibuffer, return its entire contents. */)
360 (void)
362 ptrdiff_t prompt_end = XINT (Fminibuffer_prompt_end ());
363 if (PT < prompt_end)
364 error ("Cannot do completion in the prompt");
365 return make_buffer_string (prompt_end, PT, 1);
369 /* Read from the minibuffer using keymap MAP and initial contents INITIAL,
370 putting point minus BACKUP_N bytes from the end of INITIAL,
371 prompting with PROMPT (a string), using history list HISTVAR
372 with initial position HISTPOS. INITIAL should be a string or a
373 cons of a string and an integer. BACKUP_N should be <= 0, or
374 Qnil, which is equivalent to 0. If INITIAL is a cons, BACKUP_N is
375 ignored and replaced with an integer that puts point at one-indexed
376 position N in INITIAL, where N is the CDR of INITIAL, or at the
377 beginning of INITIAL if N <= 0.
379 Normally return the result as a string (the text that was read),
380 but if EXPFLAG is nonzero, read it and return the object read.
381 If HISTVAR is given, save the value read on that history only if it doesn't
382 match the front of that history list exactly. The value is pushed onto
383 the list as the string that was read.
385 DEFALT specifies the default value for the sake of history commands.
387 If ALLOW_PROPS is nonzero, we do not throw away text properties.
389 if INHERIT_INPUT_METHOD is nonzero, the minibuffer inherits the
390 current input method. */
392 static Lisp_Object
393 read_minibuf (Lisp_Object map, Lisp_Object initial, Lisp_Object prompt,
394 int expflag,
395 Lisp_Object histvar, Lisp_Object histpos, Lisp_Object defalt,
396 int allow_props, int inherit_input_method)
398 Lisp_Object val;
399 ptrdiff_t count = SPECPDL_INDEX ();
400 Lisp_Object mini_frame, ambient_dir, minibuffer, input_method;
401 struct gcpro gcpro1, gcpro2, gcpro3, gcpro4, gcpro5;
402 Lisp_Object enable_multibyte;
403 EMACS_INT pos = 0;
404 /* String to add to the history. */
405 Lisp_Object histstring;
407 Lisp_Object empty_minibuf;
408 Lisp_Object dummy, frame;
410 specbind (Qminibuffer_default, defalt);
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 (current_buffer, truncate_lines, Qnil);
569 /* If appropriate, copy enable-multibyte-characters into the minibuffer. */
570 if (inherit_input_method)
571 BSET (current_buffer, enable_multibyte_characters, 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 (current_buffer, directory, 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 (current_buffer, directory,
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 (current_buffer, keymap, 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 (current_buffer, undo_list, 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) || NILP (BVAR (XBUFFER (buf), name)))
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_protect (Fset_buffer, Fcurrent_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 \\[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;
1862 extern Lisp_Object Qbuffer;
1864 DEFUN ("internal-complete-buffer", Finternal_complete_buffer, Sinternal_complete_buffer, 3, 3, 0,
1865 doc: /* Perform completion on buffer names.
1866 If the argument FLAG is nil, invoke `try-completion', if it's t, invoke
1867 `all-completions', otherwise invoke `test-completion'.
1869 The arguments STRING and PREDICATE are as in `try-completion',
1870 `all-completions', and `test-completion'. */)
1871 (Lisp_Object string, Lisp_Object predicate, Lisp_Object flag)
1873 if (NILP (flag))
1874 return Ftry_completion (string, Vbuffer_alist, predicate);
1875 else if (EQ (flag, Qt))
1877 Lisp_Object res = Fall_completions (string, Vbuffer_alist, predicate, Qnil);
1878 if (SCHARS (string) > 0)
1879 return res;
1880 else
1881 { /* Strip out internal buffers. */
1882 Lisp_Object bufs = res;
1883 /* First, look for a non-internal buffer in `res'. */
1884 while (CONSP (bufs) && SREF (XCAR (bufs), 0) == ' ')
1885 bufs = XCDR (bufs);
1886 if (NILP (bufs))
1887 return (EQ (Flength (res), Flength (Vbuffer_alist))
1888 /* If all bufs are internal don't strip them out. */
1889 ? res : bufs);
1890 res = bufs;
1891 while (CONSP (XCDR (bufs)))
1892 if (SREF (XCAR (XCDR (bufs)), 0) == ' ')
1893 XSETCDR (bufs, XCDR (XCDR (bufs)));
1894 else
1895 bufs = XCDR (bufs);
1896 return res;
1899 else if (EQ (flag, Qlambda))
1900 return Ftest_completion (string, Vbuffer_alist, predicate);
1901 else if (EQ (flag, Qmetadata))
1902 return Fcons (Qmetadata, Fcons (Fcons (Qcategory, Qbuffer), Qnil));
1903 else
1904 return Qnil;
1907 /* Like assoc but assumes KEY is a string, and ignores case if appropriate. */
1909 DEFUN ("assoc-string", Fassoc_string, Sassoc_string, 2, 3, 0,
1910 doc: /* Like `assoc' but specifically for strings (and symbols).
1912 This returns the first element of LIST whose car matches the string or
1913 symbol KEY, or nil if no match exists. When performing the
1914 comparison, symbols are first converted to strings, and unibyte
1915 strings to multibyte. If the optional arg CASE-FOLD is non-nil, case
1916 is ignored.
1918 Unlike `assoc', KEY can also match an entry in LIST consisting of a
1919 single string, rather than a cons cell whose car is a string. */)
1920 (register Lisp_Object key, Lisp_Object list, Lisp_Object case_fold)
1922 register Lisp_Object tail;
1924 if (SYMBOLP (key))
1925 key = Fsymbol_name (key);
1927 for (tail = list; CONSP (tail); tail = XCDR (tail))
1929 register Lisp_Object elt, tem, thiscar;
1930 elt = XCAR (tail);
1931 thiscar = CONSP (elt) ? XCAR (elt) : elt;
1932 if (SYMBOLP (thiscar))
1933 thiscar = Fsymbol_name (thiscar);
1934 else if (!STRINGP (thiscar))
1935 continue;
1936 tem = Fcompare_strings (thiscar, make_number (0), Qnil,
1937 key, make_number (0), Qnil,
1938 case_fold);
1939 if (EQ (tem, Qt))
1940 return elt;
1941 QUIT;
1943 return Qnil;
1947 DEFUN ("minibuffer-depth", Fminibuffer_depth, Sminibuffer_depth, 0, 0, 0,
1948 doc: /* Return current depth of activations of minibuffer, a nonnegative integer. */)
1949 (void)
1951 return make_number (minibuf_level);
1954 DEFUN ("minibuffer-prompt", Fminibuffer_prompt, Sminibuffer_prompt, 0, 0, 0,
1955 doc: /* Return the prompt string of the currently-active minibuffer.
1956 If no minibuffer is active, return nil. */)
1957 (void)
1959 return Fcopy_sequence (minibuf_prompt);
1963 void
1964 init_minibuf_once (void)
1966 Vminibuffer_list = Qnil;
1967 staticpro (&Vminibuffer_list);
1970 void
1971 syms_of_minibuf (void)
1973 minibuf_level = 0;
1974 minibuf_prompt = Qnil;
1975 staticpro (&minibuf_prompt);
1977 minibuf_save_list = Qnil;
1978 staticpro (&minibuf_save_list);
1980 DEFSYM (Qcompletion_ignore_case, "completion-ignore-case");
1981 DEFSYM (Qread_file_name_internal, "read-file-name-internal");
1982 DEFSYM (Qminibuffer_default, "minibuffer-default");
1983 Fset (Qminibuffer_default, Qnil);
1985 DEFSYM (Qminibuffer_completion_table, "minibuffer-completion-table");
1986 DEFSYM (Qminibuffer_completion_confirm, "minibuffer-completion-confirm");
1987 DEFSYM (Qminibuffer_completion_predicate, "minibuffer-completion-predicate");
1989 staticpro (&last_minibuf_string);
1990 last_minibuf_string = Qnil;
1992 DEFSYM (Qminibuffer_history, "minibuffer-history");
1993 DEFSYM (Qbuffer_name_history, "buffer-name-history");
1994 Fset (Qbuffer_name_history, Qnil);
1996 DEFSYM (Qcustom_variable_p, "custom-variable-p");
1997 DEFSYM (Qminibuffer_setup_hook, "minibuffer-setup-hook");
1998 DEFSYM (Qminibuffer_exit_hook, "minibuffer-exit-hook");
1999 DEFSYM (Qhistory_length, "history-length");
2000 DEFSYM (Qcurrent_input_method, "current-input-method");
2001 DEFSYM (Qactivate_input_method, "activate-input-method");
2002 DEFSYM (Qcase_fold_search, "case-fold-search");
2003 DEFSYM (Qmetadata, "metadata");
2005 DEFVAR_LISP ("read-expression-history", Vread_expression_history,
2006 doc: /* A history list for arguments that are Lisp expressions to evaluate.
2007 For example, `eval-expression' uses this. */);
2008 Vread_expression_history = Qnil;
2010 DEFSYM (Qread_expression_history, "read-expression-history");
2012 DEFVAR_LISP ("read-buffer-function", Vread_buffer_function,
2013 doc: /* If this is non-nil, `read-buffer' does its work by calling this function.
2014 The function is called with the arguments passed to `read-buffer'. */);
2015 Vread_buffer_function = Qnil;
2017 DEFVAR_BOOL ("read-buffer-completion-ignore-case",
2018 read_buffer_completion_ignore_case,
2019 doc: /* Non-nil means completion ignores case when reading a buffer name. */);
2020 read_buffer_completion_ignore_case = 0;
2022 DEFVAR_LISP ("minibuffer-setup-hook", Vminibuffer_setup_hook,
2023 doc: /* Normal hook run just after entry to minibuffer. */);
2024 Vminibuffer_setup_hook = Qnil;
2026 DEFVAR_LISP ("minibuffer-exit-hook", Vminibuffer_exit_hook,
2027 doc: /* Normal hook run just after exit from minibuffer. */);
2028 Vminibuffer_exit_hook = Qnil;
2030 DEFVAR_LISP ("history-length", Vhistory_length,
2031 doc: /* Maximum length of history lists before truncation takes place.
2032 A number means truncate to that length; truncation deletes old
2033 elements, and is done just after inserting a new element.
2034 A value of t means no truncation.
2036 This variable only affects history lists that don't specify their own
2037 maximum lengths. Setting the `history-length' property of a history
2038 variable overrides this default. */);
2039 XSETFASTINT (Vhistory_length, 30);
2041 DEFVAR_BOOL ("history-delete-duplicates", history_delete_duplicates,
2042 doc: /* Non-nil means to delete duplicates in history.
2043 If set to t when adding a new history element, all previous identical
2044 elements are deleted from the history list. */);
2045 history_delete_duplicates = 0;
2047 DEFVAR_LISP ("history-add-new-input", Vhistory_add_new_input,
2048 doc: /* Non-nil means to add new elements in history.
2049 If set to nil, minibuffer reading functions don't add new elements to the
2050 history list, so it is possible to do this afterwards by calling
2051 `add-to-history' explicitly. */);
2052 Vhistory_add_new_input = Qt;
2054 DEFVAR_BOOL ("completion-ignore-case", completion_ignore_case,
2055 doc: /* Non-nil means don't consider case significant in completion.
2056 For file-name completion, `read-file-name-completion-ignore-case'
2057 controls the behavior, rather than this variable.
2058 For buffer name completion, `read-buffer-completion-ignore-case'
2059 controls the behavior, rather than this variable. */);
2060 completion_ignore_case = 0;
2062 DEFVAR_BOOL ("enable-recursive-minibuffers", enable_recursive_minibuffers,
2063 doc: /* Non-nil means to allow minibuffer commands while in the minibuffer.
2064 This variable makes a difference whenever the minibuffer window is active. */);
2065 enable_recursive_minibuffers = 0;
2067 DEFVAR_LISP ("minibuffer-completion-table", Vminibuffer_completion_table,
2068 doc: /* Alist or obarray used for completion in the minibuffer.
2069 This becomes the ALIST argument to `try-completion' and `all-completions'.
2070 The value can also be a list of strings or a hash table.
2072 The value may alternatively be a function, which is given three arguments:
2073 STRING, the current buffer contents;
2074 PREDICATE, the predicate for filtering possible matches;
2075 CODE, which says what kind of things to do.
2076 CODE can be nil, t or `lambda':
2077 nil -- return the best completion of STRING, or nil if there is none.
2078 t -- return a list of all possible completions of STRING.
2079 lambda -- return t if STRING is a valid completion as it stands. */);
2080 Vminibuffer_completion_table = Qnil;
2082 DEFVAR_LISP ("minibuffer-completion-predicate", Vminibuffer_completion_predicate,
2083 doc: /* Within call to `completing-read', this holds the PREDICATE argument. */);
2084 Vminibuffer_completion_predicate = Qnil;
2086 DEFVAR_LISP ("minibuffer-completion-confirm", Vminibuffer_completion_confirm,
2087 doc: /* Whether to demand confirmation of completion before exiting minibuffer.
2088 If nil, confirmation is not required.
2089 If the value is `confirm', the user may exit with an input that is not
2090 a valid completion alternative, but Emacs asks for confirmation.
2091 If the value is `confirm-after-completion', the user may exit with an
2092 input that is not a valid completion alternative, but Emacs asks for
2093 confirmation if the user submitted the input right after any of the
2094 completion commands listed in `minibuffer-confirm-exit-commands'. */);
2095 Vminibuffer_completion_confirm = Qnil;
2097 DEFVAR_LISP ("minibuffer-completing-file-name",
2098 Vminibuffer_completing_file_name,
2099 doc: /* Non-nil means completing file names. */);
2100 Vminibuffer_completing_file_name = Qnil;
2102 DEFVAR_LISP ("minibuffer-help-form", Vminibuffer_help_form,
2103 doc: /* Value that `help-form' takes on inside the minibuffer. */);
2104 Vminibuffer_help_form = Qnil;
2106 DEFVAR_LISP ("minibuffer-history-variable", Vminibuffer_history_variable,
2107 doc: /* History list symbol to add minibuffer values to.
2108 Each string of minibuffer input, as it appears on exit from the minibuffer,
2109 is added with
2110 (set minibuffer-history-variable
2111 (cons STRING (symbol-value minibuffer-history-variable))) */);
2112 XSETFASTINT (Vminibuffer_history_variable, 0);
2114 DEFVAR_LISP ("minibuffer-history-position", Vminibuffer_history_position,
2115 doc: /* Current position of redoing in the history list. */);
2116 Vminibuffer_history_position = Qnil;
2118 DEFVAR_BOOL ("minibuffer-auto-raise", minibuffer_auto_raise,
2119 doc: /* Non-nil means entering the minibuffer raises the minibuffer's frame.
2120 Some uses of the echo area also raise that frame (since they use it too). */);
2121 minibuffer_auto_raise = 0;
2123 DEFVAR_LISP ("completion-regexp-list", Vcompletion_regexp_list,
2124 doc: /* List of regexps that should restrict possible completions.
2125 The basic completion functions only consider a completion acceptable
2126 if it matches all regular expressions in this list, with
2127 `case-fold-search' bound to the value of `completion-ignore-case'.
2128 See Info node `(elisp)Basic Completion', for a description of these
2129 functions. */);
2130 Vcompletion_regexp_list = Qnil;
2132 DEFVAR_BOOL ("minibuffer-allow-text-properties",
2133 minibuffer_allow_text_properties,
2134 doc: /* Non-nil means `read-from-minibuffer' should not discard text properties.
2135 This also affects `read-string', but it does not affect `read-minibuffer',
2136 `read-no-blanks-input', or any of the functions that do minibuffer input
2137 with completion; they always discard text properties. */);
2138 minibuffer_allow_text_properties = 0;
2140 DEFVAR_LISP ("minibuffer-prompt-properties", Vminibuffer_prompt_properties,
2141 doc: /* Text properties that are added to minibuffer prompts.
2142 These are in addition to the basic `field' property, and stickiness
2143 properties. */);
2144 /* We use `intern' here instead of Qread_only to avoid
2145 initialization-order problems. */
2146 Vminibuffer_prompt_properties
2147 = Fcons (intern_c_string ("read-only"), Fcons (Qt, Qnil));
2149 DEFVAR_LISP ("read-expression-map", Vread_expression_map,
2150 doc: /* Minibuffer keymap used for reading Lisp expressions. */);
2151 Vread_expression_map = Qnil;
2153 defsubr (&Sactive_minibuffer_window);
2154 defsubr (&Sset_minibuffer_window);
2155 defsubr (&Sread_from_minibuffer);
2156 defsubr (&Seval_minibuffer);
2157 defsubr (&Sread_minibuffer);
2158 defsubr (&Sread_string);
2159 defsubr (&Sread_command);
2160 defsubr (&Sread_variable);
2161 defsubr (&Sinternal_complete_buffer);
2162 defsubr (&Sread_buffer);
2163 defsubr (&Sread_no_blanks_input);
2164 defsubr (&Sminibuffer_depth);
2165 defsubr (&Sminibuffer_prompt);
2167 defsubr (&Sminibufferp);
2168 defsubr (&Sminibuffer_prompt_end);
2169 defsubr (&Sminibuffer_contents);
2170 defsubr (&Sminibuffer_contents_no_properties);
2171 defsubr (&Sminibuffer_completion_contents);
2173 defsubr (&Stry_completion);
2174 defsubr (&Sall_completions);
2175 defsubr (&Stest_completion);
2176 defsubr (&Sassoc_string);
2177 defsubr (&Scompleting_read);