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