Merge from trunk
[emacs.git] / src / minibuf.c
bloba41a7bb568b1773f41d4a3d175c8a98d313a997e
1 /* Minibuffer input and completion.
3 Copyright (C) 1985-1986, 1993-2011 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 <stdio.h>
23 #include <setjmp.h>
25 #include "lisp.h"
26 #include "commands.h"
27 #include "buffer.h"
28 #include "character.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 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 Qcompleting_read_default;
76 static Lisp_Object Quser_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 EMACS_INT 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 Fset_window_buffer (sf->minibuffer_window, buffer, Qnil);
121 minibuf_window = sf->minibuffer_window;
124 /* Make sure no other frame has a minibuffer as its selected window,
125 because the text would not be displayed in it, and that would be
126 confusing. Only allow the selected frame to do this,
127 and that only if the minibuffer is active. */
129 Lisp_Object tail, frame;
131 FOR_EACH_FRAME (tail, frame)
132 if (MINI_WINDOW_P (XWINDOW (FRAME_SELECTED_WINDOW (XFRAME (frame))))
133 && !(EQ (frame, selected_frame)
134 && minibuf_level > 0))
135 Fset_frame_selected_window (frame, Fframe_first_window (frame), Qnil);
139 static Lisp_Object
140 choose_minibuf_frame_1 (Lisp_Object ignore)
142 choose_minibuf_frame ();
143 return Qnil;
146 DEFUN ("active-minibuffer-window", Factive_minibuffer_window,
147 Sactive_minibuffer_window, 0, 0, 0,
148 doc: /* Return the currently active minibuffer window, or nil if none. */)
149 (void)
151 return minibuf_level ? minibuf_window : Qnil;
154 DEFUN ("set-minibuffer-window", Fset_minibuffer_window,
155 Sset_minibuffer_window, 1, 1, 0,
156 doc: /* Specify which minibuffer window to use for the minibuffer.
157 This affects where the minibuffer is displayed if you put text in it
158 without invoking the usual minibuffer commands. */)
159 (Lisp_Object window)
161 CHECK_WINDOW (window);
162 if (! MINI_WINDOW_P (XWINDOW (window)))
163 error ("Window is not a minibuffer window");
165 minibuf_window = window;
167 return window;
171 /* Actual minibuffer invocation. */
173 static Lisp_Object read_minibuf_unwind (Lisp_Object);
174 static Lisp_Object run_exit_minibuf_hook (Lisp_Object);
175 static Lisp_Object read_minibuf (Lisp_Object, Lisp_Object,
176 Lisp_Object, Lisp_Object,
177 int, Lisp_Object,
178 Lisp_Object, Lisp_Object,
179 int, int);
180 static Lisp_Object read_minibuf_noninteractive (Lisp_Object, Lisp_Object,
181 Lisp_Object, Lisp_Object,
182 int, Lisp_Object,
183 Lisp_Object, Lisp_Object,
184 int, int);
185 static Lisp_Object string_to_object (Lisp_Object, Lisp_Object);
188 /* Read a Lisp object from VAL and return it. If VAL is an empty
189 string, and DEFALT is a string, read from DEFALT instead of VAL. */
191 static Lisp_Object
192 string_to_object (Lisp_Object val, Lisp_Object defalt)
194 struct gcpro gcpro1, gcpro2;
195 Lisp_Object expr_and_pos;
196 EMACS_INT pos;
198 GCPRO2 (val, defalt);
200 if (STRINGP (val) && SCHARS (val) == 0)
202 if (STRINGP (defalt))
203 val = defalt;
204 else if (CONSP (defalt) && STRINGP (XCAR (defalt)))
205 val = XCAR (defalt);
208 expr_and_pos = Fread_from_string (val, Qnil, Qnil);
209 pos = XINT (Fcdr (expr_and_pos));
210 if (pos != SCHARS (val))
212 /* Ignore trailing whitespace; any other trailing junk
213 is an error. */
214 EMACS_INT i;
215 pos = string_char_to_byte (val, pos);
216 for (i = pos; i < SBYTES (val); i++)
218 int c = SREF (val, i);
219 if (c != ' ' && c != '\t' && c != '\n')
220 error ("Trailing garbage following expression");
224 val = Fcar (expr_and_pos);
225 RETURN_UNGCPRO (val);
229 /* Like read_minibuf but reading from stdin. This function is called
230 from read_minibuf to do the job if noninteractive. */
232 static Lisp_Object
233 read_minibuf_noninteractive (Lisp_Object map, Lisp_Object initial,
234 Lisp_Object prompt, Lisp_Object backup_n,
235 int expflag,
236 Lisp_Object histvar, Lisp_Object histpos,
237 Lisp_Object defalt,
238 int allow_props, int inherit_input_method)
240 size_t size, len;
241 char *line, *s;
242 Lisp_Object val;
244 fprintf (stdout, "%s", SDATA (prompt));
245 fflush (stdout);
247 val = Qnil;
248 size = 100;
249 len = 0;
250 line = (char *) xmalloc (size * sizeof *line);
251 while ((s = fgets (line + len, size - len, stdin)) != NULL
252 && (len = strlen (line),
253 len == size - 1 && line[len - 1] != '\n'))
255 if ((size_t) -1 / 2 < size)
256 memory_full ();
257 size *= 2;
258 line = (char *) xrealloc (line, size);
261 if (s)
263 len = strlen (line);
265 if (len > 0 && line[len - 1] == '\n')
266 line[--len] = '\0';
268 val = build_string (line);
269 xfree (line);
271 else
273 xfree (line);
274 error ("Error reading from stdin");
277 /* If Lisp form desired instead of string, parse it. */
278 if (expflag)
279 val = string_to_object (val, CONSP (defalt) ? XCAR (defalt) : defalt);
281 return val;
284 DEFUN ("minibufferp", Fminibufferp,
285 Sminibufferp, 0, 1, 0,
286 doc: /* Return t if BUFFER is a minibuffer.
287 No argument or nil as argument means use current buffer as BUFFER.
288 BUFFER can be a buffer or a buffer name. */)
289 (Lisp_Object buffer)
291 Lisp_Object tem;
293 if (NILP (buffer))
294 buffer = Fcurrent_buffer ();
295 else if (STRINGP (buffer))
296 buffer = Fget_buffer (buffer);
297 else
298 CHECK_BUFFER (buffer);
300 tem = Fmemq (buffer, Vminibuffer_list);
301 return ! NILP (tem) ? Qt : Qnil;
304 DEFUN ("minibuffer-prompt-end", Fminibuffer_prompt_end,
305 Sminibuffer_prompt_end, 0, 0, 0,
306 doc: /* Return the buffer position of the end of the minibuffer prompt.
307 Return (point-min) if current buffer is not a minibuffer. */)
308 (void)
310 /* This function is written to be most efficient when there's a prompt. */
311 Lisp_Object beg, end, tem;
312 beg = make_number (BEGV);
314 tem = Fmemq (Fcurrent_buffer (), Vminibuffer_list);
315 if (NILP (tem))
316 return beg;
318 end = Ffield_end (beg, Qnil, Qnil);
320 if (XINT (end) == ZV && NILP (Fget_char_property (beg, Qfield, Qnil)))
321 return beg;
322 else
323 return end;
326 DEFUN ("minibuffer-contents", Fminibuffer_contents,
327 Sminibuffer_contents, 0, 0, 0,
328 doc: /* Return the user input in a minibuffer as a string.
329 If the current buffer is not a minibuffer, return its entire contents. */)
330 (void)
332 EMACS_INT prompt_end = XINT (Fminibuffer_prompt_end ());
333 return make_buffer_string (prompt_end, ZV, 1);
336 DEFUN ("minibuffer-contents-no-properties", Fminibuffer_contents_no_properties,
337 Sminibuffer_contents_no_properties, 0, 0, 0,
338 doc: /* Return the user input in a minibuffer as a string, without text-properties.
339 If the current buffer is not a minibuffer, return its entire contents. */)
340 (void)
342 EMACS_INT prompt_end = XINT (Fminibuffer_prompt_end ());
343 return make_buffer_string (prompt_end, ZV, 0);
346 DEFUN ("minibuffer-completion-contents", Fminibuffer_completion_contents,
347 Sminibuffer_completion_contents, 0, 0, 0,
348 doc: /* Return the user input in a minibuffer before point as a string.
349 That is what completion commands operate on.
350 If the current buffer is not a minibuffer, return its entire contents. */)
351 (void)
353 EMACS_INT prompt_end = XINT (Fminibuffer_prompt_end ());
354 if (PT < prompt_end)
355 error ("Cannot do completion in the prompt");
356 return make_buffer_string (prompt_end, PT, 1);
360 /* Read from the minibuffer using keymap MAP and initial contents INITIAL,
361 putting point minus BACKUP_N bytes from the end of INITIAL,
362 prompting with PROMPT (a string), using history list HISTVAR
363 with initial position HISTPOS. INITIAL should be a string or a
364 cons of a string and an integer. BACKUP_N should be <= 0, or
365 Qnil, which is equivalent to 0. If INITIAL is a cons, BACKUP_N is
366 ignored and replaced with an integer that puts point at one-indexed
367 position N in INITIAL, where N is the CDR of INITIAL, or at the
368 beginning of INITIAL if N <= 0.
370 Normally return the result as a string (the text that was read),
371 but if EXPFLAG is nonzero, read it and return the object read.
372 If HISTVAR is given, save the value read on that history only if it doesn't
373 match the front of that history list exactly. The value is pushed onto
374 the list as the string that was read.
376 DEFALT specifies the default value for the sake of history commands.
378 If ALLOW_PROPS is nonzero, we do not throw away text properties.
380 if INHERIT_INPUT_METHOD is nonzero, the minibuffer inherits the
381 current input method. */
383 static Lisp_Object
384 read_minibuf (Lisp_Object map, Lisp_Object initial, Lisp_Object prompt,
385 Lisp_Object backup_n, int expflag,
386 Lisp_Object histvar, Lisp_Object histpos, Lisp_Object defalt,
387 int allow_props, int inherit_input_method)
389 Lisp_Object val;
390 int count = SPECPDL_INDEX ();
391 Lisp_Object mini_frame, ambient_dir, minibuffer, input_method;
392 struct gcpro gcpro1, gcpro2, gcpro3, gcpro4, gcpro5;
393 Lisp_Object enable_multibyte;
394 int pos = INTEGERP (backup_n) ? XINT (backup_n) : 0;
395 /* String to add to the history. */
396 Lisp_Object histstring;
398 Lisp_Object empty_minibuf;
399 Lisp_Object dummy, frame;
401 specbind (Qminibuffer_default, defalt);
403 /* If Vminibuffer_completing_file_name is `lambda' on entry, it was t
404 in previous recursive minibuffer, but was not set explicitly
405 to t for this invocation, so set it to nil in this minibuffer.
406 Save the old value now, before we change it. */
407 specbind (intern ("minibuffer-completing-file-name"), Vminibuffer_completing_file_name);
408 if (EQ (Vminibuffer_completing_file_name, Qlambda))
409 Vminibuffer_completing_file_name = Qnil;
411 #ifdef HAVE_WINDOW_SYSTEM
412 if (display_hourglass_p)
413 cancel_hourglass ();
414 #endif
416 if (!NILP (initial))
418 if (CONSP (initial))
420 backup_n = Fcdr (initial);
421 initial = Fcar (initial);
422 CHECK_STRING (initial);
423 if (!NILP (backup_n))
425 CHECK_NUMBER (backup_n);
426 /* Convert to distance from end of input. */
427 if (XINT (backup_n) < 1)
428 /* A number too small means the beginning of the string. */
429 pos = - SCHARS (initial);
430 else
431 pos = XINT (backup_n) - 1 - SCHARS (initial);
434 else
435 CHECK_STRING (initial);
437 val = Qnil;
438 ambient_dir = BVAR (current_buffer, directory);
439 input_method = Qnil;
440 enable_multibyte = Qnil;
442 /* Don't need to protect PROMPT, HISTVAR, and HISTPOS because we
443 store them away before we can GC. Don't need to protect
444 BACKUP_N because we use the value only if it is an integer. */
445 GCPRO5 (map, initial, val, ambient_dir, input_method);
447 if (!STRINGP (prompt))
448 prompt = empty_unibyte_string;
450 if (!enable_recursive_minibuffers
451 && minibuf_level > 0)
453 if (EQ (selected_window, minibuf_window))
454 error ("Command attempted to use minibuffer while in minibuffer");
455 else
456 /* If we're in another window, cancel the minibuffer that's active. */
457 Fthrow (Qexit,
458 build_string ("Command attempted to use minibuffer while in minibuffer"));
461 if ((noninteractive
462 /* In case we are running as a daemon, only do this before
463 detaching from the terminal. */
464 || (IS_DAEMON && (daemon_pipe[1] >= 0)))
465 && NILP (Vexecuting_kbd_macro))
467 val = read_minibuf_noninteractive (map, initial, prompt,
468 make_number (pos),
469 expflag, histvar, histpos, defalt,
470 allow_props, inherit_input_method);
471 UNGCPRO;
472 return unbind_to (count, val);
475 /* Choose the minibuffer window and frame, and take action on them. */
477 choose_minibuf_frame ();
479 record_unwind_protect (choose_minibuf_frame_1, Qnil);
481 record_unwind_protect (Fset_window_configuration,
482 Fcurrent_window_configuration (Qnil));
484 /* If the minibuffer window is on a different frame, save that
485 frame's configuration too. */
486 mini_frame = WINDOW_FRAME (XWINDOW (minibuf_window));
487 if (!EQ (mini_frame, selected_frame))
488 record_unwind_protect (Fset_window_configuration,
489 Fcurrent_window_configuration (mini_frame));
491 /* If the minibuffer is on an iconified or invisible frame,
492 make it visible now. */
493 Fmake_frame_visible (mini_frame);
495 if (minibuffer_auto_raise)
496 Fraise_frame (mini_frame);
498 temporarily_switch_to_single_kboard (XFRAME (mini_frame));
500 /* We have to do this after saving the window configuration
501 since that is what restores the current buffer. */
503 /* Arrange to restore a number of minibuffer-related variables.
504 We could bind each variable separately, but that would use lots of
505 specpdl slots. */
506 minibuf_save_list
507 = Fcons (Voverriding_local_map,
508 Fcons (minibuf_window,
509 minibuf_save_list));
510 minibuf_save_list
511 = Fcons (minibuf_prompt,
512 Fcons (make_number (minibuf_prompt_width),
513 Fcons (Vhelp_form,
514 Fcons (Vcurrent_prefix_arg,
515 Fcons (Vminibuffer_history_position,
516 Fcons (Vminibuffer_history_variable,
517 minibuf_save_list))))));
519 record_unwind_protect (read_minibuf_unwind, Qnil);
520 minibuf_level++;
521 /* We are exiting the minibuffer one way or the other, so run the hook.
522 It should be run before unwinding the minibuf settings. Do it
523 separately from read_minibuf_unwind because we need to make sure that
524 read_minibuf_unwind is fully executed even if exit-minibuffer-hook
525 signals an error. --Stef */
526 record_unwind_protect (run_exit_minibuf_hook, Qnil);
528 /* Now that we can restore all those variables, start changing them. */
530 minibuf_prompt_width = 0;
531 minibuf_prompt = Fcopy_sequence (prompt);
532 Vminibuffer_history_position = histpos;
533 Vminibuffer_history_variable = histvar;
534 Vhelp_form = Vminibuffer_help_form;
535 /* If this minibuffer is reading a file name, that doesn't mean
536 recursive ones are. But we cannot set it to nil, because
537 completion code still need to know the minibuffer is completing a
538 file name. So use `lambda' as intermediate value meaning
539 "t" in this minibuffer, but "nil" in next minibuffer. */
540 if (!NILP (Vminibuffer_completing_file_name))
541 Vminibuffer_completing_file_name = Qlambda;
543 if (inherit_input_method)
545 /* `current-input-method' is buffer local. So, remember it in
546 INPUT_METHOD before changing the current buffer. */
547 input_method = Fsymbol_value (Qcurrent_input_method);
548 enable_multibyte = BVAR (current_buffer, enable_multibyte_characters);
551 /* Switch to the minibuffer. */
553 minibuffer = get_minibuffer (minibuf_level);
554 Fset_buffer (minibuffer);
556 /* If appropriate, copy enable-multibyte-characters into the minibuffer. */
557 if (inherit_input_method)
558 BVAR (current_buffer, enable_multibyte_characters) = enable_multibyte;
560 /* The current buffer's default directory is usually the right thing
561 for our minibuffer here. However, if you're typing a command at
562 a minibuffer-only frame when minibuf_level is zero, then buf IS
563 the current_buffer, so reset_buffer leaves buf's default
564 directory unchanged. This is a bummer when you've just started
565 up Emacs and buf's default directory is Qnil. Here's a hack; can
566 you think of something better to do? Find another buffer with a
567 better directory, and use that one instead. */
568 if (STRINGP (ambient_dir))
569 BVAR (current_buffer, directory) = ambient_dir;
570 else
572 Lisp_Object buf_list;
574 for (buf_list = Vbuffer_alist;
575 CONSP (buf_list);
576 buf_list = XCDR (buf_list))
578 Lisp_Object other_buf;
580 other_buf = XCDR (XCAR (buf_list));
581 if (STRINGP (BVAR (XBUFFER (other_buf), directory)))
583 BVAR (current_buffer, directory) = BVAR (XBUFFER (other_buf), directory);
584 break;
589 if (!EQ (mini_frame, selected_frame))
590 Fredirect_frame_focus (selected_frame, mini_frame);
592 Vminibuf_scroll_window = selected_window;
593 if (minibuf_level == 1 || !EQ (minibuf_window, selected_window))
594 minibuf_selected_window = selected_window;
596 /* Empty out the minibuffers of all frames other than the one
597 where we are going to display one now.
598 Set them to point to ` *Minibuf-0*', which is always empty. */
599 empty_minibuf = get_minibuffer (0);
601 FOR_EACH_FRAME (dummy, frame)
603 Lisp_Object root_window = Fframe_root_window (frame);
604 Lisp_Object mini_window = XWINDOW (root_window)->next;
606 if (! NILP (mini_window) && ! EQ (mini_window, minibuf_window)
607 && !NILP (Fwindow_minibuffer_p (mini_window)))
608 Fset_window_buffer (mini_window, empty_minibuf, Qnil);
611 /* Display this minibuffer in the proper window. */
612 Fset_window_buffer (minibuf_window, Fcurrent_buffer (), Qnil);
613 Fselect_window (minibuf_window, Qnil);
614 XSETFASTINT (XWINDOW (minibuf_window)->hscroll, 0);
616 Fmake_local_variable (Qprint_escape_newlines);
617 print_escape_newlines = 1;
619 /* Erase the buffer. */
621 int count1 = SPECPDL_INDEX ();
622 specbind (Qinhibit_read_only, Qt);
623 specbind (Qinhibit_modification_hooks, Qt);
624 Ferase_buffer ();
626 if (!NILP (BVAR (current_buffer, enable_multibyte_characters))
627 && ! STRING_MULTIBYTE (minibuf_prompt))
628 minibuf_prompt = Fstring_make_multibyte (minibuf_prompt);
630 /* Insert the prompt, record where it ends. */
631 Finsert (1, &minibuf_prompt);
632 if (PT > BEG)
634 Fput_text_property (make_number (BEG), make_number (PT),
635 Qfront_sticky, Qt, Qnil);
636 Fput_text_property (make_number (BEG), make_number (PT),
637 Qrear_nonsticky, Qt, Qnil);
638 Fput_text_property (make_number (BEG), make_number (PT),
639 Qfield, Qt, Qnil);
640 Fadd_text_properties (make_number (BEG), make_number (PT),
641 Vminibuffer_prompt_properties, Qnil);
643 unbind_to (count1, Qnil);
646 minibuf_prompt_width = current_column ();
648 /* Put in the initial input. */
649 if (!NILP (initial))
651 Finsert (1, &initial);
652 Fforward_char (make_number (pos));
655 clear_message (1, 1);
656 BVAR (current_buffer, keymap) = map;
658 /* Turn on an input method stored in INPUT_METHOD if any. */
659 if (STRINGP (input_method) && !NILP (Ffboundp (Qactivate_input_method)))
660 call1 (Qactivate_input_method, input_method);
662 Frun_hooks (1, &Qminibuffer_setup_hook);
664 /* Don't allow the user to undo past this point. */
665 BVAR (current_buffer, undo_list) = Qnil;
667 recursive_edit_1 ();
669 /* If cursor is on the minibuffer line,
670 show the user we have exited by putting it in column 0. */
671 if (XWINDOW (minibuf_window)->cursor.vpos >= 0
672 && !noninteractive)
674 XWINDOW (minibuf_window)->cursor.hpos = 0;
675 XWINDOW (minibuf_window)->cursor.x = 0;
676 XWINDOW (minibuf_window)->must_be_updated_p = 1;
677 update_frame (XFRAME (selected_frame), 1, 1);
679 struct frame *f = XFRAME (XWINDOW (minibuf_window)->frame);
680 struct redisplay_interface *rif = FRAME_RIF (f);
681 if (rif && rif->flush_display)
682 rif->flush_display (f);
686 /* Make minibuffer contents into a string. */
687 Fset_buffer (minibuffer);
688 if (allow_props)
689 val = Fminibuffer_contents ();
690 else
691 val = Fminibuffer_contents_no_properties ();
693 /* VAL is the string of minibuffer text. */
695 last_minibuf_string = val;
697 /* Choose the string to add to the history. */
698 if (SCHARS (val) != 0)
699 histstring = val;
700 else if (STRINGP (defalt))
701 histstring = defalt;
702 else if (CONSP (defalt) && STRINGP (XCAR (defalt)))
703 histstring = XCAR (defalt);
704 else
705 histstring = Qnil;
707 /* Add the value to the appropriate history list, if any. */
708 if (!NILP (Vhistory_add_new_input)
709 && SYMBOLP (Vminibuffer_history_variable)
710 && !NILP (histstring))
712 /* If the caller wanted to save the value read on a history list,
713 then do so if the value is not already the front of the list. */
714 Lisp_Object histval;
716 /* If variable is unbound, make it nil. */
718 histval = find_symbol_value (Vminibuffer_history_variable);
719 if (EQ (histval, Qunbound))
720 Fset (Vminibuffer_history_variable, Qnil);
722 /* The value of the history variable must be a cons or nil. Other
723 values are unacceptable. We silently ignore these values. */
725 if (NILP (histval)
726 || (CONSP (histval)
727 /* Don't duplicate the most recent entry in the history. */
728 && (NILP (Fequal (histstring, Fcar (histval))))))
730 Lisp_Object length;
732 if (history_delete_duplicates) Fdelete (histstring, histval);
733 histval = Fcons (histstring, histval);
734 Fset (Vminibuffer_history_variable, histval);
736 /* Truncate if requested. */
737 length = Fget (Vminibuffer_history_variable, Qhistory_length);
738 if (NILP (length)) length = Vhistory_length;
739 if (INTEGERP (length))
741 if (XINT (length) <= 0)
742 Fset (Vminibuffer_history_variable, Qnil);
743 else
745 Lisp_Object temp;
747 temp = Fnthcdr (Fsub1 (length), histval);
748 if (CONSP (temp)) Fsetcdr (temp, Qnil);
754 /* If Lisp form desired instead of string, parse it. */
755 if (expflag)
756 val = string_to_object (val, defalt);
758 /* The appropriate frame will get selected
759 in set-window-configuration. */
760 UNGCPRO;
761 return unbind_to (count, val);
764 /* Return a buffer to be used as the minibuffer at depth `depth'.
765 depth = 0 is the lowest allowed argument, and that is the value
766 used for nonrecursive minibuffer invocations */
768 Lisp_Object
769 get_minibuffer (int depth)
771 Lisp_Object tail, num, buf;
772 char name[24];
774 XSETFASTINT (num, depth);
775 tail = Fnthcdr (num, Vminibuffer_list);
776 if (NILP (tail))
778 tail = Fcons (Qnil, Qnil);
779 Vminibuffer_list = nconc2 (Vminibuffer_list, tail);
781 buf = Fcar (tail);
782 if (NILP (buf) || NILP (BVAR (XBUFFER (buf), name)))
784 sprintf (name, " *Minibuf-%d*", depth);
785 buf = Fget_buffer_create (build_string (name));
787 /* Although the buffer's name starts with a space, undo should be
788 enabled in it. */
789 Fbuffer_enable_undo (buf);
791 XSETCAR (tail, buf);
793 else
795 int count = SPECPDL_INDEX ();
796 /* `reset_buffer' blindly sets the list of overlays to NULL, so we
797 have to empty the list, otherwise we end up with overlays that
798 think they belong to this buffer while the buffer doesn't know about
799 them any more. */
800 delete_all_overlays (XBUFFER (buf));
801 reset_buffer (XBUFFER (buf));
802 record_unwind_protect (Fset_buffer, Fcurrent_buffer ());
803 Fset_buffer (buf);
804 Fkill_all_local_variables ();
805 unbind_to (count, Qnil);
808 return buf;
811 static Lisp_Object
812 run_exit_minibuf_hook (Lisp_Object data)
814 safe_run_hooks (Qminibuffer_exit_hook);
815 return Qnil;
818 /* This function is called on exiting minibuffer, whether normally or
819 not, and it restores the current window, buffer, etc. */
821 static Lisp_Object
822 read_minibuf_unwind (Lisp_Object data)
824 Lisp_Object old_deactivate_mark;
825 Lisp_Object window;
827 /* If this was a recursive minibuffer,
828 tie the minibuffer window back to the outer level minibuffer buffer. */
829 minibuf_level--;
831 window = minibuf_window;
832 /* To keep things predictable, in case it matters, let's be in the
833 minibuffer when we reset the relevant variables. */
834 Fset_buffer (XWINDOW (window)->buffer);
836 /* Restore prompt, etc, from outer minibuffer level. */
837 minibuf_prompt = Fcar (minibuf_save_list);
838 minibuf_save_list = Fcdr (minibuf_save_list);
839 minibuf_prompt_width = XFASTINT (Fcar (minibuf_save_list));
840 minibuf_save_list = Fcdr (minibuf_save_list);
841 Vhelp_form = Fcar (minibuf_save_list);
842 minibuf_save_list = Fcdr (minibuf_save_list);
843 Vcurrent_prefix_arg = Fcar (minibuf_save_list);
844 minibuf_save_list = Fcdr (minibuf_save_list);
845 Vminibuffer_history_position = Fcar (minibuf_save_list);
846 minibuf_save_list = Fcdr (minibuf_save_list);
847 Vminibuffer_history_variable = Fcar (minibuf_save_list);
848 minibuf_save_list = Fcdr (minibuf_save_list);
849 Voverriding_local_map = Fcar (minibuf_save_list);
850 minibuf_save_list = Fcdr (minibuf_save_list);
851 #if 0
852 temp = Fcar (minibuf_save_list);
853 if (FRAME_LIVE_P (XFRAME (WINDOW_FRAME (XWINDOW (temp)))))
854 minibuf_window = temp;
855 #endif
856 minibuf_save_list = Fcdr (minibuf_save_list);
858 /* Erase the minibuffer we were using at this level. */
860 int count = SPECPDL_INDEX ();
861 /* Prevent error in erase-buffer. */
862 specbind (Qinhibit_read_only, Qt);
863 specbind (Qinhibit_modification_hooks, Qt);
864 old_deactivate_mark = Vdeactivate_mark;
865 Ferase_buffer ();
866 Vdeactivate_mark = old_deactivate_mark;
867 unbind_to (count, Qnil);
870 /* When we get to the outmost level, make sure we resize the
871 mini-window back to its normal size. */
872 if (minibuf_level == 0)
873 resize_mini_window (XWINDOW (window), 0);
875 /* Make sure minibuffer window is erased, not ignored. */
876 windows_or_buffers_changed++;
877 XSETFASTINT (XWINDOW (window)->last_modified, 0);
878 XSETFASTINT (XWINDOW (window)->last_overlay_modified, 0);
879 return Qnil;
883 DEFUN ("read-from-minibuffer", Fread_from_minibuffer,
884 Sread_from_minibuffer, 1, 7, 0,
885 doc: /* Read a string from the minibuffer, prompting with string PROMPT.
886 The optional second arg INITIAL-CONTENTS is an obsolete alternative to
887 DEFAULT-VALUE. It normally should be nil in new code, except when
888 HIST is a cons. It is discussed in more detail below.
889 Third arg KEYMAP is a keymap to use whilst reading;
890 if omitted or nil, the default is `minibuffer-local-map'.
891 If fourth arg READ is non-nil, then interpret the result as a Lisp object
892 and return that object:
893 in other words, do `(car (read-from-string INPUT-STRING))'
894 Fifth arg HIST, if non-nil, specifies a history list and optionally
895 the initial position in the list. It can be a symbol, which is the
896 history list variable to use, or it can be a cons cell
897 (HISTVAR . HISTPOS). In that case, HISTVAR is the history list variable
898 to use, and HISTPOS is the initial position for use by the minibuffer
899 history commands. For consistency, you should also specify that
900 element of the history as the value of INITIAL-CONTENTS. Positions
901 are counted starting from 1 at the beginning of the list.
902 Sixth arg DEFAULT-VALUE is the default value or the list of default values.
903 If non-nil, it is available for history commands, and as the value
904 (or the first element of the list of default values) to return
905 if the user enters the empty string. But, unless READ is non-nil,
906 `read-from-minibuffer' does NOT return DEFAULT-VALUE if the user enters
907 empty input! It returns the empty string.
908 Seventh arg INHERIT-INPUT-METHOD, if non-nil, means the minibuffer inherits
909 the current input method and the setting of `enable-multibyte-characters'.
910 If the variable `minibuffer-allow-text-properties' is non-nil,
911 then the string which is returned includes whatever text properties
912 were present in the minibuffer. Otherwise the value has no text properties.
914 The remainder of this documentation string describes the
915 INITIAL-CONTENTS argument in more detail. It is only relevant when
916 studying existing code, or when HIST is a cons. If non-nil,
917 INITIAL-CONTENTS is a string to be inserted into the minibuffer before
918 reading input. Normally, point is put at the end of that string.
919 However, if INITIAL-CONTENTS is \(STRING . POSITION), the initial
920 input is STRING, but point is placed at _one-indexed_ position
921 POSITION in the minibuffer. Any integer value less than or equal to
922 one puts point at the beginning of the string. *Note* that this
923 behavior differs from the way such arguments are used in `completing-read'
924 and some related functions, which use zero-indexing for POSITION. */)
925 (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)
927 Lisp_Object histvar, histpos, val;
928 struct gcpro gcpro1;
930 CHECK_STRING (prompt);
931 if (NILP (keymap))
932 keymap = Vminibuffer_local_map;
933 else
934 keymap = get_keymap (keymap, 1, 0);
936 if (SYMBOLP (hist))
938 histvar = hist;
939 histpos = Qnil;
941 else
943 histvar = Fcar_safe (hist);
944 histpos = Fcdr_safe (hist);
946 if (NILP (histvar))
947 histvar = Qminibuffer_history;
948 if (NILP (histpos))
949 XSETFASTINT (histpos, 0);
951 GCPRO1 (default_value);
952 val = read_minibuf (keymap, initial_contents, prompt,
953 Qnil, !NILP (read),
954 histvar, histpos, default_value,
955 minibuffer_allow_text_properties,
956 !NILP (inherit_input_method));
957 UNGCPRO;
958 return val;
961 DEFUN ("read-minibuffer", Fread_minibuffer, Sread_minibuffer, 1, 2, 0,
962 doc: /* Return a Lisp object read using the minibuffer, unevaluated.
963 Prompt with PROMPT. If non-nil, optional second arg INITIAL-CONTENTS
964 is a string to insert in the minibuffer before reading.
965 \(INITIAL-CONTENTS can also be a cons of a string and an integer.
966 Such arguments are used as in `read-from-minibuffer'.) */)
967 (Lisp_Object prompt, Lisp_Object initial_contents)
969 CHECK_STRING (prompt);
970 return read_minibuf (Vminibuffer_local_map, initial_contents,
971 prompt, Qnil, 1, Qminibuffer_history,
972 make_number (0), Qnil, 0, 0);
975 DEFUN ("eval-minibuffer", Feval_minibuffer, Seval_minibuffer, 1, 2, 0,
976 doc: /* Return value of Lisp expression read using the minibuffer.
977 Prompt with PROMPT. If non-nil, optional second arg INITIAL-CONTENTS
978 is a string to insert in the minibuffer before reading.
979 \(INITIAL-CONTENTS can also be a cons of a string and an integer.
980 Such arguments are used as in `read-from-minibuffer'.) */)
981 (Lisp_Object prompt, Lisp_Object initial_contents)
983 return Feval (read_minibuf (Vread_expression_map, initial_contents,
984 prompt, Qnil, 1, Qread_expression_history,
985 make_number (0), Qnil, 0, 0),
986 Qnil);
989 /* Functions that use the minibuffer to read various things. */
991 DEFUN ("read-string", Fread_string, Sread_string, 1, 5, 0,
992 doc: /* Read a string from the minibuffer, prompting with string PROMPT.
993 If non-nil, second arg INITIAL-INPUT is a string to insert before reading.
994 This argument has been superseded by DEFAULT-VALUE and should normally
995 be nil in new code. It behaves as in `read-from-minibuffer'. See the
996 documentation string of that function for details.
997 The third arg HISTORY, if non-nil, specifies a history list
998 and optionally the initial position in the list.
999 See `read-from-minibuffer' for details of HISTORY argument.
1000 Fourth arg DEFAULT-VALUE is the default value or the list of default values.
1001 If non-nil, it is used for history commands, and as the value (or the first
1002 element of the list of default values) to return if the user enters the
1003 empty string.
1004 Fifth arg INHERIT-INPUT-METHOD, if non-nil, means the minibuffer inherits
1005 the current input method and the setting of `enable-multibyte-characters'. */)
1006 (Lisp_Object prompt, Lisp_Object initial_input, Lisp_Object history, Lisp_Object default_value, Lisp_Object inherit_input_method)
1008 Lisp_Object val;
1009 val = Fread_from_minibuffer (prompt, initial_input, Qnil,
1010 Qnil, history, default_value,
1011 inherit_input_method);
1012 if (STRINGP (val) && SCHARS (val) == 0 && ! NILP (default_value))
1013 val = CONSP (default_value) ? XCAR (default_value) : default_value;
1014 return val;
1017 DEFUN ("read-no-blanks-input", Fread_no_blanks_input, Sread_no_blanks_input, 1, 3, 0,
1018 doc: /* Read a string from the terminal, not allowing blanks.
1019 Prompt with PROMPT. Whitespace terminates the input. If INITIAL is
1020 non-nil, it should be a string, which is used as initial input, with
1021 point positioned at the end, so that SPACE will accept the input.
1022 \(Actually, INITIAL can also be a cons of a string and an integer.
1023 Such values are treated as in `read-from-minibuffer', but are normally
1024 not useful in this function.)
1025 Third arg INHERIT-INPUT-METHOD, if non-nil, means the minibuffer inherits
1026 the current input method and the setting of`enable-multibyte-characters'. */)
1027 (Lisp_Object prompt, Lisp_Object initial, Lisp_Object inherit_input_method)
1029 CHECK_STRING (prompt);
1030 return read_minibuf (Vminibuffer_local_ns_map, initial, prompt, Qnil,
1031 0, Qminibuffer_history, make_number (0), Qnil, 0,
1032 !NILP (inherit_input_method));
1035 DEFUN ("read-command", Fread_command, Sread_command, 1, 2, 0,
1036 doc: /* Read the name of a command and return as a symbol.
1037 Prompt with PROMPT. By default, return DEFAULT-VALUE or its first element
1038 if it is a list. */)
1039 (Lisp_Object prompt, Lisp_Object default_value)
1041 Lisp_Object name, default_string;
1043 if (NILP (default_value))
1044 default_string = Qnil;
1045 else if (SYMBOLP (default_value))
1046 default_string = SYMBOL_NAME (default_value);
1047 else
1048 default_string = default_value;
1050 name = Fcompleting_read (prompt, Vobarray, Qcommandp, Qt,
1051 Qnil, Qnil, default_string, Qnil);
1052 if (NILP (name))
1053 return name;
1054 return Fintern (name, Qnil);
1057 #ifdef NOTDEF
1058 DEFUN ("read-function", Fread_function, Sread_function, 1, 1, 0,
1059 doc: /* One arg PROMPT, a string. Read the name of a function and return as a symbol.
1060 Prompt with PROMPT. */)
1061 (Lisp_Object prompt)
1063 return Fintern (Fcompleting_read (prompt, Vobarray, Qfboundp, Qt, Qnil, Qnil, Qnil, Qnil),
1064 Qnil);
1066 #endif /* NOTDEF */
1068 DEFUN ("read-variable", Fread_variable, Sread_variable, 1, 2, 0,
1069 doc: /* Read the name of a user variable and return it as a symbol.
1070 Prompt with PROMPT. By default, return DEFAULT-VALUE or its first element
1071 if it is a list.
1072 A user variable is one for which `user-variable-p' returns non-nil. */)
1073 (Lisp_Object prompt, Lisp_Object default_value)
1075 Lisp_Object name, default_string;
1077 if (NILP (default_value))
1078 default_string = Qnil;
1079 else if (SYMBOLP (default_value))
1080 default_string = SYMBOL_NAME (default_value);
1081 else
1082 default_string = default_value;
1084 name = Fcompleting_read (prompt, Vobarray,
1085 Quser_variable_p, Qt,
1086 Qnil, Qnil, default_string, Qnil);
1087 if (NILP (name))
1088 return name;
1089 return Fintern (name, Qnil);
1092 DEFUN ("read-buffer", Fread_buffer, Sread_buffer, 1, 3, 0,
1093 doc: /* Read the name of a buffer and return as a string.
1094 Prompt with PROMPT.
1095 Optional second arg DEF is value to return if user enters an empty line.
1096 If DEF is a list of default values, return its first element.
1097 Optional third arg REQUIRE-MATCH determines whether non-existing
1098 buffer names are allowed. It has the same meaning as the
1099 REQUIRE-MATCH argument of `completing-read'.
1100 The argument PROMPT should be a string ending with a colon and a space.
1101 If `read-buffer-completion-ignore-case' is non-nil, completion ignores
1102 case while reading the buffer name.
1103 If `read-buffer-function' is non-nil, this works by calling it as a
1104 function, instead of the usual behavior. */)
1105 (Lisp_Object prompt, Lisp_Object def, Lisp_Object require_match)
1107 Lisp_Object args[4], result;
1108 char *s;
1109 int len;
1110 int count = SPECPDL_INDEX ();
1112 if (BUFFERP (def))
1113 def = BVAR (XBUFFER (def), name);
1115 specbind (Qcompletion_ignore_case,
1116 read_buffer_completion_ignore_case ? Qt : Qnil);
1118 if (NILP (Vread_buffer_function))
1120 if (!NILP (def))
1122 /* A default value was provided: we must change PROMPT,
1123 editing the default value in before the colon. To achieve
1124 this, we replace PROMPT with a substring that doesn't
1125 contain the terminal space and colon (if present). They
1126 are then added back using Fformat. */
1128 if (STRINGP (prompt))
1130 s = SSDATA (prompt);
1131 len = strlen (s);
1132 if (len >= 2 && s[len - 2] == ':' && s[len - 1] == ' ')
1133 len = len - 2;
1134 else if (len >= 1 && (s[len - 1] == ':' || s[len - 1] == ' '))
1135 len--;
1137 prompt = make_specified_string (s, -1, len,
1138 STRING_MULTIBYTE (prompt));
1141 args[0] = build_string ("%s (default %s): ");
1142 args[1] = prompt;
1143 args[2] = CONSP (def) ? XCAR (def) : def;
1144 prompt = Fformat (3, args);
1147 result = Fcompleting_read (prompt, intern ("internal-complete-buffer"),
1148 Qnil, require_match, Qnil,
1149 Qbuffer_name_history, def, Qnil);
1151 else
1153 args[0] = Vread_buffer_function;
1154 args[1] = prompt;
1155 args[2] = def;
1156 args[3] = require_match;
1157 result = Ffuncall(4, args);
1159 return unbind_to (count, result);
1162 static Lisp_Object
1163 minibuf_conform_representation (Lisp_Object string, Lisp_Object basis)
1165 if (STRING_MULTIBYTE (string) == STRING_MULTIBYTE (basis))
1166 return string;
1168 if (STRING_MULTIBYTE (string))
1169 return Fstring_make_unibyte (string);
1170 else
1171 return Fstring_make_multibyte (string);
1174 DEFUN ("try-completion", Ftry_completion, Stry_completion, 2, 3, 0,
1175 doc: /* Return common substring of all completions of STRING in COLLECTION.
1176 Test each possible completion specified by COLLECTION
1177 to see if it begins with STRING. The possible completions may be
1178 strings or symbols. Symbols are converted to strings before testing,
1179 see `symbol-name'.
1180 All that match STRING are compared together; the longest initial sequence
1181 common to all these matches is the return value.
1182 If there is no match at all, the return value is nil.
1183 For a unique match which is exact, the return value is t.
1185 If COLLECTION is an alist, the keys (cars of elements) are the
1186 possible completions. If an element is not a cons cell, then the
1187 element itself is the possible completion.
1188 If COLLECTION is a hash-table, all the keys that are strings or symbols
1189 are the possible completions.
1190 If COLLECTION is an obarray, the names of all symbols in the obarray
1191 are the possible completions.
1193 COLLECTION can also be a function to do the completion itself.
1194 It receives three arguments: the values STRING, PREDICATE and nil.
1195 Whatever it returns becomes the value of `try-completion'.
1197 If optional third argument PREDICATE is non-nil,
1198 it is used to test each possible match.
1199 The match is a candidate only if PREDICATE returns non-nil.
1200 The argument given to PREDICATE is the alist element
1201 or the symbol from the obarray. If COLLECTION is a hash-table,
1202 predicate is called with two arguments: the key and the value.
1203 Additionally to this predicate, `completion-regexp-list'
1204 is used to further constrain the set of candidates. */)
1205 (Lisp_Object string, Lisp_Object collection, Lisp_Object predicate)
1207 Lisp_Object bestmatch, tail, elt, eltstring;
1208 /* Size in bytes of BESTMATCH. */
1209 int bestmatchsize = 0;
1210 /* These are in bytes, too. */
1211 int compare, matchsize;
1212 enum { function_table, list_table, obarray_table, hash_table}
1213 type = (HASH_TABLE_P (collection) ? hash_table
1214 : VECTORP (collection) ? obarray_table
1215 : ((NILP (collection)
1216 || (CONSP (collection)
1217 && (!SYMBOLP (XCAR (collection))
1218 || NILP (XCAR (collection)))))
1219 ? list_table : function_table));
1220 int idx = 0, obsize = 0;
1221 int matchcount = 0;
1222 int bindcount = -1;
1223 Lisp_Object bucket, zero, end, tem;
1224 struct gcpro gcpro1, gcpro2, gcpro3, gcpro4;
1226 CHECK_STRING (string);
1227 if (type == function_table)
1228 return call3 (collection, string, predicate, Qnil);
1230 bestmatch = bucket = Qnil;
1231 zero = make_number (0);
1233 /* If COLLECTION is not a list, set TAIL just for gc pro. */
1234 tail = collection;
1235 if (type == obarray_table)
1237 collection = check_obarray (collection);
1238 obsize = ASIZE (collection);
1239 bucket = XVECTOR (collection)->contents[idx];
1242 while (1)
1244 /* Get the next element of the alist, obarray, or hash-table. */
1245 /* Exit the loop if the elements are all used up. */
1246 /* elt gets the alist element or symbol.
1247 eltstring gets the name to check as a completion. */
1249 if (type == list_table)
1251 if (!CONSP (tail))
1252 break;
1253 elt = XCAR (tail);
1254 eltstring = CONSP (elt) ? XCAR (elt) : elt;
1255 tail = XCDR (tail);
1257 else if (type == obarray_table)
1259 if (!EQ (bucket, zero))
1261 if (!SYMBOLP (bucket))
1262 error ("Bad data in guts of obarray");
1263 elt = bucket;
1264 eltstring = elt;
1265 if (XSYMBOL (bucket)->next)
1266 XSETSYMBOL (bucket, XSYMBOL (bucket)->next);
1267 else
1268 XSETFASTINT (bucket, 0);
1270 else if (++idx >= obsize)
1271 break;
1272 else
1274 bucket = XVECTOR (collection)->contents[idx];
1275 continue;
1278 else /* if (type == hash_table) */
1280 while (idx < HASH_TABLE_SIZE (XHASH_TABLE (collection))
1281 && NILP (HASH_HASH (XHASH_TABLE (collection), idx)))
1282 idx++;
1283 if (idx >= HASH_TABLE_SIZE (XHASH_TABLE (collection)))
1284 break;
1285 else
1286 elt = eltstring = HASH_KEY (XHASH_TABLE (collection), idx++);
1289 /* Is this element a possible completion? */
1291 if (SYMBOLP (eltstring))
1292 eltstring = Fsymbol_name (eltstring);
1294 if (STRINGP (eltstring)
1295 && SCHARS (string) <= SCHARS (eltstring)
1296 && (tem = Fcompare_strings (eltstring, zero,
1297 make_number (SCHARS (string)),
1298 string, zero, Qnil,
1299 completion_ignore_case ? Qt : Qnil),
1300 EQ (Qt, tem)))
1302 /* Yes. */
1303 Lisp_Object regexps;
1305 /* Ignore this element if it fails to match all the regexps. */
1307 for (regexps = Vcompletion_regexp_list; CONSP (regexps);
1308 regexps = XCDR (regexps))
1310 if (bindcount < 0) {
1311 bindcount = SPECPDL_INDEX ();
1312 specbind (Qcase_fold_search,
1313 completion_ignore_case ? Qt : Qnil);
1315 tem = Fstring_match (XCAR (regexps), eltstring, zero);
1316 if (NILP (tem))
1317 break;
1319 if (CONSP (regexps))
1320 continue;
1323 /* Ignore this element if there is a predicate
1324 and the predicate doesn't like it. */
1326 if (!NILP (predicate))
1328 if (EQ (predicate, Qcommandp))
1329 tem = Fcommandp (elt, Qnil);
1330 else
1332 if (bindcount >= 0)
1334 unbind_to (bindcount, Qnil);
1335 bindcount = -1;
1337 GCPRO4 (tail, string, eltstring, bestmatch);
1338 tem = (type == hash_table
1339 ? call2 (predicate, elt,
1340 HASH_VALUE (XHASH_TABLE (collection),
1341 idx - 1))
1342 : call1 (predicate, elt));
1343 UNGCPRO;
1345 if (NILP (tem)) continue;
1348 /* Update computation of how much all possible completions match */
1350 if (NILP (bestmatch))
1352 matchcount = 1;
1353 bestmatch = eltstring;
1354 bestmatchsize = SCHARS (eltstring);
1356 else
1358 compare = min (bestmatchsize, SCHARS (eltstring));
1359 tem = Fcompare_strings (bestmatch, zero,
1360 make_number (compare),
1361 eltstring, zero,
1362 make_number (compare),
1363 completion_ignore_case ? Qt : Qnil);
1364 if (EQ (tem, Qt))
1365 matchsize = compare;
1366 else if (XINT (tem) < 0)
1367 matchsize = - XINT (tem) - 1;
1368 else
1369 matchsize = XINT (tem) - 1;
1371 if (completion_ignore_case)
1373 /* If this is an exact match except for case,
1374 use it as the best match rather than one that is not an
1375 exact match. This way, we get the case pattern
1376 of the actual match. */
1377 if ((matchsize == SCHARS (eltstring)
1378 && matchsize < SCHARS (bestmatch))
1380 /* If there is more than one exact match ignoring case,
1381 and one of them is exact including case,
1382 prefer that one. */
1383 /* If there is no exact match ignoring case,
1384 prefer a match that does not change the case
1385 of the input. */
1386 ((matchsize == SCHARS (eltstring))
1388 (matchsize == SCHARS (bestmatch))
1389 && (tem = Fcompare_strings (eltstring, zero,
1390 make_number (SCHARS (string)),
1391 string, zero,
1392 Qnil,
1393 Qnil),
1394 EQ (Qt, tem))
1395 && (tem = Fcompare_strings (bestmatch, zero,
1396 make_number (SCHARS (string)),
1397 string, zero,
1398 Qnil,
1399 Qnil),
1400 ! EQ (Qt, tem))))
1401 bestmatch = eltstring;
1403 if (bestmatchsize != SCHARS (eltstring)
1404 || bestmatchsize != matchsize)
1405 /* Don't count the same string multiple times. */
1406 matchcount++;
1407 bestmatchsize = matchsize;
1408 if (matchsize <= SCHARS (string)
1409 /* If completion-ignore-case is non-nil, don't
1410 short-circuit because we want to find the best
1411 possible match *including* case differences. */
1412 && !completion_ignore_case
1413 && matchcount > 1)
1414 /* No need to look any further. */
1415 break;
1420 if (bindcount >= 0) {
1421 unbind_to (bindcount, Qnil);
1422 bindcount = -1;
1425 if (NILP (bestmatch))
1426 return Qnil; /* No completions found */
1427 /* If we are ignoring case, and there is no exact match,
1428 and no additional text was supplied,
1429 don't change the case of what the user typed. */
1430 if (completion_ignore_case && bestmatchsize == SCHARS (string)
1431 && SCHARS (bestmatch) > bestmatchsize)
1432 return minibuf_conform_representation (string, bestmatch);
1434 /* Return t if the supplied string is an exact match (counting case);
1435 it does not require any change to be made. */
1436 if (matchcount == 1 && !NILP (Fequal (bestmatch, string)))
1437 return Qt;
1439 XSETFASTINT (zero, 0); /* Else extract the part in which */
1440 XSETFASTINT (end, bestmatchsize); /* all completions agree */
1441 return Fsubstring (bestmatch, zero, end);
1444 DEFUN ("all-completions", Fall_completions, Sall_completions, 2, 4, 0,
1445 doc: /* Search for partial matches to STRING in COLLECTION.
1446 Test each of the possible completions specified by COLLECTION
1447 to see if it begins with STRING. The possible completions may be
1448 strings or symbols. Symbols are converted to strings before testing,
1449 see `symbol-name'.
1450 The value is a list of all the possible completions that match STRING.
1452 If COLLECTION is an alist, the keys (cars of elements) are the
1453 possible completions. If an element is not a cons cell, then the
1454 element itself is the possible completion.
1455 If COLLECTION is a hash-table, all the keys that are strings or symbols
1456 are the possible completions.
1457 If COLLECTION is an obarray, the names of all symbols in the obarray
1458 are the possible completions.
1460 COLLECTION can also be a function to do the completion itself.
1461 It receives three arguments: the values STRING, PREDICATE and t.
1462 Whatever it returns becomes the value of `all-completions'.
1464 If optional third argument PREDICATE is non-nil,
1465 it is used to test each possible match.
1466 The match is a candidate only if PREDICATE returns non-nil.
1467 The argument given to PREDICATE is the alist element
1468 or the symbol from the obarray. If COLLECTION is a hash-table,
1469 predicate is called with two arguments: the key and the value.
1470 Additionally to this predicate, `completion-regexp-list'
1471 is used to further constrain the set of candidates.
1473 An obsolete optional fourth argument HIDE-SPACES is still accepted for
1474 backward compatibility. If non-nil, strings in COLLECTION that start
1475 with a space are ignored unless STRING itself starts with a space. */)
1476 (Lisp_Object string, Lisp_Object collection, Lisp_Object predicate, Lisp_Object hide_spaces)
1478 Lisp_Object tail, elt, eltstring;
1479 Lisp_Object allmatches;
1480 int type = HASH_TABLE_P (collection) ? 3
1481 : VECTORP (collection) ? 2
1482 : NILP (collection) || (CONSP (collection)
1483 && (!SYMBOLP (XCAR (collection))
1484 || NILP (XCAR (collection))));
1485 int idx = 0, obsize = 0;
1486 int bindcount = -1;
1487 Lisp_Object bucket, tem, zero;
1488 struct gcpro gcpro1, gcpro2, gcpro3, gcpro4;
1490 CHECK_STRING (string);
1491 if (type == 0)
1492 return call3 (collection, string, predicate, Qt);
1493 allmatches = bucket = Qnil;
1494 zero = make_number (0);
1496 /* If COLLECTION is not a list, set TAIL just for gc pro. */
1497 tail = collection;
1498 if (type == 2)
1500 collection = check_obarray (collection);
1501 obsize = ASIZE (collection);
1502 bucket = XVECTOR (collection)->contents[idx];
1505 while (1)
1507 /* Get the next element of the alist, obarray, or hash-table. */
1508 /* Exit the loop if the elements are all used up. */
1509 /* elt gets the alist element or symbol.
1510 eltstring gets the name to check as a completion. */
1512 if (type == 1)
1514 if (!CONSP (tail))
1515 break;
1516 elt = XCAR (tail);
1517 eltstring = CONSP (elt) ? XCAR (elt) : elt;
1518 tail = XCDR (tail);
1520 else if (type == 2)
1522 if (!EQ (bucket, zero))
1524 if (!SYMBOLP (bucket))
1525 error ("Bad data in guts of obarray");
1526 elt = bucket;
1527 eltstring = elt;
1528 if (XSYMBOL (bucket)->next)
1529 XSETSYMBOL (bucket, XSYMBOL (bucket)->next);
1530 else
1531 XSETFASTINT (bucket, 0);
1533 else if (++idx >= obsize)
1534 break;
1535 else
1537 bucket = XVECTOR (collection)->contents[idx];
1538 continue;
1541 else /* if (type == 3) */
1543 while (idx < HASH_TABLE_SIZE (XHASH_TABLE (collection))
1544 && NILP (HASH_HASH (XHASH_TABLE (collection), idx)))
1545 idx++;
1546 if (idx >= HASH_TABLE_SIZE (XHASH_TABLE (collection)))
1547 break;
1548 else
1549 elt = eltstring = HASH_KEY (XHASH_TABLE (collection), idx++);
1552 /* Is this element a possible completion? */
1554 if (SYMBOLP (eltstring))
1555 eltstring = Fsymbol_name (eltstring);
1557 if (STRINGP (eltstring)
1558 && SCHARS (string) <= SCHARS (eltstring)
1559 /* If HIDE_SPACES, reject alternatives that start with space
1560 unless the input starts with space. */
1561 && (NILP (hide_spaces)
1562 || (SBYTES (string) > 0
1563 && SREF (string, 0) == ' ')
1564 || SREF (eltstring, 0) != ' ')
1565 && (tem = Fcompare_strings (eltstring, zero,
1566 make_number (SCHARS (string)),
1567 string, zero,
1568 make_number (SCHARS (string)),
1569 completion_ignore_case ? Qt : Qnil),
1570 EQ (Qt, tem)))
1572 /* Yes. */
1573 Lisp_Object regexps;
1575 /* Ignore this element if it fails to match all the regexps. */
1577 for (regexps = Vcompletion_regexp_list; CONSP (regexps);
1578 regexps = XCDR (regexps))
1580 if (bindcount < 0) {
1581 bindcount = SPECPDL_INDEX ();
1582 specbind (Qcase_fold_search,
1583 completion_ignore_case ? Qt : Qnil);
1585 tem = Fstring_match (XCAR (regexps), eltstring, zero);
1586 if (NILP (tem))
1587 break;
1589 if (CONSP (regexps))
1590 continue;
1593 /* Ignore this element if there is a predicate
1594 and the predicate doesn't like it. */
1596 if (!NILP (predicate))
1598 if (EQ (predicate, Qcommandp))
1599 tem = Fcommandp (elt, Qnil);
1600 else
1602 if (bindcount >= 0) {
1603 unbind_to (bindcount, Qnil);
1604 bindcount = -1;
1606 GCPRO4 (tail, eltstring, allmatches, string);
1607 tem = type == 3
1608 ? call2 (predicate, elt,
1609 HASH_VALUE (XHASH_TABLE (collection), idx - 1))
1610 : call1 (predicate, elt);
1611 UNGCPRO;
1613 if (NILP (tem)) continue;
1615 /* Ok => put it on the list. */
1616 allmatches = Fcons (eltstring, allmatches);
1620 if (bindcount >= 0) {
1621 unbind_to (bindcount, Qnil);
1622 bindcount = -1;
1625 return Fnreverse (allmatches);
1628 DEFUN ("completing-read", Fcompleting_read, Scompleting_read, 2, 8, 0,
1629 doc: /* Read a string in the minibuffer, with completion.
1630 PROMPT is a string to prompt with; normally it ends in a colon and a space.
1631 COLLECTION can be a list of strings, an alist, an obarray or a hash table.
1632 COLLECTION can also be a function to do the completion itself.
1633 PREDICATE limits completion to a subset of COLLECTION.
1634 See `try-completion' and `all-completions' for more details
1635 on completion, COLLECTION, and PREDICATE.
1637 REQUIRE-MATCH can take the following values:
1638 - t means that the user is not allowed to exit unless
1639 the input is (or completes to) an element of COLLECTION or is null.
1640 - nil means that the user can exit with any input.
1641 - `confirm' means that the user can exit with any input, but she needs
1642 to confirm her choice if the input is not an element of COLLECTION.
1643 - `confirm-after-completion' means that the user can exit with any
1644 input, but she needs to confirm her choice if she called
1645 `minibuffer-complete' right before `minibuffer-complete-and-exit'
1646 and the input is not an element of COLLECTION.
1647 - anything else behaves like t except that typing RET does not exit if it
1648 does non-null completion.
1650 If the input is null, `completing-read' returns DEF, or the first element
1651 of the list of default values, or an empty string if DEF is nil,
1652 regardless of the value of REQUIRE-MATCH.
1654 If INITIAL-INPUT is non-nil, insert it in the minibuffer initially,
1655 with point positioned at the end.
1656 If it is (STRING . POSITION), the initial input is STRING, but point
1657 is placed at _zero-indexed_ position POSITION in STRING. (*Note*
1658 that this is different from `read-from-minibuffer' and related
1659 functions, which use one-indexing for POSITION.) This feature is
1660 deprecated--it is best to pass nil for INITIAL-INPUT and supply the
1661 default value DEF instead. The user can yank the default value into
1662 the minibuffer easily using \\[next-history-element].
1664 HIST, if non-nil, specifies a history list and optionally the initial
1665 position in the list. It can be a symbol, which is the history list
1666 variable to use, or it can be a cons cell (HISTVAR . HISTPOS). In
1667 that case, HISTVAR is the history list variable to use, and HISTPOS
1668 is the initial position (the position in the list used by the
1669 minibuffer history commands). For consistency, you should also
1670 specify that element of the history as the value of
1671 INITIAL-INPUT. (This is the only case in which you should use
1672 INITIAL-INPUT instead of DEF.) Positions are counted starting from
1673 1 at the beginning of the list. The variable `history-length'
1674 controls the maximum length of a history list.
1676 DEF, if non-nil, is the default value or the list of default values.
1678 If INHERIT-INPUT-METHOD is non-nil, the minibuffer inherits
1679 the current input method and the setting of `enable-multibyte-characters'.
1681 Completion ignores case if the ambient value of
1682 `completion-ignore-case' is non-nil.
1684 See also `completing-read-function'. */)
1685 (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)
1687 Lisp_Object args[9];
1688 args[0] = Vcompleting_read_function;
1689 args[1] = prompt;
1690 args[2] = collection;
1691 args[3] = predicate;
1692 args[4] = require_match;
1693 args[5] = initial_input;
1694 args[6] = hist;
1695 args[7] = def;
1696 args[8] = inherit_input_method;
1697 return Ffuncall (9, args);
1700 DEFUN ("completing-read-default", Fcompleting_read_default, Scompleting_read_default, 2, 8, 0,
1701 doc: /* Default method for reading from the minibuffer with completion.
1702 See `completing-read' for the meaning of the arguments. */)
1703 (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)
1705 Lisp_Object val, histvar, histpos, position;
1706 Lisp_Object init;
1707 int pos = 0;
1708 int count = SPECPDL_INDEX ();
1709 struct gcpro gcpro1;
1711 init = initial_input;
1712 GCPRO1 (def);
1714 specbind (Qminibuffer_completion_table, collection);
1715 specbind (Qminibuffer_completion_predicate, predicate);
1716 specbind (Qminibuffer_completion_confirm,
1717 EQ (require_match, Qt) ? Qnil : require_match);
1719 position = Qnil;
1720 if (!NILP (init))
1722 if (CONSP (init))
1724 position = Fcdr (init);
1725 init = Fcar (init);
1727 CHECK_STRING (init);
1728 if (!NILP (position))
1730 CHECK_NUMBER (position);
1731 /* Convert to distance from end of input. */
1732 pos = XINT (position) - SCHARS (init);
1736 if (SYMBOLP (hist))
1738 histvar = hist;
1739 histpos = Qnil;
1741 else
1743 histvar = Fcar_safe (hist);
1744 histpos = Fcdr_safe (hist);
1746 if (NILP (histvar))
1747 histvar = Qminibuffer_history;
1748 if (NILP (histpos))
1749 XSETFASTINT (histpos, 0);
1751 val = read_minibuf (NILP (require_match)
1752 ? (NILP (Vminibuffer_completing_file_name)
1753 || EQ (Vminibuffer_completing_file_name, Qlambda)
1754 ? Vminibuffer_local_completion_map
1755 : Vminibuffer_local_filename_completion_map)
1756 : (NILP (Vminibuffer_completing_file_name)
1757 || EQ (Vminibuffer_completing_file_name, Qlambda)
1758 ? Vminibuffer_local_must_match_map
1759 : Vminibuffer_local_filename_must_match_map),
1760 init, prompt, make_number (pos), 0,
1761 histvar, histpos, def, 0,
1762 !NILP (inherit_input_method));
1764 if (STRINGP (val) && SCHARS (val) == 0 && ! NILP (def))
1765 val = CONSP (def) ? XCAR (def) : def;
1767 RETURN_UNGCPRO (unbind_to (count, val));
1770 Lisp_Object Fassoc_string (register Lisp_Object key, Lisp_Object list, Lisp_Object case_fold);
1772 /* Test whether TXT is an exact completion. */
1773 DEFUN ("test-completion", Ftest_completion, Stest_completion, 2, 3, 0,
1774 doc: /* Return non-nil if STRING is a valid completion.
1775 Takes the same arguments as `all-completions' and `try-completion'.
1776 If COLLECTION is a function, it is called with three arguments:
1777 the values STRING, PREDICATE and `lambda'. */)
1778 (Lisp_Object string, Lisp_Object collection, Lisp_Object predicate)
1780 Lisp_Object regexps, tail, tem = Qnil;
1781 int i = 0;
1783 CHECK_STRING (string);
1785 if ((CONSP (collection)
1786 && (!SYMBOLP (XCAR (collection)) || NILP (XCAR (collection))))
1787 || NILP (collection))
1789 tem = Fassoc_string (string, collection, completion_ignore_case ? Qt : Qnil);
1790 if (NILP (tem))
1791 return Qnil;
1793 else if (VECTORP (collection))
1795 /* Bypass intern-soft as that loses for nil. */
1796 tem = oblookup (collection,
1797 SSDATA (string),
1798 SCHARS (string),
1799 SBYTES (string));
1800 if (!SYMBOLP (tem))
1802 if (STRING_MULTIBYTE (string))
1803 string = Fstring_make_unibyte (string);
1804 else
1805 string = Fstring_make_multibyte (string);
1807 tem = oblookup (collection,
1808 SSDATA (string),
1809 SCHARS (string),
1810 SBYTES (string));
1813 if (completion_ignore_case && !SYMBOLP (tem))
1815 for (i = ASIZE (collection) - 1; i >= 0; i--)
1817 tail = XVECTOR (collection)->contents[i];
1818 if (SYMBOLP (tail))
1819 while (1)
1821 if (EQ((Fcompare_strings (string, make_number (0), Qnil,
1822 Fsymbol_name (tail),
1823 make_number (0) , Qnil, Qt)),
1824 Qt))
1826 tem = tail;
1827 break;
1829 if (XSYMBOL (tail)->next == 0)
1830 break;
1831 XSETSYMBOL (tail, XSYMBOL (tail)->next);
1836 if (!SYMBOLP (tem))
1837 return Qnil;
1839 else if (HASH_TABLE_P (collection))
1841 struct Lisp_Hash_Table *h = XHASH_TABLE (collection);
1842 i = hash_lookup (h, string, NULL);
1843 if (i >= 0)
1844 tem = HASH_KEY (h, i);
1845 else
1846 for (i = 0; i < HASH_TABLE_SIZE (h); ++i)
1847 if (!NILP (HASH_HASH (h, i)) &&
1848 EQ (Fcompare_strings (string, make_number (0), Qnil,
1849 HASH_KEY (h, i), make_number (0) , Qnil,
1850 completion_ignore_case ? Qt : Qnil),
1851 Qt))
1853 tem = HASH_KEY (h, i);
1854 break;
1856 if (!STRINGP (tem))
1857 return Qnil;
1859 else
1860 return call3 (collection, string, predicate, Qlambda);
1862 /* Reject this element if it fails to match all the regexps. */
1863 if (CONSP (Vcompletion_regexp_list))
1865 int count = SPECPDL_INDEX ();
1866 specbind (Qcase_fold_search, completion_ignore_case ? Qt : Qnil);
1867 for (regexps = Vcompletion_regexp_list; CONSP (regexps);
1868 regexps = XCDR (regexps))
1870 if (NILP (Fstring_match (XCAR (regexps),
1871 SYMBOLP (tem) ? string : tem,
1872 Qnil)))
1873 return unbind_to (count, Qnil);
1875 unbind_to (count, Qnil);
1878 /* Finally, check the predicate. */
1879 if (!NILP (predicate))
1881 return HASH_TABLE_P (collection)
1882 ? call2 (predicate, tem, HASH_VALUE (XHASH_TABLE (collection), i))
1883 : call1 (predicate, tem);
1885 else
1886 return Qt;
1889 Lisp_Object Qmetadata;
1890 extern Lisp_Object Qbuffer;
1892 DEFUN ("internal-complete-buffer", Finternal_complete_buffer, Sinternal_complete_buffer, 3, 3, 0,
1893 doc: /* Perform completion on buffer names.
1894 If the argument FLAG is nil, invoke `try-completion', if it's t, invoke
1895 `all-completions', otherwise invoke `test-completion'.
1897 The arguments STRING and PREDICATE are as in `try-completion',
1898 `all-completions', and `test-completion'. */)
1899 (Lisp_Object string, Lisp_Object predicate, Lisp_Object flag)
1901 if (NILP (flag))
1902 return Ftry_completion (string, Vbuffer_alist, predicate);
1903 else if (EQ (flag, Qt))
1905 Lisp_Object res = Fall_completions (string, Vbuffer_alist, predicate, Qnil);
1906 if (SCHARS (string) > 0)
1907 return res;
1908 else
1909 { /* Strip out internal buffers. */
1910 Lisp_Object bufs = res;
1911 /* First, look for a non-internal buffer in `res'. */
1912 while (CONSP (bufs) && SREF (XCAR (bufs), 0) == ' ')
1913 bufs = XCDR (bufs);
1914 if (NILP (bufs))
1915 /* All bufs in `res' are internal, so don't trip them out. */
1916 return res;
1917 res = bufs;
1918 while (CONSP (XCDR (bufs)))
1919 if (SREF (XCAR (XCDR (bufs)), 0) == ' ')
1920 XSETCDR (bufs, XCDR (XCDR (bufs)));
1921 else
1922 bufs = XCDR (bufs);
1923 return res;
1926 else if (EQ (flag, Qlambda))
1927 return Ftest_completion (string, Vbuffer_alist, predicate);
1928 else if (EQ (flag, Qmetadata))
1929 return Fcons (Qmetadata, Fcons (Fcons (Qcategory, Qbuffer), Qnil));
1930 else
1931 return Qnil;
1934 /* Like assoc but assumes KEY is a string, and ignores case if appropriate. */
1936 DEFUN ("assoc-string", Fassoc_string, Sassoc_string, 2, 3, 0,
1937 doc: /* Like `assoc' but specifically for strings (and symbols).
1939 This returns the first element of LIST whose car matches the string or
1940 symbol KEY, or nil if no match exists. When performing the
1941 comparison, symbols are first converted to strings, and unibyte
1942 strings to multibyte. If the optional arg CASE-FOLD is non-nil, case
1943 is ignored.
1945 Unlike `assoc', KEY can also match an entry in LIST consisting of a
1946 single string, rather than a cons cell whose car is a string. */)
1947 (register Lisp_Object key, Lisp_Object list, Lisp_Object case_fold)
1949 register Lisp_Object tail;
1951 if (SYMBOLP (key))
1952 key = Fsymbol_name (key);
1954 for (tail = list; CONSP (tail); tail = XCDR (tail))
1956 register Lisp_Object elt, tem, thiscar;
1957 elt = XCAR (tail);
1958 thiscar = CONSP (elt) ? XCAR (elt) : elt;
1959 if (SYMBOLP (thiscar))
1960 thiscar = Fsymbol_name (thiscar);
1961 else if (!STRINGP (thiscar))
1962 continue;
1963 tem = Fcompare_strings (thiscar, make_number (0), Qnil,
1964 key, make_number (0), Qnil,
1965 case_fold);
1966 if (EQ (tem, Qt))
1967 return elt;
1968 QUIT;
1970 return Qnil;
1974 DEFUN ("minibuffer-depth", Fminibuffer_depth, Sminibuffer_depth, 0, 0, 0,
1975 doc: /* Return current depth of activations of minibuffer, a nonnegative integer. */)
1976 (void)
1978 return make_number (minibuf_level);
1981 DEFUN ("minibuffer-prompt", Fminibuffer_prompt, Sminibuffer_prompt, 0, 0, 0,
1982 doc: /* Return the prompt string of the currently-active minibuffer.
1983 If no minibuffer is active, return nil. */)
1984 (void)
1986 return Fcopy_sequence (minibuf_prompt);
1990 void
1991 init_minibuf_once (void)
1993 Vminibuffer_list = Qnil;
1994 staticpro (&Vminibuffer_list);
1997 void
1998 syms_of_minibuf (void)
2000 minibuf_level = 0;
2001 minibuf_prompt = Qnil;
2002 staticpro (&minibuf_prompt);
2004 minibuf_save_list = Qnil;
2005 staticpro (&minibuf_save_list);
2007 DEFSYM (Qcompleting_read_default, "completing-read-default");
2008 DEFSYM (Qcompletion_ignore_case, "completion-ignore-case");
2009 DEFSYM (Qread_file_name_internal, "read-file-name-internal");
2010 DEFSYM (Qminibuffer_default, "minibuffer-default");
2011 Fset (Qminibuffer_default, Qnil);
2013 DEFSYM (Qminibuffer_completion_table, "minibuffer-completion-table");
2014 DEFSYM (Qminibuffer_completion_confirm, "minibuffer-completion-confirm");
2015 DEFSYM (Qminibuffer_completion_predicate, "minibuffer-completion-predicate");
2017 staticpro (&last_minibuf_string);
2018 last_minibuf_string = Qnil;
2020 DEFSYM (Quser_variable_p, "user-variable-p");
2021 DEFSYM (Qminibuffer_history, "minibuffer-history");
2022 DEFSYM (Qbuffer_name_history, "buffer-name-history");
2023 Fset (Qbuffer_name_history, Qnil);
2025 DEFSYM (Qminibuffer_setup_hook, "minibuffer-setup-hook");
2026 DEFSYM (Qminibuffer_exit_hook, "minibuffer-exit-hook");
2027 DEFSYM (Qhistory_length, "history-length");
2028 DEFSYM (Qcurrent_input_method, "current-input-method");
2029 DEFSYM (Qactivate_input_method, "activate-input-method");
2030 DEFSYM (Qcase_fold_search, "case-fold-search");
2031 DEFSYM (Qmetadata, "metadata");
2033 DEFVAR_LISP ("read-expression-history", Vread_expression_history,
2034 doc: /* A history list for arguments that are Lisp expressions to evaluate.
2035 For example, `eval-expression' uses this. */);
2036 Vread_expression_history = Qnil;
2038 DEFSYM (Qread_expression_history, "read-expression-history");
2040 DEFVAR_LISP ("read-buffer-function", Vread_buffer_function,
2041 doc: /* If this is non-nil, `read-buffer' does its work by calling this function.
2042 The function is called with the arguments passed to `read-buffer'. */);
2043 Vread_buffer_function = Qnil;
2045 DEFVAR_BOOL ("read-buffer-completion-ignore-case",
2046 read_buffer_completion_ignore_case,
2047 doc: /* *Non-nil means completion ignores case when reading a buffer name. */);
2048 read_buffer_completion_ignore_case = 0;
2050 DEFVAR_LISP ("minibuffer-setup-hook", Vminibuffer_setup_hook,
2051 doc: /* Normal hook run just after entry to minibuffer. */);
2052 Vminibuffer_setup_hook = Qnil;
2054 DEFVAR_LISP ("minibuffer-exit-hook", Vminibuffer_exit_hook,
2055 doc: /* Normal hook run just after exit from minibuffer. */);
2056 Vminibuffer_exit_hook = Qnil;
2058 DEFVAR_LISP ("history-length", Vhistory_length,
2059 doc: /* *Maximum length for history lists before truncation takes place.
2060 A number means that length; t means infinite. Truncation takes place
2061 just after a new element is inserted. Setting the `history-length'
2062 property of a history variable overrides this default. */);
2063 XSETFASTINT (Vhistory_length, 30);
2065 DEFVAR_BOOL ("history-delete-duplicates", history_delete_duplicates,
2066 doc: /* *Non-nil means to delete duplicates in history.
2067 If set to t when adding a new history element, all previous identical
2068 elements are deleted from the history list. */);
2069 history_delete_duplicates = 0;
2071 DEFVAR_LISP ("history-add-new-input", Vhistory_add_new_input,
2072 doc: /* *Non-nil means to add new elements in history.
2073 If set to nil, minibuffer reading functions don't add new elements to the
2074 history list, so it is possible to do this afterwards by calling
2075 `add-to-history' explicitly. */);
2076 Vhistory_add_new_input = Qt;
2078 DEFVAR_BOOL ("completion-ignore-case", completion_ignore_case,
2079 doc: /* Non-nil means don't consider case significant in completion.
2080 For file-name completion, `read-file-name-completion-ignore-case'
2081 controls the behavior, rather than this variable.
2082 For buffer name completion, `read-buffer-completion-ignore-case'
2083 controls the behavior, rather than this variable. */);
2084 completion_ignore_case = 0;
2086 DEFVAR_BOOL ("enable-recursive-minibuffers", enable_recursive_minibuffers,
2087 doc: /* *Non-nil means to allow minibuffer commands while in the minibuffer.
2088 This variable makes a difference whenever the minibuffer window is active. */);
2089 enable_recursive_minibuffers = 0;
2091 DEFVAR_LISP ("minibuffer-completion-table", Vminibuffer_completion_table,
2092 doc: /* Alist or obarray used for completion in the minibuffer.
2093 This becomes the ALIST argument to `try-completion' and `all-completions'.
2094 The value can also be a list of strings or a hash table.
2096 The value may alternatively be a function, which is given three arguments:
2097 STRING, the current buffer contents;
2098 PREDICATE, the predicate for filtering possible matches;
2099 CODE, which says what kind of things to do.
2100 CODE can be nil, t or `lambda':
2101 nil -- return the best completion of STRING, or nil if there is none.
2102 t -- return a list of all possible completions of STRING.
2103 lambda -- return t if STRING is a valid completion as it stands. */);
2104 Vminibuffer_completion_table = Qnil;
2106 DEFVAR_LISP ("minibuffer-completion-predicate", Vminibuffer_completion_predicate,
2107 doc: /* Within call to `completing-read', this holds the PREDICATE argument. */);
2108 Vminibuffer_completion_predicate = Qnil;
2110 DEFVAR_LISP ("minibuffer-completion-confirm", Vminibuffer_completion_confirm,
2111 doc: /* Whether to demand confirmation of completion before exiting minibuffer.
2112 If nil, confirmation is not required.
2113 If the value is `confirm', the user may exit with an input that is not
2114 a valid completion alternative, but Emacs asks for confirmation.
2115 If the value is `confirm-after-completion', the user may exit with an
2116 input that is not a valid completion alternative, but Emacs asks for
2117 confirmation if the user submitted the input right after any of the
2118 completion commands listed in `minibuffer-confirm-exit-commands'. */);
2119 Vminibuffer_completion_confirm = Qnil;
2121 DEFVAR_LISP ("minibuffer-completing-file-name",
2122 Vminibuffer_completing_file_name,
2123 doc: /* Non-nil means completing file names. */);
2124 Vminibuffer_completing_file_name = Qnil;
2126 DEFVAR_LISP ("completing-read-function",
2127 Vcompleting_read_function,
2128 doc: /* The function called by `completing-read' to do the work.
2129 It should accept the same arguments as `completing-read'. */);
2130 Vcompleting_read_function = Qcompleting_read_default;
2132 DEFVAR_LISP ("minibuffer-help-form", Vminibuffer_help_form,
2133 doc: /* Value that `help-form' takes on inside the minibuffer. */);
2134 Vminibuffer_help_form = Qnil;
2136 DEFVAR_LISP ("minibuffer-history-variable", Vminibuffer_history_variable,
2137 doc: /* History list symbol to add minibuffer values to.
2138 Each string of minibuffer input, as it appears on exit from the minibuffer,
2139 is added with
2140 (set minibuffer-history-variable
2141 (cons STRING (symbol-value minibuffer-history-variable))) */);
2142 XSETFASTINT (Vminibuffer_history_variable, 0);
2144 DEFVAR_LISP ("minibuffer-history-position", Vminibuffer_history_position,
2145 doc: /* Current position of redoing in the history list. */);
2146 Vminibuffer_history_position = Qnil;
2148 DEFVAR_BOOL ("minibuffer-auto-raise", minibuffer_auto_raise,
2149 doc: /* *Non-nil means entering the minibuffer raises the minibuffer's frame.
2150 Some uses of the echo area also raise that frame (since they use it too). */);
2151 minibuffer_auto_raise = 0;
2153 DEFVAR_LISP ("completion-regexp-list", Vcompletion_regexp_list,
2154 doc: /* List of regexps that should restrict possible completions.
2155 The basic completion functions only consider a completion acceptable
2156 if it matches all regular expressions in this list, with
2157 `case-fold-search' bound to the value of `completion-ignore-case'.
2158 See Info node `(elisp)Basic Completion', for a description of these
2159 functions. */);
2160 Vcompletion_regexp_list = Qnil;
2162 DEFVAR_BOOL ("minibuffer-allow-text-properties",
2163 minibuffer_allow_text_properties,
2164 doc: /* Non-nil means `read-from-minibuffer' should not discard text properties.
2165 This also affects `read-string', but it does not affect `read-minibuffer',
2166 `read-no-blanks-input', or any of the functions that do minibuffer input
2167 with completion; they always discard text properties. */);
2168 minibuffer_allow_text_properties = 0;
2170 DEFVAR_LISP ("minibuffer-prompt-properties", Vminibuffer_prompt_properties,
2171 doc: /* Text properties that are added to minibuffer prompts.
2172 These are in addition to the basic `field' property, and stickiness
2173 properties. */);
2174 /* We use `intern' here instead of Qread_only to avoid
2175 initialization-order problems. */
2176 Vminibuffer_prompt_properties
2177 = Fcons (intern_c_string ("read-only"), Fcons (Qt, Qnil));
2179 DEFVAR_LISP ("read-expression-map", Vread_expression_map,
2180 doc: /* Minibuffer keymap used for reading Lisp expressions. */);
2181 Vread_expression_map = Qnil;
2183 defsubr (&Sactive_minibuffer_window);
2184 defsubr (&Sset_minibuffer_window);
2185 defsubr (&Sread_from_minibuffer);
2186 defsubr (&Seval_minibuffer);
2187 defsubr (&Sread_minibuffer);
2188 defsubr (&Sread_string);
2189 defsubr (&Sread_command);
2190 defsubr (&Sread_variable);
2191 defsubr (&Sinternal_complete_buffer);
2192 defsubr (&Sread_buffer);
2193 defsubr (&Sread_no_blanks_input);
2194 defsubr (&Sminibuffer_depth);
2195 defsubr (&Sminibuffer_prompt);
2197 defsubr (&Sminibufferp);
2198 defsubr (&Sminibuffer_prompt_end);
2199 defsubr (&Sminibuffer_contents);
2200 defsubr (&Sminibuffer_contents_no_properties);
2201 defsubr (&Sminibuffer_completion_contents);
2203 defsubr (&Stry_completion);
2204 defsubr (&Sall_completions);
2205 defsubr (&Stest_completion);
2206 defsubr (&Sassoc_string);
2207 defsubr (&Scompleting_read);
2208 defsubr (&Scompleting_read_default);