lisp/cedet/ChangeLog: Move entries for emacs-lisp/ files back to lisp/ChangeLog.
[emacs.git] / src / minibuf.c
blobf3a24afc19910e908394516bacd39838d68cd79d
1 /* Minibuffer input and completion.
2 Copyright (C) 1985, 1986, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
3 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
4 2008, 2009, 2010 Free Software Foundation, Inc.
6 This file is part of GNU Emacs.
8 GNU Emacs is free software: you can redistribute it and/or modify
9 it under the terms of the GNU General Public License as published by
10 the Free Software Foundation, either version 3 of the License, or
11 (at your option) any later version.
13 GNU Emacs is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details.
18 You should have received a copy of the GNU General Public License
19 along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
22 #include <config.h>
23 #include <stdio.h>
24 #include <setjmp.h>
26 #include "lisp.h"
27 #include "commands.h"
28 #include "buffer.h"
29 #include "character.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 extern int quit_char;
41 /* List of buffers for use as minibuffers.
42 The first element of the list is used for the outermost minibuffer
43 invocation, the next element is used for a recursive minibuffer
44 invocation, etc. The list is extended at the end as deeper
45 minibuffer recursions are encountered. */
47 Lisp_Object Vminibuffer_list;
49 /* Data to remember during recursive minibuffer invocations */
51 Lisp_Object minibuf_save_list;
53 /* Depth in minibuffer invocations. */
55 int minibuf_level;
57 /* The maximum length of a minibuffer history. */
59 Lisp_Object Qhistory_length, Vhistory_length;
61 /* No duplicates in history. */
63 int history_delete_duplicates;
65 /* Non-nil means add new input to history. */
67 Lisp_Object Vhistory_add_new_input;
69 /* Fread_minibuffer leaves the input here as a string. */
71 Lisp_Object last_minibuf_string;
73 /* Nonzero means let functions called when within a minibuffer
74 invoke recursive minibuffers (to read arguments, or whatever) */
76 int enable_recursive_minibuffers;
78 /* Nonzero means don't ignore text properties
79 in Fread_from_minibuffer. */
81 int minibuffer_allow_text_properties;
83 /* help-form is bound to this while in the minibuffer. */
85 Lisp_Object Vminibuffer_help_form;
87 /* Variable which is the history list to add minibuffer values to. */
89 Lisp_Object Vminibuffer_history_variable;
91 /* Current position in the history list (adjusted by M-n and M-p). */
93 Lisp_Object Vminibuffer_history_position;
95 /* Text properties that are added to minibuffer prompts.
96 These are in addition to the basic `field' property, and stickiness
97 properties. */
99 Lisp_Object Vminibuffer_prompt_properties;
101 Lisp_Object Qminibuffer_history, Qbuffer_name_history;
103 Lisp_Object Qread_file_name_internal;
105 /* Normal hooks for entry to and exit from minibuffer. */
107 Lisp_Object Qminibuffer_setup_hook, Vminibuffer_setup_hook;
108 Lisp_Object Qminibuffer_exit_hook, Vminibuffer_exit_hook;
110 /* Function to call to read a buffer name. */
111 Lisp_Object Vread_buffer_function;
113 /* Nonzero means completion ignores case. */
115 int completion_ignore_case;
116 Lisp_Object Qcompletion_ignore_case;
117 int read_buffer_completion_ignore_case;
119 /* List of regexps that should restrict possible completions. */
121 Lisp_Object Vcompletion_regexp_list;
123 /* Nonzero means raise the minibuffer frame when the minibuffer
124 is entered. */
126 int minibuffer_auto_raise;
128 /* Keymap for reading expressions. */
129 Lisp_Object Vread_expression_map;
131 Lisp_Object Vminibuffer_completion_table, Qminibuffer_completion_table;
132 Lisp_Object Vminibuffer_completion_predicate, Qminibuffer_completion_predicate;
133 Lisp_Object Vminibuffer_completion_confirm, Qminibuffer_completion_confirm;
134 Lisp_Object Vminibuffer_completing_file_name;
136 Lisp_Object Quser_variable_p;
138 Lisp_Object Qminibuffer_default;
140 Lisp_Object Qcurrent_input_method, Qactivate_input_method;
142 Lisp_Object Qcase_fold_search;
144 Lisp_Object Qread_expression_history;
147 /* Put minibuf on currently selected frame's minibuffer.
148 We do this whenever the user starts a new minibuffer
149 or when a minibuffer exits. */
151 void
152 choose_minibuf_frame (void)
154 if (FRAMEP (selected_frame)
155 && FRAME_LIVE_P (XFRAME (selected_frame))
156 && !EQ (minibuf_window, XFRAME (selected_frame)->minibuffer_window))
158 struct frame *sf = XFRAME (selected_frame);
159 Lisp_Object buffer;
161 /* I don't think that any frames may validly have a null minibuffer
162 window anymore. */
163 if (NILP (sf->minibuffer_window))
164 abort ();
166 /* Under X, we come here with minibuf_window being the
167 minibuffer window of the unused termcap window created in
168 init_window_once. That window doesn't have a buffer. */
169 buffer = XWINDOW (minibuf_window)->buffer;
170 if (BUFFERP (buffer))
171 Fset_window_buffer (sf->minibuffer_window, buffer, Qnil);
172 minibuf_window = sf->minibuffer_window;
175 /* Make sure no other frame has a minibuffer as its selected window,
176 because the text would not be displayed in it, and that would be
177 confusing. Only allow the selected frame to do this,
178 and that only if the minibuffer is active. */
180 Lisp_Object tail, frame;
182 FOR_EACH_FRAME (tail, frame)
183 if (MINI_WINDOW_P (XWINDOW (FRAME_SELECTED_WINDOW (XFRAME (frame))))
184 && !(EQ (frame, selected_frame)
185 && minibuf_level > 0))
186 Fset_frame_selected_window (frame, Fframe_first_window (frame), Qnil);
190 Lisp_Object
191 choose_minibuf_frame_1 (Lisp_Object ignore)
193 choose_minibuf_frame ();
194 return Qnil;
197 DEFUN ("set-minibuffer-window", Fset_minibuffer_window,
198 Sset_minibuffer_window, 1, 1, 0,
199 doc: /* Specify which minibuffer window to use for the minibuffer.
200 This affects where the minibuffer is displayed if you put text in it
201 without invoking the usual minibuffer commands. */)
202 (Lisp_Object window)
204 CHECK_WINDOW (window);
205 if (! MINI_WINDOW_P (XWINDOW (window)))
206 error ("Window is not a minibuffer window");
208 minibuf_window = window;
210 return window;
214 /* Actual minibuffer invocation. */
216 static Lisp_Object read_minibuf_unwind (Lisp_Object);
217 static Lisp_Object run_exit_minibuf_hook (Lisp_Object);
218 static Lisp_Object read_minibuf (Lisp_Object, Lisp_Object,
219 Lisp_Object, Lisp_Object,
220 int, Lisp_Object,
221 Lisp_Object, Lisp_Object,
222 int, int);
223 static Lisp_Object read_minibuf_noninteractive (Lisp_Object, Lisp_Object,
224 Lisp_Object, Lisp_Object,
225 int, Lisp_Object,
226 Lisp_Object, Lisp_Object,
227 int, int);
228 static Lisp_Object string_to_object (Lisp_Object, Lisp_Object);
231 /* Read a Lisp object from VAL and return it. If VAL is an empty
232 string, and DEFALT is a string, read from DEFALT instead of VAL. */
234 static Lisp_Object
235 string_to_object (Lisp_Object val, Lisp_Object defalt)
237 struct gcpro gcpro1, gcpro2;
238 Lisp_Object expr_and_pos;
239 EMACS_INT pos;
241 GCPRO2 (val, defalt);
243 if (STRINGP (val) && SCHARS (val) == 0)
245 if (STRINGP (defalt))
246 val = defalt;
247 else if (CONSP (defalt) && STRINGP (XCAR (defalt)))
248 val = XCAR (defalt);
251 expr_and_pos = Fread_from_string (val, Qnil, Qnil);
252 pos = XINT (Fcdr (expr_and_pos));
253 if (pos != SCHARS (val))
255 /* Ignore trailing whitespace; any other trailing junk
256 is an error. */
257 EMACS_INT i;
258 pos = string_char_to_byte (val, pos);
259 for (i = pos; i < SBYTES (val); i++)
261 int c = SREF (val, i);
262 if (c != ' ' && c != '\t' && c != '\n')
263 error ("Trailing garbage following expression");
267 val = Fcar (expr_and_pos);
268 RETURN_UNGCPRO (val);
272 /* Like read_minibuf but reading from stdin. This function is called
273 from read_minibuf to do the job if noninteractive. */
275 static Lisp_Object
276 read_minibuf_noninteractive (Lisp_Object map, Lisp_Object initial,
277 Lisp_Object prompt, Lisp_Object backup_n,
278 int expflag,
279 Lisp_Object histvar, Lisp_Object histpos,
280 Lisp_Object defalt,
281 int allow_props, int inherit_input_method)
283 int size, len;
284 char *line, *s;
285 Lisp_Object val;
287 fprintf (stdout, "%s", SDATA (prompt));
288 fflush (stdout);
290 val = Qnil;
291 size = 100;
292 len = 0;
293 line = (char *) xmalloc (size * sizeof *line);
294 while ((s = fgets (line + len, size - len, stdin)) != NULL
295 && (len = strlen (line),
296 len == size - 1 && line[len - 1] != '\n'))
298 size *= 2;
299 line = (char *) xrealloc (line, size);
302 if (s)
304 len = strlen (line);
306 if (len > 0 && line[len - 1] == '\n')
307 line[--len] = '\0';
309 val = build_string (line);
310 xfree (line);
312 else
314 xfree (line);
315 error ("Error reading from stdin");
318 /* If Lisp form desired instead of string, parse it. */
319 if (expflag)
320 val = string_to_object (val, CONSP (defalt) ? XCAR (defalt) : defalt);
322 return val;
325 DEFUN ("minibufferp", Fminibufferp,
326 Sminibufferp, 0, 1, 0,
327 doc: /* Return t if BUFFER is a minibuffer.
328 No argument or nil as argument means use current buffer as BUFFER.
329 BUFFER can be a buffer or a buffer name. */)
330 (Lisp_Object buffer)
332 Lisp_Object tem;
334 if (NILP (buffer))
335 buffer = Fcurrent_buffer ();
336 else if (STRINGP (buffer))
337 buffer = Fget_buffer (buffer);
338 else
339 CHECK_BUFFER (buffer);
341 tem = Fmemq (buffer, Vminibuffer_list);
342 return ! NILP (tem) ? Qt : Qnil;
345 DEFUN ("minibuffer-prompt-end", Fminibuffer_prompt_end,
346 Sminibuffer_prompt_end, 0, 0, 0,
347 doc: /* Return the buffer position of the end of the minibuffer prompt.
348 Return (point-min) if current buffer is not a minibuffer. */)
349 (void)
351 /* This function is written to be most efficient when there's a prompt. */
352 Lisp_Object beg, end, tem;
353 beg = make_number (BEGV);
355 tem = Fmemq (Fcurrent_buffer (), Vminibuffer_list);
356 if (NILP (tem))
357 return beg;
359 end = Ffield_end (beg, Qnil, Qnil);
361 if (XINT (end) == ZV && NILP (Fget_char_property (beg, Qfield, Qnil)))
362 return beg;
363 else
364 return end;
367 DEFUN ("minibuffer-contents", Fminibuffer_contents,
368 Sminibuffer_contents, 0, 0, 0,
369 doc: /* Return the user input in a minibuffer as a string.
370 If the current buffer is not a minibuffer, return its entire contents. */)
371 (void)
373 EMACS_INT prompt_end = XINT (Fminibuffer_prompt_end ());
374 return make_buffer_string (prompt_end, ZV, 1);
377 DEFUN ("minibuffer-contents-no-properties", Fminibuffer_contents_no_properties,
378 Sminibuffer_contents_no_properties, 0, 0, 0,
379 doc: /* Return the user input in a minibuffer as a string, without text-properties.
380 If the current buffer is not a minibuffer, return its entire contents. */)
381 (void)
383 EMACS_INT prompt_end = XINT (Fminibuffer_prompt_end ());
384 return make_buffer_string (prompt_end, ZV, 0);
387 DEFUN ("minibuffer-completion-contents", Fminibuffer_completion_contents,
388 Sminibuffer_completion_contents, 0, 0, 0,
389 doc: /* Return the user input in a minibuffer before point as a string.
390 That is what completion commands operate on.
391 If the current buffer is not a minibuffer, return its entire contents. */)
392 (void)
394 EMACS_INT prompt_end = XINT (Fminibuffer_prompt_end ());
395 if (PT < prompt_end)
396 error ("Cannot do completion in the prompt");
397 return make_buffer_string (prompt_end, PT, 1);
401 /* Read from the minibuffer using keymap MAP and initial contents INITIAL,
402 putting point minus BACKUP_N bytes from the end of INITIAL,
403 prompting with PROMPT (a string), using history list HISTVAR
404 with initial position HISTPOS. INITIAL should be a string or a
405 cons of a string and an integer. BACKUP_N should be <= 0, or
406 Qnil, which is equivalent to 0. If INITIAL is a cons, BACKUP_N is
407 ignored and replaced with an integer that puts point at one-indexed
408 position N in INITIAL, where N is the CDR of INITIAL, or at the
409 beginning of INITIAL if N <= 0.
411 Normally return the result as a string (the text that was read),
412 but if EXPFLAG is nonzero, read it and return the object read.
413 If HISTVAR is given, save the value read on that history only if it doesn't
414 match the front of that history list exactly. The value is pushed onto
415 the list as the string that was read.
417 DEFALT specifies the default value for the sake of history commands.
419 If ALLOW_PROPS is nonzero, we do not throw away text properties.
421 if INHERIT_INPUT_METHOD is nonzero, the minibuffer inherits the
422 current input method. */
424 static Lisp_Object
425 read_minibuf (Lisp_Object map, Lisp_Object initial, Lisp_Object prompt,
426 Lisp_Object backup_n, int expflag,
427 Lisp_Object histvar, Lisp_Object histpos, Lisp_Object defalt,
428 int allow_props, int inherit_input_method)
430 Lisp_Object val;
431 int count = SPECPDL_INDEX ();
432 Lisp_Object mini_frame, ambient_dir, minibuffer, input_method;
433 struct gcpro gcpro1, gcpro2, gcpro3, gcpro4, gcpro5;
434 Lisp_Object enable_multibyte;
435 int pos = INTEGERP (backup_n) ? XINT (backup_n) : 0;
436 /* String to add to the history. */
437 Lisp_Object histstring;
439 Lisp_Object empty_minibuf;
440 Lisp_Object dummy, frame;
442 specbind (Qminibuffer_default, defalt);
444 /* If Vminibuffer_completing_file_name is `lambda' on entry, it was t
445 in previous recursive minibuffer, but was not set explicitly
446 to t for this invocation, so set it to nil in this minibuffer.
447 Save the old value now, before we change it. */
448 specbind (intern ("minibuffer-completing-file-name"), Vminibuffer_completing_file_name);
449 if (EQ (Vminibuffer_completing_file_name, Qlambda))
450 Vminibuffer_completing_file_name = Qnil;
452 #ifdef HAVE_WINDOW_SYSTEM
453 if (display_hourglass_p)
454 cancel_hourglass ();
455 #endif
457 if (!NILP (initial))
459 if (CONSP (initial))
461 backup_n = Fcdr (initial);
462 initial = Fcar (initial);
463 CHECK_STRING (initial);
464 if (!NILP (backup_n))
466 CHECK_NUMBER (backup_n);
467 /* Convert to distance from end of input. */
468 if (XINT (backup_n) < 1)
469 /* A number too small means the beginning of the string. */
470 pos = - SCHARS (initial);
471 else
472 pos = XINT (backup_n) - 1 - SCHARS (initial);
475 else
476 CHECK_STRING (initial);
478 val = Qnil;
479 ambient_dir = current_buffer->directory;
480 input_method = Qnil;
481 enable_multibyte = Qnil;
483 /* Don't need to protect PROMPT, HISTVAR, and HISTPOS because we
484 store them away before we can GC. Don't need to protect
485 BACKUP_N because we use the value only if it is an integer. */
486 GCPRO5 (map, initial, val, ambient_dir, input_method);
488 if (!STRINGP (prompt))
489 prompt = empty_unibyte_string;
491 if (!enable_recursive_minibuffers
492 && minibuf_level > 0)
494 if (EQ (selected_window, minibuf_window))
495 error ("Command attempted to use minibuffer while in minibuffer");
496 else
497 /* If we're in another window, cancel the minibuffer that's active. */
498 Fthrow (Qexit,
499 build_string ("Command attempted to use minibuffer while in minibuffer"));
502 if ((noninteractive
503 /* In case we are running as a daemon, only do this before
504 detaching from the terminal. */
505 || (IS_DAEMON && (daemon_pipe[1] >= 0)))
506 && NILP (Vexecuting_kbd_macro))
508 val = read_minibuf_noninteractive (map, initial, prompt,
509 make_number (pos),
510 expflag, histvar, histpos, defalt,
511 allow_props, inherit_input_method);
512 UNGCPRO;
513 return unbind_to (count, val);
516 /* Choose the minibuffer window and frame, and take action on them. */
518 choose_minibuf_frame ();
520 record_unwind_protect (choose_minibuf_frame_1, Qnil);
522 record_unwind_protect (Fset_window_configuration,
523 Fcurrent_window_configuration (Qnil));
525 /* If the minibuffer window is on a different frame, save that
526 frame's configuration too. */
527 mini_frame = WINDOW_FRAME (XWINDOW (minibuf_window));
528 if (!EQ (mini_frame, selected_frame))
529 record_unwind_protect (Fset_window_configuration,
530 Fcurrent_window_configuration (mini_frame));
532 /* If the minibuffer is on an iconified or invisible frame,
533 make it visible now. */
534 Fmake_frame_visible (mini_frame);
536 if (minibuffer_auto_raise)
537 Fraise_frame (mini_frame);
539 temporarily_switch_to_single_kboard (XFRAME (mini_frame));
541 /* We have to do this after saving the window configuration
542 since that is what restores the current buffer. */
544 /* Arrange to restore a number of minibuffer-related variables.
545 We could bind each variable separately, but that would use lots of
546 specpdl slots. */
547 minibuf_save_list
548 = Fcons (Voverriding_local_map,
549 Fcons (minibuf_window,
550 minibuf_save_list));
551 minibuf_save_list
552 = Fcons (minibuf_prompt,
553 Fcons (make_number (minibuf_prompt_width),
554 Fcons (Vhelp_form,
555 Fcons (Vcurrent_prefix_arg,
556 Fcons (Vminibuffer_history_position,
557 Fcons (Vminibuffer_history_variable,
558 minibuf_save_list))))));
560 record_unwind_protect (read_minibuf_unwind, Qnil);
561 minibuf_level++;
562 /* We are exiting the minibuffer one way or the other, so run the hook.
563 It should be run before unwinding the minibuf settings. Do it
564 separately from read_minibuf_unwind because we need to make sure that
565 read_minibuf_unwind is fully executed even if exit-minibuffer-hook
566 signals an error. --Stef */
567 record_unwind_protect (run_exit_minibuf_hook, Qnil);
569 /* Now that we can restore all those variables, start changing them. */
571 minibuf_prompt_width = 0;
572 minibuf_prompt = Fcopy_sequence (prompt);
573 Vminibuffer_history_position = histpos;
574 Vminibuffer_history_variable = histvar;
575 Vhelp_form = Vminibuffer_help_form;
576 /* If this minibuffer is reading a file name, that doesn't mean
577 recursive ones are. But we cannot set it to nil, because
578 completion code still need to know the minibuffer is completing a
579 file name. So use `lambda' as intermediate value meaning
580 "t" in this minibuffer, but "nil" in next minibuffer. */
581 if (!NILP (Vminibuffer_completing_file_name))
582 Vminibuffer_completing_file_name = Qlambda;
584 if (inherit_input_method)
586 /* `current-input-method' is buffer local. So, remember it in
587 INPUT_METHOD before changing the current buffer. */
588 input_method = Fsymbol_value (Qcurrent_input_method);
589 enable_multibyte = current_buffer->enable_multibyte_characters;
592 /* Switch to the minibuffer. */
594 minibuffer = get_minibuffer (minibuf_level);
595 Fset_buffer (minibuffer);
597 /* If appropriate, copy enable-multibyte-characters into the minibuffer. */
598 if (inherit_input_method)
599 current_buffer->enable_multibyte_characters = enable_multibyte;
601 /* The current buffer's default directory is usually the right thing
602 for our minibuffer here. However, if you're typing a command at
603 a minibuffer-only frame when minibuf_level is zero, then buf IS
604 the current_buffer, so reset_buffer leaves buf's default
605 directory unchanged. This is a bummer when you've just started
606 up Emacs and buf's default directory is Qnil. Here's a hack; can
607 you think of something better to do? Find another buffer with a
608 better directory, and use that one instead. */
609 if (STRINGP (ambient_dir))
610 current_buffer->directory = ambient_dir;
611 else
613 Lisp_Object buf_list;
615 for (buf_list = Vbuffer_alist;
616 CONSP (buf_list);
617 buf_list = XCDR (buf_list))
619 Lisp_Object other_buf;
621 other_buf = XCDR (XCAR (buf_list));
622 if (STRINGP (XBUFFER (other_buf)->directory))
624 current_buffer->directory = XBUFFER (other_buf)->directory;
625 break;
630 if (!EQ (mini_frame, selected_frame))
631 Fredirect_frame_focus (selected_frame, mini_frame);
633 Vminibuf_scroll_window = selected_window;
634 if (minibuf_level == 1 || !EQ (minibuf_window, selected_window))
635 minibuf_selected_window = selected_window;
637 /* Empty out the minibuffers of all frames other than the one
638 where we are going to display one now.
639 Set them to point to ` *Minibuf-0*', which is always empty. */
640 empty_minibuf = Fget_buffer (build_string (" *Minibuf-0*"));
642 FOR_EACH_FRAME (dummy, frame)
644 Lisp_Object root_window = Fframe_root_window (frame);
645 Lisp_Object mini_window = XWINDOW (root_window)->next;
647 if (! NILP (mini_window) && ! EQ (mini_window, minibuf_window)
648 && !NILP (Fwindow_minibuffer_p (mini_window)))
649 Fset_window_buffer (mini_window, empty_minibuf, Qnil);
652 /* Display this minibuffer in the proper window. */
653 Fset_window_buffer (minibuf_window, Fcurrent_buffer (), Qnil);
654 Fselect_window (minibuf_window, Qnil);
655 XSETFASTINT (XWINDOW (minibuf_window)->hscroll, 0);
657 Fmake_local_variable (Qprint_escape_newlines);
658 print_escape_newlines = 1;
660 /* Erase the buffer. */
662 int count1 = SPECPDL_INDEX ();
663 specbind (Qinhibit_read_only, Qt);
664 specbind (Qinhibit_modification_hooks, Qt);
665 Ferase_buffer ();
667 if (!NILP (current_buffer->enable_multibyte_characters)
668 && ! STRING_MULTIBYTE (minibuf_prompt))
669 minibuf_prompt = Fstring_make_multibyte (minibuf_prompt);
671 /* Insert the prompt, record where it ends. */
672 Finsert (1, &minibuf_prompt);
673 if (PT > BEG)
675 Fput_text_property (make_number (BEG), make_number (PT),
676 Qfront_sticky, Qt, Qnil);
677 Fput_text_property (make_number (BEG), make_number (PT),
678 Qrear_nonsticky, Qt, Qnil);
679 Fput_text_property (make_number (BEG), make_number (PT),
680 Qfield, Qt, Qnil);
681 Fadd_text_properties (make_number (BEG), make_number (PT),
682 Vminibuffer_prompt_properties, Qnil);
684 unbind_to (count1, Qnil);
687 minibuf_prompt_width = (int) current_column (); /* iftc */
689 /* Put in the initial input. */
690 if (!NILP (initial))
692 Finsert (1, &initial);
693 Fforward_char (make_number (pos));
696 clear_message (1, 1);
697 current_buffer->keymap = map;
699 /* Turn on an input method stored in INPUT_METHOD if any. */
700 if (STRINGP (input_method) && !NILP (Ffboundp (Qactivate_input_method)))
701 call1 (Qactivate_input_method, input_method);
703 /* Run our hook, but not if it is empty.
704 (run-hooks would do nothing if it is empty,
705 but it's important to save time here in the usual case.) */
706 if (!NILP (Vminibuffer_setup_hook) && !EQ (Vminibuffer_setup_hook, Qunbound)
707 && !NILP (Vrun_hooks))
708 call1 (Vrun_hooks, Qminibuffer_setup_hook);
710 /* Don't allow the user to undo past this point. */
711 current_buffer->undo_list = Qnil;
713 recursive_edit_1 ();
715 /* If cursor is on the minibuffer line,
716 show the user we have exited by putting it in column 0. */
717 if (XWINDOW (minibuf_window)->cursor.vpos >= 0
718 && !noninteractive)
720 XWINDOW (minibuf_window)->cursor.hpos = 0;
721 XWINDOW (minibuf_window)->cursor.x = 0;
722 XWINDOW (minibuf_window)->must_be_updated_p = 1;
723 update_frame (XFRAME (selected_frame), 1, 1);
725 struct frame *f = XFRAME (XWINDOW (minibuf_window)->frame);
726 struct redisplay_interface *rif = FRAME_RIF (f);
727 if (rif && rif->flush_display)
728 rif->flush_display (f);
732 /* Make minibuffer contents into a string. */
733 Fset_buffer (minibuffer);
734 if (allow_props)
735 val = Fminibuffer_contents ();
736 else
737 val = Fminibuffer_contents_no_properties ();
739 /* VAL is the string of minibuffer text. */
741 last_minibuf_string = val;
743 /* Choose the string to add to the history. */
744 if (SCHARS (val) != 0)
745 histstring = val;
746 else if (STRINGP (defalt))
747 histstring = defalt;
748 else if (CONSP (defalt) && STRINGP (XCAR (defalt)))
749 histstring = XCAR (defalt);
750 else
751 histstring = Qnil;
753 /* Add the value to the appropriate history list, if any. */
754 if (!NILP (Vhistory_add_new_input)
755 && SYMBOLP (Vminibuffer_history_variable)
756 && !NILP (histstring))
758 /* If the caller wanted to save the value read on a history list,
759 then do so if the value is not already the front of the list. */
760 Lisp_Object histval;
762 /* If variable is unbound, make it nil. */
764 histval = find_symbol_value (Vminibuffer_history_variable);
765 if (EQ (histval, Qunbound))
766 Fset (Vminibuffer_history_variable, Qnil);
768 /* The value of the history variable must be a cons or nil. Other
769 values are unacceptable. We silently ignore these values. */
771 if (NILP (histval)
772 || (CONSP (histval)
773 /* Don't duplicate the most recent entry in the history. */
774 && (NILP (Fequal (histstring, Fcar (histval))))))
776 Lisp_Object length;
778 if (history_delete_duplicates) Fdelete (histstring, histval);
779 histval = Fcons (histstring, histval);
780 Fset (Vminibuffer_history_variable, histval);
782 /* Truncate if requested. */
783 length = Fget (Vminibuffer_history_variable, Qhistory_length);
784 if (NILP (length)) length = Vhistory_length;
785 if (INTEGERP (length))
787 if (XINT (length) <= 0)
788 Fset (Vminibuffer_history_variable, Qnil);
789 else
791 Lisp_Object temp;
793 temp = Fnthcdr (Fsub1 (length), histval);
794 if (CONSP (temp)) Fsetcdr (temp, Qnil);
800 /* If Lisp form desired instead of string, parse it. */
801 if (expflag)
802 val = string_to_object (val, defalt);
804 /* The appropriate frame will get selected
805 in set-window-configuration. */
806 UNGCPRO;
807 return unbind_to (count, val);
810 /* Return a buffer to be used as the minibuffer at depth `depth'.
811 depth = 0 is the lowest allowed argument, and that is the value
812 used for nonrecursive minibuffer invocations */
814 Lisp_Object
815 get_minibuffer (int depth)
817 Lisp_Object tail, num, buf;
818 char name[24];
820 XSETFASTINT (num, depth);
821 tail = Fnthcdr (num, Vminibuffer_list);
822 if (NILP (tail))
824 tail = Fcons (Qnil, Qnil);
825 Vminibuffer_list = nconc2 (Vminibuffer_list, tail);
827 buf = Fcar (tail);
828 if (NILP (buf) || NILP (XBUFFER (buf)->name))
830 sprintf (name, " *Minibuf-%d*", depth);
831 buf = Fget_buffer_create (build_string (name));
833 /* Although the buffer's name starts with a space, undo should be
834 enabled in it. */
835 Fbuffer_enable_undo (buf);
837 XSETCAR (tail, buf);
839 else
841 int count = SPECPDL_INDEX ();
842 /* `reset_buffer' blindly sets the list of overlays to NULL, so we
843 have to empty the list, otherwise we end up with overlays that
844 think they belong to this buffer while the buffer doesn't know about
845 them any more. */
846 delete_all_overlays (XBUFFER (buf));
847 reset_buffer (XBUFFER (buf));
848 record_unwind_protect (Fset_buffer, Fcurrent_buffer ());
849 Fset_buffer (buf);
850 Fkill_all_local_variables ();
851 unbind_to (count, Qnil);
854 return buf;
857 static Lisp_Object
858 run_exit_minibuf_hook (Lisp_Object data)
860 if (!NILP (Vminibuffer_exit_hook) && !EQ (Vminibuffer_exit_hook, Qunbound)
861 && !NILP (Vrun_hooks))
862 safe_run_hooks (Qminibuffer_exit_hook);
864 return Qnil;
867 /* This function is called on exiting minibuffer, whether normally or
868 not, and it restores the current window, buffer, etc. */
870 static Lisp_Object
871 read_minibuf_unwind (Lisp_Object data)
873 Lisp_Object old_deactivate_mark;
874 Lisp_Object window;
876 /* If this was a recursive minibuffer,
877 tie the minibuffer window back to the outer level minibuffer buffer. */
878 minibuf_level--;
880 window = minibuf_window;
881 /* To keep things predictable, in case it matters, let's be in the
882 minibuffer when we reset the relevant variables. */
883 Fset_buffer (XWINDOW (window)->buffer);
885 /* Restore prompt, etc, from outer minibuffer level. */
886 minibuf_prompt = Fcar (minibuf_save_list);
887 minibuf_save_list = Fcdr (minibuf_save_list);
888 minibuf_prompt_width = XFASTINT (Fcar (minibuf_save_list));
889 minibuf_save_list = Fcdr (minibuf_save_list);
890 Vhelp_form = Fcar (minibuf_save_list);
891 minibuf_save_list = Fcdr (minibuf_save_list);
892 Vcurrent_prefix_arg = Fcar (minibuf_save_list);
893 minibuf_save_list = Fcdr (minibuf_save_list);
894 Vminibuffer_history_position = Fcar (minibuf_save_list);
895 minibuf_save_list = Fcdr (minibuf_save_list);
896 Vminibuffer_history_variable = Fcar (minibuf_save_list);
897 minibuf_save_list = Fcdr (minibuf_save_list);
898 Voverriding_local_map = Fcar (minibuf_save_list);
899 minibuf_save_list = Fcdr (minibuf_save_list);
900 #if 0
901 temp = Fcar (minibuf_save_list);
902 if (FRAME_LIVE_P (XFRAME (WINDOW_FRAME (XWINDOW (temp)))))
903 minibuf_window = temp;
904 #endif
905 minibuf_save_list = Fcdr (minibuf_save_list);
907 /* Erase the minibuffer we were using at this level. */
909 int count = SPECPDL_INDEX ();
910 /* Prevent error in erase-buffer. */
911 specbind (Qinhibit_read_only, Qt);
912 specbind (Qinhibit_modification_hooks, Qt);
913 old_deactivate_mark = Vdeactivate_mark;
914 Ferase_buffer ();
915 Vdeactivate_mark = old_deactivate_mark;
916 unbind_to (count, Qnil);
919 /* When we get to the outmost level, make sure we resize the
920 mini-window back to its normal size. */
921 if (minibuf_level == 0)
922 resize_mini_window (XWINDOW (window), 0);
924 /* Make sure minibuffer window is erased, not ignored. */
925 windows_or_buffers_changed++;
926 XSETFASTINT (XWINDOW (window)->last_modified, 0);
927 XSETFASTINT (XWINDOW (window)->last_overlay_modified, 0);
928 return Qnil;
932 DEFUN ("read-from-minibuffer", Fread_from_minibuffer, Sread_from_minibuffer, 1, 7, 0,
933 doc: /* Read a string from the minibuffer, prompting with string PROMPT.
934 The optional second arg INITIAL-CONTENTS is an obsolete alternative to
935 DEFAULT-VALUE. It normally should be nil in new code, except when
936 HIST is a cons. It is discussed in more detail below.
937 Third arg KEYMAP is a keymap to use whilst reading;
938 if omitted or nil, the default is `minibuffer-local-map'.
939 If fourth arg READ is non-nil, then interpret the result as a Lisp object
940 and return that object:
941 in other words, do `(car (read-from-string INPUT-STRING))'
942 Fifth arg HIST, if non-nil, specifies a history list and optionally
943 the initial position in the list. It can be a symbol, which is the
944 history list variable to use, or it can be a cons cell
945 (HISTVAR . HISTPOS). In that case, HISTVAR is the history list variable
946 to use, and HISTPOS is the initial position for use by the minibuffer
947 history commands. For consistency, you should also specify that
948 element of the history as the value of INITIAL-CONTENTS. Positions
949 are counted starting from 1 at the beginning of the list.
950 Sixth arg DEFAULT-VALUE is the default value or the list of default values.
951 If non-nil, it is available for history commands, and as the value
952 (or the first element of the list of default values) to return
953 if the user enters the empty string. But, unless READ is non-nil,
954 `read-from-minibuffer' does NOT return DEFAULT-VALUE if the user enters
955 empty input! It returns the empty string.
956 Seventh arg INHERIT-INPUT-METHOD, if non-nil, means the minibuffer inherits
957 the current input method and the setting of `enable-multibyte-characters'.
958 If the variable `minibuffer-allow-text-properties' is non-nil,
959 then the string which is returned includes whatever text properties
960 were present in the minibuffer. Otherwise the value has no text properties.
962 The remainder of this documentation string describes the
963 INITIAL-CONTENTS argument in more detail. It is only relevant when
964 studying existing code, or when HIST is a cons. If non-nil,
965 INITIAL-CONTENTS is a string to be inserted into the minibuffer before
966 reading input. Normally, point is put at the end of that string.
967 However, if INITIAL-CONTENTS is \(STRING . POSITION), the initial
968 input is STRING, but point is placed at _one-indexed_ position
969 POSITION in the minibuffer. Any integer value less than or equal to
970 one puts point at the beginning of the string. *Note* that this
971 behavior differs from the way such arguments are used in `completing-read'
972 and some related functions, which use zero-indexing for POSITION. */)
973 (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)
975 Lisp_Object histvar, histpos, val;
976 struct gcpro gcpro1;
978 CHECK_STRING (prompt);
979 if (NILP (keymap))
980 keymap = Vminibuffer_local_map;
981 else
982 keymap = get_keymap (keymap, 1, 0);
984 if (SYMBOLP (hist))
986 histvar = hist;
987 histpos = Qnil;
989 else
991 histvar = Fcar_safe (hist);
992 histpos = Fcdr_safe (hist);
994 if (NILP (histvar))
995 histvar = Qminibuffer_history;
996 if (NILP (histpos))
997 XSETFASTINT (histpos, 0);
999 GCPRO1 (default_value);
1000 val = read_minibuf (keymap, initial_contents, prompt,
1001 Qnil, !NILP (read),
1002 histvar, histpos, default_value,
1003 minibuffer_allow_text_properties,
1004 !NILP (inherit_input_method));
1005 UNGCPRO;
1006 return val;
1009 DEFUN ("read-minibuffer", Fread_minibuffer, Sread_minibuffer, 1, 2, 0,
1010 doc: /* Return a Lisp object read using the minibuffer, unevaluated.
1011 Prompt with PROMPT. If non-nil, optional second arg INITIAL-CONTENTS
1012 is a string to insert in the minibuffer before reading.
1013 \(INITIAL-CONTENTS can also be a cons of a string and an integer.
1014 Such arguments are used as in `read-from-minibuffer'.) */)
1015 (Lisp_Object prompt, Lisp_Object initial_contents)
1017 CHECK_STRING (prompt);
1018 return read_minibuf (Vminibuffer_local_map, initial_contents,
1019 prompt, Qnil, 1, Qminibuffer_history,
1020 make_number (0), Qnil, 0, 0);
1023 DEFUN ("eval-minibuffer", Feval_minibuffer, Seval_minibuffer, 1, 2, 0,
1024 doc: /* Return value of Lisp expression read using the minibuffer.
1025 Prompt with PROMPT. If non-nil, optional second arg INITIAL-CONTENTS
1026 is a string to insert in the minibuffer before reading.
1027 \(INITIAL-CONTENTS can also be a cons of a string and an integer.
1028 Such arguments are used as in `read-from-minibuffer'.) */)
1029 (Lisp_Object prompt, Lisp_Object initial_contents)
1031 return Feval (read_minibuf (Vread_expression_map, initial_contents,
1032 prompt, Qnil, 1, Qread_expression_history,
1033 make_number (0), Qnil, 0, 0));
1036 /* Functions that use the minibuffer to read various things. */
1038 DEFUN ("read-string", Fread_string, Sread_string, 1, 5, 0,
1039 doc: /* Read a string from the minibuffer, prompting with string PROMPT.
1040 If non-nil, second arg INITIAL-INPUT is a string to insert before reading.
1041 This argument has been superseded by DEFAULT-VALUE and should normally
1042 be nil in new code. It behaves as in `read-from-minibuffer'. See the
1043 documentation string of that function for details.
1044 The third arg HISTORY, if non-nil, specifies a history list
1045 and optionally the initial position in the list.
1046 See `read-from-minibuffer' for details of HISTORY argument.
1047 Fourth arg DEFAULT-VALUE is the default value or the list of default values.
1048 If non-nil, it is used for history commands, and as the value (or the first
1049 element of the list of default values) to return if the user enters the
1050 empty string.
1051 Fifth arg INHERIT-INPUT-METHOD, if non-nil, means the minibuffer inherits
1052 the current input method and the setting of `enable-multibyte-characters'. */)
1053 (Lisp_Object prompt, Lisp_Object initial_input, Lisp_Object history, Lisp_Object default_value, Lisp_Object inherit_input_method)
1055 Lisp_Object val;
1056 val = Fread_from_minibuffer (prompt, initial_input, Qnil,
1057 Qnil, history, default_value,
1058 inherit_input_method);
1059 if (STRINGP (val) && SCHARS (val) == 0 && ! NILP (default_value))
1060 val = CONSP (default_value) ? XCAR (default_value) : default_value;
1061 return val;
1064 DEFUN ("read-no-blanks-input", Fread_no_blanks_input, Sread_no_blanks_input, 1, 3, 0,
1065 doc: /* Read a string from the terminal, not allowing blanks.
1066 Prompt with PROMPT. Whitespace terminates the input. If INITIAL is
1067 non-nil, it should be a string, which is used as initial input, with
1068 point positioned at the end, so that SPACE will accept the input.
1069 \(Actually, INITIAL can also be a cons of a string and an integer.
1070 Such values are treated as in `read-from-minibuffer', but are normally
1071 not useful in this function.)
1072 Third arg INHERIT-INPUT-METHOD, if non-nil, means the minibuffer inherits
1073 the current input method and the setting of`enable-multibyte-characters'. */)
1074 (Lisp_Object prompt, Lisp_Object initial, Lisp_Object inherit_input_method)
1076 CHECK_STRING (prompt);
1077 return read_minibuf (Vminibuffer_local_ns_map, initial, prompt, Qnil,
1078 0, Qminibuffer_history, make_number (0), Qnil, 0,
1079 !NILP (inherit_input_method));
1082 DEFUN ("read-command", Fread_command, Sread_command, 1, 2, 0,
1083 doc: /* Read the name of a command and return as a symbol.
1084 Prompt with PROMPT. By default, return DEFAULT-VALUE or its first element
1085 if it is a list. */)
1086 (Lisp_Object prompt, Lisp_Object default_value)
1088 Lisp_Object name, default_string;
1090 if (NILP (default_value))
1091 default_string = Qnil;
1092 else if (SYMBOLP (default_value))
1093 default_string = SYMBOL_NAME (default_value);
1094 else
1095 default_string = default_value;
1097 name = Fcompleting_read (prompt, Vobarray, Qcommandp, Qt,
1098 Qnil, Qnil, default_string, Qnil);
1099 if (NILP (name))
1100 return name;
1101 return Fintern (name, Qnil);
1104 #ifdef NOTDEF
1105 DEFUN ("read-function", Fread_function, Sread_function, 1, 1, 0,
1106 doc: /* One arg PROMPT, a string. Read the name of a function and return as a symbol.
1107 Prompt with PROMPT. */)
1108 (Lisp_Object prompt)
1110 return Fintern (Fcompleting_read (prompt, Vobarray, Qfboundp, Qt, Qnil, Qnil, Qnil, Qnil),
1111 Qnil);
1113 #endif /* NOTDEF */
1115 DEFUN ("read-variable", Fread_variable, Sread_variable, 1, 2, 0,
1116 doc: /* Read the name of a user variable and return it as a symbol.
1117 Prompt with PROMPT. By default, return DEFAULT-VALUE or its first element
1118 if it is a list.
1119 A user variable is one for which `user-variable-p' returns non-nil. */)
1120 (Lisp_Object prompt, Lisp_Object default_value)
1122 Lisp_Object name, default_string;
1124 if (NILP (default_value))
1125 default_string = Qnil;
1126 else if (SYMBOLP (default_value))
1127 default_string = SYMBOL_NAME (default_value);
1128 else
1129 default_string = default_value;
1131 name = Fcompleting_read (prompt, Vobarray,
1132 Quser_variable_p, Qt,
1133 Qnil, Qnil, default_string, Qnil);
1134 if (NILP (name))
1135 return name;
1136 return Fintern (name, Qnil);
1139 DEFUN ("read-buffer", Fread_buffer, Sread_buffer, 1, 3, 0,
1140 doc: /* Read the name of a buffer and return as a string.
1141 Prompt with PROMPT.
1142 Optional second arg DEF is value to return if user enters an empty line.
1143 If DEF is a list of default values, return its first element.
1144 Optional third arg REQUIRE-MATCH determines whether non-existing
1145 buffer names are allowed. It has the same meaning as the
1146 REQUIRE-MATCH argument of `completing-read'.
1147 The argument PROMPT should be a string ending with a colon and a space.
1148 If `read-buffer-completion-ignore-case' is non-nil, completion ignores
1149 case while reading the buffer name.
1150 If `read-buffer-function' is non-nil, this works by calling it as a
1151 function, instead of the usual behavior. */)
1152 (Lisp_Object prompt, Lisp_Object def, Lisp_Object require_match)
1154 Lisp_Object args[4], result;
1155 unsigned char *s;
1156 int len;
1157 int count = SPECPDL_INDEX ();
1159 if (BUFFERP (def))
1160 def = XBUFFER (def)->name;
1162 specbind (Qcompletion_ignore_case,
1163 read_buffer_completion_ignore_case ? Qt : Qnil);
1165 if (NILP (Vread_buffer_function))
1167 if (!NILP (def))
1169 /* A default value was provided: we must change PROMPT,
1170 editing the default value in before the colon. To achieve
1171 this, we replace PROMPT with a substring that doesn't
1172 contain the terminal space and colon (if present). They
1173 are then added back using Fformat. */
1175 if (STRINGP (prompt))
1177 s = SDATA (prompt);
1178 len = strlen (s);
1179 if (len >= 2 && s[len - 2] == ':' && s[len - 1] == ' ')
1180 len = len - 2;
1181 else if (len >= 1 && (s[len - 1] == ':' || s[len - 1] == ' '))
1182 len--;
1184 prompt = make_specified_string (s, -1, len,
1185 STRING_MULTIBYTE (prompt));
1188 args[0] = build_string ("%s (default %s): ");
1189 args[1] = prompt;
1190 args[2] = CONSP (def) ? XCAR (def) : def;
1191 prompt = Fformat (3, args);
1194 result = Fcompleting_read (prompt, intern ("internal-complete-buffer"),
1195 Qnil, require_match, Qnil, Qbuffer_name_history,
1196 def, Qnil);
1198 else
1200 args[0] = Vread_buffer_function;
1201 args[1] = prompt;
1202 args[2] = def;
1203 args[3] = require_match;
1204 result = Ffuncall(4, args);
1206 return unbind_to (count, result);
1209 static Lisp_Object
1210 minibuf_conform_representation (Lisp_Object string, Lisp_Object basis)
1212 if (STRING_MULTIBYTE (string) == STRING_MULTIBYTE (basis))
1213 return string;
1215 if (STRING_MULTIBYTE (string))
1216 return Fstring_make_unibyte (string);
1217 else
1218 return Fstring_make_multibyte (string);
1221 DEFUN ("try-completion", Ftry_completion, Stry_completion, 2, 3, 0,
1222 doc: /* Return common substring of all completions of STRING in COLLECTION.
1223 Test each possible completion specified by COLLECTION
1224 to see if it begins with STRING. The possible completions may be
1225 strings or symbols. Symbols are converted to strings before testing,
1226 see `symbol-name'.
1227 All that match STRING are compared together; the longest initial sequence
1228 common to all these matches is the return value.
1229 If there is no match at all, the return value is nil.
1230 For a unique match which is exact, the return value is t.
1232 If COLLECTION is an alist, the keys (cars of elements) are the
1233 possible completions. If an element is not a cons cell, then the
1234 element itself is the possible completion.
1235 If COLLECTION is a hash-table, all the keys that are strings or symbols
1236 are the possible completions.
1237 If COLLECTION is an obarray, the names of all symbols in the obarray
1238 are the possible completions.
1240 COLLECTION can also be a function to do the completion itself.
1241 It receives three arguments: the values STRING, PREDICATE and nil.
1242 Whatever it returns becomes the value of `try-completion'.
1244 If optional third argument PREDICATE is non-nil,
1245 it is used to test each possible match.
1246 The match is a candidate only if PREDICATE returns non-nil.
1247 The argument given to PREDICATE is the alist element
1248 or the symbol from the obarray. If COLLECTION is a hash-table,
1249 predicate is called with two arguments: the key and the value.
1250 Additionally to this predicate, `completion-regexp-list'
1251 is used to further constrain the set of candidates. */)
1252 (Lisp_Object string, Lisp_Object collection, Lisp_Object predicate)
1254 Lisp_Object bestmatch, tail, elt, eltstring;
1255 /* Size in bytes of BESTMATCH. */
1256 int bestmatchsize = 0;
1257 /* These are in bytes, too. */
1258 int compare, matchsize;
1259 enum { function_table, list_table, obarray_table, hash_table}
1260 type = (HASH_TABLE_P (collection) ? hash_table
1261 : VECTORP (collection) ? obarray_table
1262 : ((NILP (collection)
1263 || (CONSP (collection)
1264 && (!SYMBOLP (XCAR (collection))
1265 || NILP (XCAR (collection)))))
1266 ? list_table : function_table));
1267 int index = 0, obsize = 0;
1268 int matchcount = 0;
1269 int bindcount = -1;
1270 Lisp_Object bucket, zero, end, tem;
1271 struct gcpro gcpro1, gcpro2, gcpro3, gcpro4;
1273 CHECK_STRING (string);
1274 if (type == function_table)
1275 return call3 (collection, string, predicate, Qnil);
1277 bestmatch = bucket = Qnil;
1278 zero = make_number (0);
1280 /* If COLLECTION is not a list, set TAIL just for gc pro. */
1281 tail = collection;
1282 if (type == obarray_table)
1284 collection = check_obarray (collection);
1285 obsize = XVECTOR (collection)->size;
1286 bucket = XVECTOR (collection)->contents[index];
1289 while (1)
1291 /* Get the next element of the alist, obarray, or hash-table. */
1292 /* Exit the loop if the elements are all used up. */
1293 /* elt gets the alist element or symbol.
1294 eltstring gets the name to check as a completion. */
1296 if (type == list_table)
1298 if (!CONSP (tail))
1299 break;
1300 elt = XCAR (tail);
1301 eltstring = CONSP (elt) ? XCAR (elt) : elt;
1302 tail = XCDR (tail);
1304 else if (type == obarray_table)
1306 if (!EQ (bucket, zero))
1308 if (!SYMBOLP (bucket))
1309 error ("Bad data in guts of obarray");
1310 elt = bucket;
1311 eltstring = elt;
1312 if (XSYMBOL (bucket)->next)
1313 XSETSYMBOL (bucket, XSYMBOL (bucket)->next);
1314 else
1315 XSETFASTINT (bucket, 0);
1317 else if (++index >= obsize)
1318 break;
1319 else
1321 bucket = XVECTOR (collection)->contents[index];
1322 continue;
1325 else /* if (type == hash_table) */
1327 while (index < HASH_TABLE_SIZE (XHASH_TABLE (collection))
1328 && NILP (HASH_HASH (XHASH_TABLE (collection), index)))
1329 index++;
1330 if (index >= HASH_TABLE_SIZE (XHASH_TABLE (collection)))
1331 break;
1332 else
1333 elt = eltstring = HASH_KEY (XHASH_TABLE (collection), index++);
1336 /* Is this element a possible completion? */
1338 if (SYMBOLP (eltstring))
1339 eltstring = Fsymbol_name (eltstring);
1341 if (STRINGP (eltstring)
1342 && SCHARS (string) <= SCHARS (eltstring)
1343 && (tem = Fcompare_strings (eltstring, zero,
1344 make_number (SCHARS (string)),
1345 string, zero, Qnil,
1346 completion_ignore_case ? Qt : Qnil),
1347 EQ (Qt, tem)))
1349 /* Yes. */
1350 Lisp_Object regexps;
1352 /* Ignore this element if it fails to match all the regexps. */
1354 for (regexps = Vcompletion_regexp_list; CONSP (regexps);
1355 regexps = XCDR (regexps))
1357 if (bindcount < 0) {
1358 bindcount = SPECPDL_INDEX ();
1359 specbind (Qcase_fold_search,
1360 completion_ignore_case ? Qt : Qnil);
1362 tem = Fstring_match (XCAR (regexps), eltstring, zero);
1363 if (NILP (tem))
1364 break;
1366 if (CONSP (regexps))
1367 continue;
1370 /* Ignore this element if there is a predicate
1371 and the predicate doesn't like it. */
1373 if (!NILP (predicate))
1375 if (EQ (predicate, Qcommandp))
1376 tem = Fcommandp (elt, Qnil);
1377 else
1379 if (bindcount >= 0)
1381 unbind_to (bindcount, Qnil);
1382 bindcount = -1;
1384 GCPRO4 (tail, string, eltstring, bestmatch);
1385 tem = (type == hash_table
1386 ? call2 (predicate, elt,
1387 HASH_VALUE (XHASH_TABLE (collection),
1388 index - 1))
1389 : call1 (predicate, elt));
1390 UNGCPRO;
1392 if (NILP (tem)) continue;
1395 /* Update computation of how much all possible completions match */
1397 if (NILP (bestmatch))
1399 matchcount = 1;
1400 bestmatch = eltstring;
1401 bestmatchsize = SCHARS (eltstring);
1403 else
1405 compare = min (bestmatchsize, SCHARS (eltstring));
1406 tem = Fcompare_strings (bestmatch, zero,
1407 make_number (compare),
1408 eltstring, zero,
1409 make_number (compare),
1410 completion_ignore_case ? Qt : Qnil);
1411 if (EQ (tem, Qt))
1412 matchsize = compare;
1413 else if (XINT (tem) < 0)
1414 matchsize = - XINT (tem) - 1;
1415 else
1416 matchsize = XINT (tem) - 1;
1418 if (completion_ignore_case)
1420 /* If this is an exact match except for case,
1421 use it as the best match rather than one that is not an
1422 exact match. This way, we get the case pattern
1423 of the actual match. */
1424 if ((matchsize == SCHARS (eltstring)
1425 && matchsize < SCHARS (bestmatch))
1427 /* If there is more than one exact match ignoring case,
1428 and one of them is exact including case,
1429 prefer that one. */
1430 /* If there is no exact match ignoring case,
1431 prefer a match that does not change the case
1432 of the input. */
1433 ((matchsize == SCHARS (eltstring))
1435 (matchsize == SCHARS (bestmatch))
1436 && (tem = Fcompare_strings (eltstring, zero,
1437 make_number (SCHARS (string)),
1438 string, zero,
1439 Qnil,
1440 Qnil),
1441 EQ (Qt, tem))
1442 && (tem = Fcompare_strings (bestmatch, zero,
1443 make_number (SCHARS (string)),
1444 string, zero,
1445 Qnil,
1446 Qnil),
1447 ! EQ (Qt, tem))))
1448 bestmatch = eltstring;
1450 if (bestmatchsize != SCHARS (eltstring)
1451 || bestmatchsize != matchsize)
1452 /* Don't count the same string multiple times. */
1453 matchcount++;
1454 bestmatchsize = matchsize;
1455 if (matchsize <= SCHARS (string)
1456 /* If completion-ignore-case is non-nil, don't
1457 short-circuit because we want to find the best
1458 possible match *including* case differences. */
1459 && !completion_ignore_case
1460 && matchcount > 1)
1461 /* No need to look any further. */
1462 break;
1467 if (bindcount >= 0) {
1468 unbind_to (bindcount, Qnil);
1469 bindcount = -1;
1472 if (NILP (bestmatch))
1473 return Qnil; /* No completions found */
1474 /* If we are ignoring case, and there is no exact match,
1475 and no additional text was supplied,
1476 don't change the case of what the user typed. */
1477 if (completion_ignore_case && bestmatchsize == SCHARS (string)
1478 && SCHARS (bestmatch) > bestmatchsize)
1479 return minibuf_conform_representation (string, bestmatch);
1481 /* Return t if the supplied string is an exact match (counting case);
1482 it does not require any change to be made. */
1483 if (matchcount == 1 && !NILP (Fequal (bestmatch, string)))
1484 return Qt;
1486 XSETFASTINT (zero, 0); /* Else extract the part in which */
1487 XSETFASTINT (end, bestmatchsize); /* all completions agree */
1488 return Fsubstring (bestmatch, zero, end);
1491 DEFUN ("all-completions", Fall_completions, Sall_completions, 2, 4, 0,
1492 doc: /* Search for partial matches to STRING in COLLECTION.
1493 Test each of the possible completions specified by COLLECTION
1494 to see if it begins with STRING. The possible completions may be
1495 strings or symbols. Symbols are converted to strings before testing,
1496 see `symbol-name'.
1497 The value is a list of all the possible completions that match STRING.
1499 If COLLECTION is an alist, the keys (cars of elements) are the
1500 possible completions. If an element is not a cons cell, then the
1501 element itself is the possible completion.
1502 If COLLECTION is a hash-table, all the keys that are strings or symbols
1503 are the possible completions.
1504 If COLLECTION is an obarray, the names of all symbols in the obarray
1505 are the possible completions.
1507 COLLECTION can also be a function to do the completion itself.
1508 It receives three arguments: the values STRING, PREDICATE and t.
1509 Whatever it returns becomes the value of `all-completions'.
1511 If optional third argument PREDICATE is non-nil,
1512 it is used to test each possible match.
1513 The match is a candidate only if PREDICATE returns non-nil.
1514 The argument given to PREDICATE is the alist element
1515 or the symbol from the obarray. If COLLECTION is a hash-table,
1516 predicate is called with two arguments: the key and the value.
1517 Additionally to this predicate, `completion-regexp-list'
1518 is used to further constrain the set of candidates.
1520 An obsolete optional fourth argument HIDE-SPACES is still accepted for
1521 backward compatibility. If non-nil, strings in COLLECTION that start
1522 with a space are ignored unless STRING itself starts with a space. */)
1523 (Lisp_Object string, Lisp_Object collection, Lisp_Object predicate, Lisp_Object hide_spaces)
1525 Lisp_Object tail, elt, eltstring;
1526 Lisp_Object allmatches;
1527 int type = HASH_TABLE_P (collection) ? 3
1528 : VECTORP (collection) ? 2
1529 : NILP (collection) || (CONSP (collection)
1530 && (!SYMBOLP (XCAR (collection))
1531 || NILP (XCAR (collection))));
1532 int index = 0, obsize = 0;
1533 int bindcount = -1;
1534 Lisp_Object bucket, tem, zero;
1535 struct gcpro gcpro1, gcpro2, gcpro3, gcpro4;
1537 CHECK_STRING (string);
1538 if (type == 0)
1539 return call3 (collection, string, predicate, Qt);
1540 allmatches = bucket = Qnil;
1541 zero = make_number (0);
1543 /* If COLLECTION is not a list, set TAIL just for gc pro. */
1544 tail = collection;
1545 if (type == 2)
1547 collection = check_obarray (collection);
1548 obsize = XVECTOR (collection)->size;
1549 bucket = XVECTOR (collection)->contents[index];
1552 while (1)
1554 /* Get the next element of the alist, obarray, or hash-table. */
1555 /* Exit the loop if the elements are all used up. */
1556 /* elt gets the alist element or symbol.
1557 eltstring gets the name to check as a completion. */
1559 if (type == 1)
1561 if (!CONSP (tail))
1562 break;
1563 elt = XCAR (tail);
1564 eltstring = CONSP (elt) ? XCAR (elt) : elt;
1565 tail = XCDR (tail);
1567 else if (type == 2)
1569 if (!EQ (bucket, zero))
1571 if (!SYMBOLP (bucket))
1572 error ("Bad data in guts of obarray");
1573 elt = bucket;
1574 eltstring = elt;
1575 if (XSYMBOL (bucket)->next)
1576 XSETSYMBOL (bucket, XSYMBOL (bucket)->next);
1577 else
1578 XSETFASTINT (bucket, 0);
1580 else if (++index >= obsize)
1581 break;
1582 else
1584 bucket = XVECTOR (collection)->contents[index];
1585 continue;
1588 else /* if (type == 3) */
1590 while (index < HASH_TABLE_SIZE (XHASH_TABLE (collection))
1591 && NILP (HASH_HASH (XHASH_TABLE (collection), index)))
1592 index++;
1593 if (index >= HASH_TABLE_SIZE (XHASH_TABLE (collection)))
1594 break;
1595 else
1596 elt = eltstring = HASH_KEY (XHASH_TABLE (collection), index++);
1599 /* Is this element a possible completion? */
1601 if (SYMBOLP (eltstring))
1602 eltstring = Fsymbol_name (eltstring);
1604 if (STRINGP (eltstring)
1605 && SCHARS (string) <= SCHARS (eltstring)
1606 /* If HIDE_SPACES, reject alternatives that start with space
1607 unless the input starts with space. */
1608 && (NILP (hide_spaces)
1609 || (SBYTES (string) > 0
1610 && SREF (string, 0) == ' ')
1611 || SREF (eltstring, 0) != ' ')
1612 && (tem = Fcompare_strings (eltstring, zero,
1613 make_number (SCHARS (string)),
1614 string, zero,
1615 make_number (SCHARS (string)),
1616 completion_ignore_case ? Qt : Qnil),
1617 EQ (Qt, tem)))
1619 /* Yes. */
1620 Lisp_Object regexps;
1621 Lisp_Object zero;
1622 XSETFASTINT (zero, 0);
1624 /* Ignore this element if it fails to match all the regexps. */
1626 for (regexps = Vcompletion_regexp_list; CONSP (regexps);
1627 regexps = XCDR (regexps))
1629 if (bindcount < 0) {
1630 bindcount = SPECPDL_INDEX ();
1631 specbind (Qcase_fold_search,
1632 completion_ignore_case ? Qt : Qnil);
1634 tem = Fstring_match (XCAR (regexps), eltstring, zero);
1635 if (NILP (tem))
1636 break;
1638 if (CONSP (regexps))
1639 continue;
1642 /* Ignore this element if there is a predicate
1643 and the predicate doesn't like it. */
1645 if (!NILP (predicate))
1647 if (EQ (predicate, Qcommandp))
1648 tem = Fcommandp (elt, Qnil);
1649 else
1651 if (bindcount >= 0) {
1652 unbind_to (bindcount, Qnil);
1653 bindcount = -1;
1655 GCPRO4 (tail, eltstring, allmatches, string);
1656 tem = type == 3
1657 ? call2 (predicate, elt,
1658 HASH_VALUE (XHASH_TABLE (collection), index - 1))
1659 : call1 (predicate, elt);
1660 UNGCPRO;
1662 if (NILP (tem)) continue;
1664 /* Ok => put it on the list. */
1665 allmatches = Fcons (eltstring, allmatches);
1669 if (bindcount >= 0) {
1670 unbind_to (bindcount, Qnil);
1671 bindcount = -1;
1674 return Fnreverse (allmatches);
1677 DEFUN ("completing-read", Fcompleting_read, Scompleting_read, 2, 8, 0,
1678 doc: /* Read a string in the minibuffer, with completion.
1679 PROMPT is a string to prompt with; normally it ends in a colon and a space.
1680 COLLECTION can be a list of strings, an alist, an obarray or a hash table.
1681 COLLECTION can also be a function to do the completion itself.
1682 PREDICATE limits completion to a subset of COLLECTION.
1683 See `try-completion' and `all-completions' for more details
1684 on completion, COLLECTION, and PREDICATE.
1686 REQUIRE-MATCH can take the following values:
1687 - t means that the user is not allowed to exit unless
1688 the input is (or completes to) an element of COLLECTION or is null.
1689 - nil means that the user can exit with any input.
1690 - `confirm' means that the user can exit with any input, but she needs
1691 to confirm her choice if the input is not an element of COLLECTION.
1692 - `confirm-after-completion' means that the user can exit with any
1693 input, but she needs to confirm her choice if she called
1694 `minibuffer-complete' right before `minibuffer-complete-and-exit'
1695 and the input is not an element of COLLECTION.
1696 - anything else behaves like t except that typing RET does not exit if it
1697 does non-null completion.
1699 If the input is null, `completing-read' returns DEF, or the first element
1700 of the list of default values, or an empty string if DEF is nil,
1701 regardless of the value of REQUIRE-MATCH.
1703 If INITIAL-INPUT is non-nil, insert it in the minibuffer initially,
1704 with point positioned at the end.
1705 If it is (STRING . POSITION), the initial input is STRING, but point
1706 is placed at _zero-indexed_ position POSITION in STRING. (*Note*
1707 that this is different from `read-from-minibuffer' and related
1708 functions, which use one-indexing for POSITION.) This feature is
1709 deprecated--it is best to pass nil for INITIAL-INPUT and supply the
1710 default value DEF instead. The user can yank the default value into
1711 the minibuffer easily using \\[next-history-element].
1713 HIST, if non-nil, specifies a history list and optionally the initial
1714 position in the list. It can be a symbol, which is the history list
1715 variable to use, or it can be a cons cell (HISTVAR . HISTPOS). In
1716 that case, HISTVAR is the history list variable to use, and HISTPOS
1717 is the initial position (the position in the list used by the
1718 minibuffer history commands). For consistency, you should also
1719 specify that element of the history as the value of
1720 INITIAL-INPUT. (This is the only case in which you should use
1721 INITIAL-INPUT instead of DEF.) Positions are counted starting from
1722 1 at the beginning of the list. The variable `history-length'
1723 controls the maximum length of a history list.
1725 DEF, if non-nil, is the default value or the list of default values.
1727 If INHERIT-INPUT-METHOD is non-nil, the minibuffer inherits
1728 the current input method and the setting of `enable-multibyte-characters'.
1730 Completion ignores case if the ambient value of
1731 `completion-ignore-case' is non-nil. */)
1732 (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)
1734 Lisp_Object val, histvar, histpos, position;
1735 Lisp_Object init;
1736 int pos = 0;
1737 int count = SPECPDL_INDEX ();
1738 struct gcpro gcpro1;
1740 init = initial_input;
1741 GCPRO1 (def);
1743 specbind (Qminibuffer_completion_table, collection);
1744 specbind (Qminibuffer_completion_predicate, predicate);
1745 specbind (Qminibuffer_completion_confirm,
1746 EQ (require_match, Qt) ? Qnil : require_match);
1748 position = Qnil;
1749 if (!NILP (init))
1751 if (CONSP (init))
1753 position = Fcdr (init);
1754 init = Fcar (init);
1756 CHECK_STRING (init);
1757 if (!NILP (position))
1759 CHECK_NUMBER (position);
1760 /* Convert to distance from end of input. */
1761 pos = XINT (position) - SCHARS (init);
1765 if (SYMBOLP (hist))
1767 histvar = hist;
1768 histpos = Qnil;
1770 else
1772 histvar = Fcar_safe (hist);
1773 histpos = Fcdr_safe (hist);
1775 if (NILP (histvar))
1776 histvar = Qminibuffer_history;
1777 if (NILP (histpos))
1778 XSETFASTINT (histpos, 0);
1780 val = read_minibuf (NILP (require_match)
1781 ? (NILP (Vminibuffer_completing_file_name)
1782 || EQ (Vminibuffer_completing_file_name, Qlambda)
1783 ? Vminibuffer_local_completion_map
1784 : Vminibuffer_local_filename_completion_map)
1785 : (NILP (Vminibuffer_completing_file_name)
1786 || EQ (Vminibuffer_completing_file_name, Qlambda)
1787 ? Vminibuffer_local_must_match_map
1788 : Vminibuffer_local_filename_must_match_map),
1789 init, prompt, make_number (pos), 0,
1790 histvar, histpos, def, 0,
1791 !NILP (inherit_input_method));
1793 if (STRINGP (val) && SCHARS (val) == 0 && ! NILP (def))
1794 val = CONSP (def) ? XCAR (def) : def;
1796 RETURN_UNGCPRO (unbind_to (count, val));
1799 Lisp_Object Fassoc_string (register Lisp_Object key, Lisp_Object list, Lisp_Object case_fold);
1801 /* Test whether TXT is an exact completion. */
1802 DEFUN ("test-completion", Ftest_completion, Stest_completion, 2, 3, 0,
1803 doc: /* Return non-nil if STRING is a valid completion.
1804 Takes the same arguments as `all-completions' and `try-completion'.
1805 If COLLECTION is a function, it is called with three arguments:
1806 the values STRING, PREDICATE and `lambda'. */)
1807 (Lisp_Object string, Lisp_Object collection, Lisp_Object predicate)
1809 Lisp_Object regexps, tail, tem = Qnil;
1810 int i = 0;
1812 CHECK_STRING (string);
1814 if ((CONSP (collection)
1815 && (!SYMBOLP (XCAR (collection)) || NILP (XCAR (collection))))
1816 || NILP (collection))
1818 tem = Fassoc_string (string, collection, completion_ignore_case ? Qt : Qnil);
1819 if (NILP (tem))
1820 return Qnil;
1822 else if (VECTORP (collection))
1824 /* Bypass intern-soft as that loses for nil. */
1825 tem = oblookup (collection,
1826 SDATA (string),
1827 SCHARS (string),
1828 SBYTES (string));
1829 if (!SYMBOLP (tem))
1831 if (STRING_MULTIBYTE (string))
1832 string = Fstring_make_unibyte (string);
1833 else
1834 string = Fstring_make_multibyte (string);
1836 tem = oblookup (collection,
1837 SDATA (string),
1838 SCHARS (string),
1839 SBYTES (string));
1842 if (completion_ignore_case && !SYMBOLP (tem))
1844 for (i = XVECTOR (collection)->size - 1; i >= 0; i--)
1846 tail = XVECTOR (collection)->contents[i];
1847 if (SYMBOLP (tail))
1848 while (1)
1850 if (EQ((Fcompare_strings (string, make_number (0), Qnil,
1851 Fsymbol_name (tail),
1852 make_number (0) , Qnil, Qt)),
1853 Qt))
1855 tem = tail;
1856 break;
1858 if (XSYMBOL (tail)->next == 0)
1859 break;
1860 XSETSYMBOL (tail, XSYMBOL (tail)->next);
1865 if (!SYMBOLP (tem))
1866 return Qnil;
1868 else if (HASH_TABLE_P (collection))
1870 struct Lisp_Hash_Table *h = XHASH_TABLE (collection);
1871 i = hash_lookup (h, string, NULL);
1872 if (i >= 0)
1873 tem = HASH_KEY (h, i);
1874 else
1875 for (i = 0; i < HASH_TABLE_SIZE (h); ++i)
1876 if (!NILP (HASH_HASH (h, i)) &&
1877 EQ (Fcompare_strings (string, make_number (0), Qnil,
1878 HASH_KEY (h, i), make_number (0) , Qnil,
1879 completion_ignore_case ? Qt : Qnil),
1880 Qt))
1882 tem = HASH_KEY (h, i);
1883 break;
1885 if (!STRINGP (tem))
1886 return Qnil;
1888 else
1889 return call3 (collection, string, predicate, Qlambda);
1891 /* Reject this element if it fails to match all the regexps. */
1892 if (CONSP (Vcompletion_regexp_list))
1894 int count = SPECPDL_INDEX ();
1895 specbind (Qcase_fold_search, completion_ignore_case ? Qt : Qnil);
1896 for (regexps = Vcompletion_regexp_list; CONSP (regexps);
1897 regexps = XCDR (regexps))
1899 if (NILP (Fstring_match (XCAR (regexps),
1900 SYMBOLP (tem) ? string : tem,
1901 Qnil)))
1902 return unbind_to (count, Qnil);
1904 unbind_to (count, Qnil);
1907 /* Finally, check the predicate. */
1908 if (!NILP (predicate))
1910 return HASH_TABLE_P (collection)
1911 ? call2 (predicate, tem, HASH_VALUE (XHASH_TABLE (collection), i))
1912 : call1 (predicate, tem);
1914 else
1915 return Qt;
1918 DEFUN ("internal-complete-buffer", Finternal_complete_buffer, Sinternal_complete_buffer, 3, 3, 0,
1919 doc: /* Perform completion on buffer names.
1920 If the argument FLAG is nil, invoke `try-completion', if it's t, invoke
1921 `all-completions', otherwise invoke `test-completion'.
1923 The arguments STRING and PREDICATE are as in `try-completion',
1924 `all-completions', and `test-completion'. */)
1925 (Lisp_Object string, Lisp_Object predicate, Lisp_Object flag)
1927 if (NILP (flag))
1928 return Ftry_completion (string, Vbuffer_alist, predicate);
1929 else if (EQ (flag, Qt))
1931 Lisp_Object res = Fall_completions (string, Vbuffer_alist, predicate, Qnil);
1932 if (SCHARS (string) > 0)
1933 return res;
1934 else
1935 { /* Strip out internal buffers. */
1936 Lisp_Object bufs = res;
1937 /* First, look for a non-internal buffer in `res'. */
1938 while (CONSP (bufs) && SREF (XCAR (bufs), 0) == ' ')
1939 bufs = XCDR (bufs);
1940 if (NILP (bufs))
1941 /* All bufs in `res' are internal, so don't trip them out. */
1942 return res;
1943 res = bufs;
1944 while (CONSP (XCDR (bufs)))
1945 if (SREF (XCAR (XCDR (bufs)), 0) == ' ')
1946 XSETCDR (bufs, XCDR (XCDR (bufs)));
1947 else
1948 bufs = XCDR (bufs);
1949 return res;
1952 else /* assume `lambda' */
1953 return Ftest_completion (string, Vbuffer_alist, predicate);
1956 /* Like assoc but assumes KEY is a string, and ignores case if appropriate. */
1958 DEFUN ("assoc-string", Fassoc_string, Sassoc_string, 2, 3, 0,
1959 doc: /* Like `assoc' but specifically for strings (and symbols).
1961 This returns the first element of LIST whose car matches the string or
1962 symbol KEY, or nil if no match exists. When performing the
1963 comparison, symbols are first converted to strings, and unibyte
1964 strings to multibyte. If the optional arg CASE-FOLD is non-nil, case
1965 is ignored.
1967 Unlike `assoc', KEY can also match an entry in LIST consisting of a
1968 single string, rather than a cons cell whose car is a string. */)
1969 (register Lisp_Object key, Lisp_Object list, Lisp_Object case_fold)
1971 register Lisp_Object tail;
1973 if (SYMBOLP (key))
1974 key = Fsymbol_name (key);
1976 for (tail = list; CONSP (tail); tail = XCDR (tail))
1978 register Lisp_Object elt, tem, thiscar;
1979 elt = XCAR (tail);
1980 thiscar = CONSP (elt) ? XCAR (elt) : elt;
1981 if (SYMBOLP (thiscar))
1982 thiscar = Fsymbol_name (thiscar);
1983 else if (!STRINGP (thiscar))
1984 continue;
1985 tem = Fcompare_strings (thiscar, make_number (0), Qnil,
1986 key, make_number (0), Qnil,
1987 case_fold);
1988 if (EQ (tem, Qt))
1989 return elt;
1990 QUIT;
1992 return Qnil;
1996 DEFUN ("minibuffer-depth", Fminibuffer_depth, Sminibuffer_depth, 0, 0, 0,
1997 doc: /* Return current depth of activations of minibuffer, a nonnegative integer. */)
1998 (void)
2000 return make_number (minibuf_level);
2003 DEFUN ("minibuffer-prompt", Fminibuffer_prompt, Sminibuffer_prompt, 0, 0, 0,
2004 doc: /* Return the prompt string of the currently-active minibuffer.
2005 If no minibuffer is active, return nil. */)
2006 (void)
2008 return Fcopy_sequence (minibuf_prompt);
2012 void
2013 init_minibuf_once (void)
2015 Vminibuffer_list = Qnil;
2016 staticpro (&Vminibuffer_list);
2019 void
2020 syms_of_minibuf (void)
2022 minibuf_level = 0;
2023 minibuf_prompt = Qnil;
2024 staticpro (&minibuf_prompt);
2026 minibuf_save_list = Qnil;
2027 staticpro (&minibuf_save_list);
2029 Qcompletion_ignore_case = intern_c_string ("completion-ignore-case");
2030 staticpro (&Qcompletion_ignore_case);
2032 Qread_file_name_internal = intern_c_string ("read-file-name-internal");
2033 staticpro (&Qread_file_name_internal);
2035 Qminibuffer_default = intern_c_string ("minibuffer-default");
2036 staticpro (&Qminibuffer_default);
2037 Fset (Qminibuffer_default, Qnil);
2039 Qminibuffer_completion_table = intern_c_string ("minibuffer-completion-table");
2040 staticpro (&Qminibuffer_completion_table);
2042 Qminibuffer_completion_confirm = intern_c_string ("minibuffer-completion-confirm");
2043 staticpro (&Qminibuffer_completion_confirm);
2045 Qminibuffer_completion_predicate = intern_c_string ("minibuffer-completion-predicate");
2046 staticpro (&Qminibuffer_completion_predicate);
2048 staticpro (&last_minibuf_string);
2049 last_minibuf_string = Qnil;
2051 Quser_variable_p = intern_c_string ("user-variable-p");
2052 staticpro (&Quser_variable_p);
2054 Qminibuffer_history = intern_c_string ("minibuffer-history");
2055 staticpro (&Qminibuffer_history);
2057 Qbuffer_name_history = intern_c_string ("buffer-name-history");
2058 staticpro (&Qbuffer_name_history);
2059 Fset (Qbuffer_name_history, Qnil);
2061 Qminibuffer_setup_hook = intern_c_string ("minibuffer-setup-hook");
2062 staticpro (&Qminibuffer_setup_hook);
2064 Qminibuffer_exit_hook = intern_c_string ("minibuffer-exit-hook");
2065 staticpro (&Qminibuffer_exit_hook);
2067 Qhistory_length = intern_c_string ("history-length");
2068 staticpro (&Qhistory_length);
2070 Qcurrent_input_method = intern_c_string ("current-input-method");
2071 staticpro (&Qcurrent_input_method);
2073 Qactivate_input_method = intern_c_string ("activate-input-method");
2074 staticpro (&Qactivate_input_method);
2076 Qcase_fold_search = intern_c_string ("case-fold-search");
2077 staticpro (&Qcase_fold_search);
2079 Qread_expression_history = intern_c_string ("read-expression-history");
2080 staticpro (&Qread_expression_history);
2082 DEFVAR_LISP ("read-buffer-function", &Vread_buffer_function,
2083 doc: /* If this is non-nil, `read-buffer' does its work by calling this function.
2084 The function is called with the arguments passed to `read-buffer'. */);
2085 Vread_buffer_function = Qnil;
2087 DEFVAR_BOOL ("read-buffer-completion-ignore-case",
2088 &read_buffer_completion_ignore_case,
2089 doc: /* *Non-nil means completion ignores case when reading a buffer name. */);
2090 read_buffer_completion_ignore_case = 0;
2092 DEFVAR_LISP ("minibuffer-setup-hook", &Vminibuffer_setup_hook,
2093 doc: /* Normal hook run just after entry to minibuffer. */);
2094 Vminibuffer_setup_hook = Qnil;
2096 DEFVAR_LISP ("minibuffer-exit-hook", &Vminibuffer_exit_hook,
2097 doc: /* Normal hook run just after exit from minibuffer. */);
2098 Vminibuffer_exit_hook = Qnil;
2100 DEFVAR_LISP ("history-length", &Vhistory_length,
2101 doc: /* *Maximum length for history lists before truncation takes place.
2102 A number means that length; t means infinite. Truncation takes place
2103 just after a new element is inserted. Setting the `history-length'
2104 property of a history variable overrides this default. */);
2105 XSETFASTINT (Vhistory_length, 30);
2107 DEFVAR_BOOL ("history-delete-duplicates", &history_delete_duplicates,
2108 doc: /* *Non-nil means to delete duplicates in history.
2109 If set to t when adding a new history element, all previous identical
2110 elements are deleted from the history list. */);
2111 history_delete_duplicates = 0;
2113 DEFVAR_LISP ("history-add-new-input", &Vhistory_add_new_input,
2114 doc: /* *Non-nil means to add new elements in history.
2115 If set to nil, minibuffer reading functions don't add new elements to the
2116 history list, so it is possible to do this afterwards by calling
2117 `add-to-history' explicitly. */);
2118 Vhistory_add_new_input = Qt;
2120 DEFVAR_BOOL ("completion-ignore-case", &completion_ignore_case,
2121 doc: /* Non-nil means don't consider case significant in completion.
2122 For file-name completion, `read-file-name-completion-ignore-case'
2123 controls the behavior, rather than this variable.
2124 For buffer name completion, `read-buffer-completion-ignore-case'
2125 controls the behavior, rather than this variable. */);
2126 completion_ignore_case = 0;
2128 DEFVAR_BOOL ("enable-recursive-minibuffers", &enable_recursive_minibuffers,
2129 doc: /* *Non-nil means to allow minibuffer commands while in the minibuffer.
2130 This variable makes a difference whenever the minibuffer window is active. */);
2131 enable_recursive_minibuffers = 0;
2133 DEFVAR_LISP ("minibuffer-completion-table", &Vminibuffer_completion_table,
2134 doc: /* Alist or obarray used for completion in the minibuffer.
2135 This becomes the ALIST argument to `try-completion' and `all-completions'.
2136 The value can also be a list of strings or a hash table.
2138 The value may alternatively be a function, which is given three arguments:
2139 STRING, the current buffer contents;
2140 PREDICATE, the predicate for filtering possible matches;
2141 CODE, which says what kind of things to do.
2142 CODE can be nil, t or `lambda':
2143 nil -- return the best completion of STRING, or nil if there is none.
2144 t -- return a list of all possible completions of STRING.
2145 lambda -- return t if STRING is a valid completion as it stands. */);
2146 Vminibuffer_completion_table = Qnil;
2148 DEFVAR_LISP ("minibuffer-completion-predicate", &Vminibuffer_completion_predicate,
2149 doc: /* Within call to `completing-read', this holds the PREDICATE argument. */);
2150 Vminibuffer_completion_predicate = Qnil;
2152 DEFVAR_LISP ("minibuffer-completion-confirm", &Vminibuffer_completion_confirm,
2153 doc: /* Whether to demand confirmation of completion before exiting minibuffer.
2154 If nil, confirmation is not required.
2155 If the value is `confirm', the user may exit with an input that is not
2156 a valid completion alternative, but Emacs asks for confirmation.
2157 If the value is `confirm-after-completion', the user may exit with an
2158 input that is not a valid completion alternative, but Emacs asks for
2159 confirmation if the user submitted the input right after any of the
2160 completion commands listed in `minibuffer-confirm-exit-commands'. */);
2161 Vminibuffer_completion_confirm = Qnil;
2163 DEFVAR_LISP ("minibuffer-completing-file-name",
2164 &Vminibuffer_completing_file_name,
2165 doc: /* Non-nil means completing file names. */);
2166 Vminibuffer_completing_file_name = Qnil;
2168 DEFVAR_LISP ("minibuffer-help-form", &Vminibuffer_help_form,
2169 doc: /* Value that `help-form' takes on inside the minibuffer. */);
2170 Vminibuffer_help_form = Qnil;
2172 DEFVAR_LISP ("minibuffer-history-variable", &Vminibuffer_history_variable,
2173 doc: /* History list symbol to add minibuffer values to.
2174 Each string of minibuffer input, as it appears on exit from the minibuffer,
2175 is added with
2176 (set minibuffer-history-variable
2177 (cons STRING (symbol-value minibuffer-history-variable))) */);
2178 XSETFASTINT (Vminibuffer_history_variable, 0);
2180 DEFVAR_LISP ("minibuffer-history-position", &Vminibuffer_history_position,
2181 doc: /* Current position of redoing in the history list. */);
2182 Vminibuffer_history_position = Qnil;
2184 DEFVAR_BOOL ("minibuffer-auto-raise", &minibuffer_auto_raise,
2185 doc: /* *Non-nil means entering the minibuffer raises the minibuffer's frame.
2186 Some uses of the echo area also raise that frame (since they use it too). */);
2187 minibuffer_auto_raise = 0;
2189 DEFVAR_LISP ("completion-regexp-list", &Vcompletion_regexp_list,
2190 doc: /* List of regexps that should restrict possible completions.
2191 The basic completion functions only consider a completion acceptable
2192 if it matches all regular expressions in this list, with
2193 `case-fold-search' bound to the value of `completion-ignore-case'.
2194 See Info node `(elisp)Basic Completion', for a description of these
2195 functions. */);
2196 Vcompletion_regexp_list = Qnil;
2198 DEFVAR_BOOL ("minibuffer-allow-text-properties",
2199 &minibuffer_allow_text_properties,
2200 doc: /* Non-nil means `read-from-minibuffer' should not discard text properties.
2201 This also affects `read-string', but it does not affect `read-minibuffer',
2202 `read-no-blanks-input', or any of the functions that do minibuffer input
2203 with completion; they always discard text properties. */);
2204 minibuffer_allow_text_properties = 0;
2206 DEFVAR_LISP ("minibuffer-prompt-properties", &Vminibuffer_prompt_properties,
2207 doc: /* Text properties that are added to minibuffer prompts.
2208 These are in addition to the basic `field' property, and stickiness
2209 properties. */);
2210 /* We use `intern' here instead of Qread_only to avoid
2211 initialization-order problems. */
2212 Vminibuffer_prompt_properties
2213 = Fcons (intern_c_string ("read-only"), Fcons (Qt, Qnil));
2215 DEFVAR_LISP ("read-expression-map", &Vread_expression_map,
2216 doc: /* Minibuffer keymap used for reading Lisp expressions. */);
2217 Vread_expression_map = Qnil;
2219 defsubr (&Sset_minibuffer_window);
2220 defsubr (&Sread_from_minibuffer);
2221 defsubr (&Seval_minibuffer);
2222 defsubr (&Sread_minibuffer);
2223 defsubr (&Sread_string);
2224 defsubr (&Sread_command);
2225 defsubr (&Sread_variable);
2226 defsubr (&Sinternal_complete_buffer);
2227 defsubr (&Sread_buffer);
2228 defsubr (&Sread_no_blanks_input);
2229 defsubr (&Sminibuffer_depth);
2230 defsubr (&Sminibuffer_prompt);
2232 defsubr (&Sminibufferp);
2233 defsubr (&Sminibuffer_prompt_end);
2234 defsubr (&Sminibuffer_contents);
2235 defsubr (&Sminibuffer_contents_no_properties);
2236 defsubr (&Sminibuffer_completion_contents);
2238 defsubr (&Stry_completion);
2239 defsubr (&Sall_completions);
2240 defsubr (&Stest_completion);
2241 defsubr (&Sassoc_string);
2242 defsubr (&Scompleting_read);
2245 /* arch-tag: 8f69b601-fba3-484c-a6dd-ceaee54a7a73
2246 (do not change this comment) */