]> code.delx.au - gnu-emacs/blob - src/minibuf.c
Prefer AUTO_STRING_WITH_LEN to make_formatted_string
[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 (at
10 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 IF_LINT (= false);
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 (STDIN_FILENO, &etty) == 0;
207 if (etty_valid)
208 set_binary_mode (STDIN_FILENO, O_BINARY);
209 suppress_echo_on_tty (STDIN_FILENO);
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 (STDIN_FILENO, &etty, 0);
244 set_binary_mode (STDIN_FILENO, 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 = Fnthcdr (make_number (depth), Vminibuffer_list);
752 if (NILP (tail))
753 {
754 tail = list1 (Qnil);
755 Vminibuffer_list = nconc2 (Vminibuffer_list, tail);
756 }
757 Lisp_Object buf = Fcar (tail);
758 if (NILP (buf) || !BUFFER_LIVE_P (XBUFFER (buf)))
759 {
760 static char const name_fmt[] = " *Minibuf-%"pI"d*";
761 char name[sizeof name_fmt + INT_STRLEN_BOUND (EMACS_INT)];
762 AUTO_STRING_WITH_LEN (lname, name, sprintf (name, name_fmt, depth));
763 buf = Fget_buffer_create (lname);
764
765 /* Although the buffer's name starts with a space, undo should be
766 enabled in it. */
767 Fbuffer_enable_undo (buf);
768
769 XSETCAR (tail, buf);
770 }
771 else
772 {
773 ptrdiff_t count = SPECPDL_INDEX ();
774 /* We have to empty both overlay lists. Otherwise we end
775 up with overlays that think they belong to this buffer
776 while the buffer doesn't know about them any more. */
777 delete_all_overlays (XBUFFER (buf));
778 reset_buffer (XBUFFER (buf));
779 record_unwind_current_buffer ();
780 Fset_buffer (buf);
781 if (!NILP (Ffboundp (intern ("minibuffer-inactive-mode"))))
782 call0 (intern ("minibuffer-inactive-mode"));
783 else
784 Fkill_all_local_variables ();
785 unbind_to (count, Qnil);
786 }
787
788 return buf;
789 }
790
791 static void
792 run_exit_minibuf_hook (void)
793 {
794 safe_run_hooks (Qminibuffer_exit_hook);
795 }
796
797 /* This function is called on exiting minibuffer, whether normally or
798 not, and it restores the current window, buffer, etc. */
799
800 static void
801 read_minibuf_unwind (void)
802 {
803 Lisp_Object old_deactivate_mark;
804 Lisp_Object window;
805
806 /* If this was a recursive minibuffer,
807 tie the minibuffer window back to the outer level minibuffer buffer. */
808 minibuf_level--;
809
810 window = minibuf_window;
811 /* To keep things predictable, in case it matters, let's be in the
812 minibuffer when we reset the relevant variables. */
813 Fset_buffer (XWINDOW (window)->contents);
814
815 /* Restore prompt, etc, from outer minibuffer level. */
816 minibuf_prompt = Fcar (minibuf_save_list);
817 minibuf_save_list = Fcdr (minibuf_save_list);
818 minibuf_prompt_width = XFASTINT (Fcar (minibuf_save_list));
819 minibuf_save_list = Fcdr (minibuf_save_list);
820 Vhelp_form = Fcar (minibuf_save_list);
821 minibuf_save_list = Fcdr (minibuf_save_list);
822 Vcurrent_prefix_arg = Fcar (minibuf_save_list);
823 minibuf_save_list = Fcdr (minibuf_save_list);
824 Vminibuffer_history_position = Fcar (minibuf_save_list);
825 minibuf_save_list = Fcdr (minibuf_save_list);
826 Vminibuffer_history_variable = Fcar (minibuf_save_list);
827 minibuf_save_list = Fcdr (minibuf_save_list);
828 Voverriding_local_map = Fcar (minibuf_save_list);
829 minibuf_save_list = Fcdr (minibuf_save_list);
830 #if 0
831 temp = Fcar (minibuf_save_list);
832 if (FRAME_LIVE_P (XFRAME (WINDOW_FRAME (XWINDOW (temp)))))
833 minibuf_window = temp;
834 #endif
835 minibuf_save_list = Fcdr (minibuf_save_list);
836
837 /* Erase the minibuffer we were using at this level. */
838 {
839 ptrdiff_t count = SPECPDL_INDEX ();
840 /* Prevent error in erase-buffer. */
841 specbind (Qinhibit_read_only, Qt);
842 specbind (Qinhibit_modification_hooks, Qt);
843 old_deactivate_mark = Vdeactivate_mark;
844 Ferase_buffer ();
845 Vdeactivate_mark = old_deactivate_mark;
846 unbind_to (count, Qnil);
847 }
848
849 /* When we get to the outmost level, make sure we resize the
850 mini-window back to its normal size. */
851 if (minibuf_level == 0)
852 resize_mini_window (XWINDOW (window), 0);
853
854 /* In case the previous minibuffer displayed in this miniwindow is
855 dead, we may keep displaying this buffer (tho it's inactive), so reset it,
856 to make sure we don't leave around bindings and stuff which only
857 made sense during the read_minibuf invocation. */
858 call0 (intern ("minibuffer-inactive-mode"));
859 }
860 \f
861
862 DEFUN ("read-from-minibuffer", Fread_from_minibuffer,
863 Sread_from_minibuffer, 1, 7, 0,
864 doc: /* Read a string from the minibuffer, prompting with string PROMPT.
865 The optional second arg INITIAL-CONTENTS is an obsolete alternative to
866 DEFAULT-VALUE. It normally should be nil in new code, except when
867 HIST is a cons. It is discussed in more detail below.
868
869 Third arg KEYMAP is a keymap to use whilst reading;
870 if omitted or nil, the default is `minibuffer-local-map'.
871
872 If fourth arg READ is non-nil, interpret the result as a Lisp object
873 and return that object:
874 in other words, do `(car (read-from-string INPUT-STRING))'
875
876 Fifth arg HIST, if non-nil, specifies a history list and optionally
877 the initial position in the list. It can be a symbol, which is the
878 history list variable to use, or a cons cell (HISTVAR . HISTPOS).
879 In that case, HISTVAR is the history list variable to use, and
880 HISTPOS is the initial position for use by the minibuffer history
881 commands. For consistency, you should also specify that element of
882 the history as the value of INITIAL-CONTENTS. Positions are counted
883 starting from 1 at the beginning of the list.
884
885 Sixth arg DEFAULT-VALUE, if non-nil, should be a string, which is used
886 as the default to `read' if READ is non-nil and the user enters
887 empty input. But if READ is nil, this function does _not_ return
888 DEFAULT-VALUE for empty input! Instead, it returns the empty string.
889
890 Whatever the value of READ, DEFAULT-VALUE is made available via the
891 minibuffer history commands. DEFAULT-VALUE can also be a list of
892 strings, in which case all the strings are available in the history,
893 and the first string is the default to `read' if READ is non-nil.
894
895 Seventh arg INHERIT-INPUT-METHOD, if non-nil, means the minibuffer inherits
896 the current input method and the setting of `enable-multibyte-characters'.
897
898 If the variable `minibuffer-allow-text-properties' is non-nil,
899 then the string which is returned includes whatever text properties
900 were present in the minibuffer. Otherwise the value has no text properties.
901
902 The remainder of this documentation string describes the
903 INITIAL-CONTENTS argument in more detail. It is only relevant when
904 studying existing code, or when HIST is a cons. If non-nil,
905 INITIAL-CONTENTS is a string to be inserted into the minibuffer before
906 reading input. Normally, point is put at the end of that string.
907 However, if INITIAL-CONTENTS is (STRING . POSITION), the initial
908 input is STRING, but point is placed at _one-indexed_ position
909 POSITION in the minibuffer. Any integer value less than or equal to
910 one puts point at the beginning of the string. *Note* that this
911 behavior differs from the way such arguments are used in `completing-read'
912 and some related functions, which use zero-indexing for POSITION. */)
913 (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)
914 {
915 Lisp_Object histvar, histpos, val;
916
917 CHECK_STRING (prompt);
918 if (NILP (keymap))
919 keymap = Vminibuffer_local_map;
920 else
921 keymap = get_keymap (keymap, 1, 0);
922
923 if (SYMBOLP (hist))
924 {
925 histvar = hist;
926 histpos = Qnil;
927 }
928 else
929 {
930 histvar = Fcar_safe (hist);
931 histpos = Fcdr_safe (hist);
932 }
933 if (NILP (histvar))
934 histvar = Qminibuffer_history;
935 if (NILP (histpos))
936 XSETFASTINT (histpos, 0);
937
938 val = read_minibuf (keymap, initial_contents, prompt,
939 !NILP (read),
940 histvar, histpos, default_value,
941 minibuffer_allow_text_properties,
942 !NILP (inherit_input_method));
943 return val;
944 }
945
946 /* Functions that use the minibuffer to read various things. */
947
948 DEFUN ("read-string", Fread_string, Sread_string, 1, 5, 0,
949 doc: /* Read a string from the minibuffer, prompting with string PROMPT.
950 If non-nil, second arg INITIAL-INPUT is a string to insert before reading.
951 This argument has been superseded by DEFAULT-VALUE and should normally be nil
952 in new code. It behaves as INITIAL-CONTENTS in `read-from-minibuffer' (which
953 see).
954 The third arg HISTORY, if non-nil, specifies a history list
955 and optionally the initial position in the list.
956 See `read-from-minibuffer' for details of HISTORY argument.
957 Fourth arg DEFAULT-VALUE is the default value or the list of default values.
958 If non-nil, it is used for history commands, and as the value (or the first
959 element of the list of default values) to return if the user enters the
960 empty string.
961 Fifth arg INHERIT-INPUT-METHOD, if non-nil, means the minibuffer inherits
962 the current input method and the setting of `enable-multibyte-characters'. */)
963 (Lisp_Object prompt, Lisp_Object initial_input, Lisp_Object history, Lisp_Object default_value, Lisp_Object inherit_input_method)
964 {
965 Lisp_Object val;
966 ptrdiff_t count = SPECPDL_INDEX ();
967
968 /* Just in case we're in a recursive minibuffer, make it clear that the
969 previous minibuffer's completion table does not apply to the new
970 minibuffer.
971 FIXME: `minibuffer-completion-table' should be buffer-local instead. */
972 specbind (Qminibuffer_completion_table, Qnil);
973
974 val = Fread_from_minibuffer (prompt, initial_input, Qnil,
975 Qnil, history, default_value,
976 inherit_input_method);
977 if (STRINGP (val) && SCHARS (val) == 0 && ! NILP (default_value))
978 val = CONSP (default_value) ? XCAR (default_value) : default_value;
979 return unbind_to (count, val);
980 }
981
982 DEFUN ("read-no-blanks-input", Fread_no_blanks_input, Sread_no_blanks_input, 1, 3, 0,
983 doc: /* Read a string from the terminal, not allowing blanks.
984 Prompt with PROMPT. Whitespace terminates the input. If INITIAL is
985 non-nil, it should be a string, which is used as initial input, with
986 point positioned at the end, so that SPACE will accept the input.
987 \(Actually, INITIAL can also be a cons of a string and an integer.
988 Such values are treated as in `read-from-minibuffer', but are normally
989 not useful in this function.)
990 Third arg INHERIT-INPUT-METHOD, if non-nil, means the minibuffer inherits
991 the current input method and the setting of`enable-multibyte-characters'. */)
992 (Lisp_Object prompt, Lisp_Object initial, Lisp_Object inherit_input_method)
993 {
994 CHECK_STRING (prompt);
995 return read_minibuf (Vminibuffer_local_ns_map, initial, prompt,
996 0, Qminibuffer_history, make_number (0), Qnil, 0,
997 !NILP (inherit_input_method));
998 }
999
1000 DEFUN ("read-command", Fread_command, Sread_command, 1, 2, 0,
1001 doc: /* Read the name of a command and return as a symbol.
1002 Prompt with PROMPT. By default, return DEFAULT-VALUE or its first element
1003 if it is a list. */)
1004 (Lisp_Object prompt, Lisp_Object default_value)
1005 {
1006 Lisp_Object name, default_string;
1007
1008 if (NILP (default_value))
1009 default_string = Qnil;
1010 else if (SYMBOLP (default_value))
1011 default_string = SYMBOL_NAME (default_value);
1012 else
1013 default_string = default_value;
1014
1015 name = Fcompleting_read (prompt, Vobarray, Qcommandp, Qt,
1016 Qnil, Qnil, default_string, Qnil);
1017 if (NILP (name))
1018 return name;
1019 return Fintern (name, Qnil);
1020 }
1021
1022 #ifdef NOTDEF
1023 DEFUN ("read-function", Fread_function, Sread_function, 1, 1, 0,
1024 doc: /* One arg PROMPT, a string. Read the name of a function and return as a symbol.
1025 Prompt with PROMPT. */)
1026 (Lisp_Object prompt)
1027 {
1028 return Fintern (Fcompleting_read (prompt, Vobarray, Qfboundp, Qt, Qnil, Qnil, Qnil, Qnil),
1029 Qnil);
1030 }
1031 #endif /* NOTDEF */
1032
1033 DEFUN ("read-variable", Fread_variable, Sread_variable, 1, 2, 0,
1034 doc: /* Read the name of a user option and return it as a symbol.
1035 Prompt with PROMPT. By default, return DEFAULT-VALUE or its first element
1036 if it is a list.
1037 A user option, or customizable variable, is one for which
1038 `custom-variable-p' returns non-nil. */)
1039 (Lisp_Object prompt, Lisp_Object default_value)
1040 {
1041 Lisp_Object name, default_string;
1042
1043 if (NILP (default_value))
1044 default_string = Qnil;
1045 else if (SYMBOLP (default_value))
1046 default_string = SYMBOL_NAME (default_value);
1047 else
1048 default_string = default_value;
1049
1050 name = Fcompleting_read (prompt, Vobarray,
1051 Qcustom_variable_p, Qt,
1052 Qnil, Qnil, default_string, Qnil);
1053 if (NILP (name))
1054 return name;
1055 return Fintern (name, Qnil);
1056 }
1057
1058 DEFUN ("read-buffer", Fread_buffer, Sread_buffer, 1, 4, 0,
1059 doc: /* Read the name of a buffer and return as a string.
1060 Prompt with PROMPT.
1061 Optional second arg DEF is value to return if user enters an empty line.
1062 If DEF is a list of default values, return its first element.
1063 Optional third arg REQUIRE-MATCH determines whether non-existing
1064 buffer names are allowed. It has the same meaning as the
1065 REQUIRE-MATCH argument of `completing-read'.
1066 The argument PROMPT should be a string ending with a colon and a space.
1067 If `read-buffer-completion-ignore-case' is non-nil, completion ignores
1068 case while reading the buffer name.
1069 If `read-buffer-function' is non-nil, this works by calling it as a
1070 function, instead of the usual behavior.
1071 Optional arg PREDICATE if non-nil is a function limiting the buffers that can
1072 be considered. */)
1073 (Lisp_Object prompt, Lisp_Object def, Lisp_Object require_match,
1074 Lisp_Object predicate)
1075 {
1076 Lisp_Object result;
1077 char *s;
1078 ptrdiff_t len;
1079 ptrdiff_t count = SPECPDL_INDEX ();
1080
1081 if (BUFFERP (def))
1082 def = BVAR (XBUFFER (def), name);
1083
1084 specbind (Qcompletion_ignore_case,
1085 read_buffer_completion_ignore_case ? Qt : Qnil);
1086
1087 if (NILP (Vread_buffer_function))
1088 {
1089 if (!NILP (def))
1090 {
1091 /* A default value was provided: we must change PROMPT,
1092 editing the default value in before the colon. To achieve
1093 this, we replace PROMPT with a substring that doesn't
1094 contain the terminal space and colon (if present). They
1095 are then added back using Fformat. */
1096
1097 if (STRINGP (prompt))
1098 {
1099 s = SSDATA (prompt);
1100 len = SBYTES (prompt);
1101 if (len >= 2 && s[len - 2] == ':' && s[len - 1] == ' ')
1102 len = len - 2;
1103 else if (len >= 1 && (s[len - 1] == ':' || s[len - 1] == ' '))
1104 len--;
1105
1106 prompt = make_specified_string (s, -1, len,
1107 STRING_MULTIBYTE (prompt));
1108 }
1109
1110 AUTO_STRING (format, "%s (default %s): ");
1111 prompt = CALLN (Fformat, format, prompt,
1112 CONSP (def) ? XCAR (def) : def);
1113 }
1114
1115 result = Fcompleting_read (prompt, intern ("internal-complete-buffer"),
1116 predicate, require_match, Qnil,
1117 Qbuffer_name_history, def, Qnil);
1118 }
1119 else
1120 result = (NILP (predicate)
1121 /* Partial backward compatibility for older read_buffer_functions
1122 which don't expect a `predicate' argument. */
1123 ? call3 (Vread_buffer_function, prompt, def, require_match)
1124 : call4 (Vread_buffer_function, prompt, def, require_match,
1125 predicate));
1126 return unbind_to (count, result);
1127 }
1128 \f
1129 static Lisp_Object
1130 minibuf_conform_representation (Lisp_Object string, Lisp_Object basis)
1131 {
1132 if (STRING_MULTIBYTE (string) == STRING_MULTIBYTE (basis))
1133 return string;
1134
1135 if (STRING_MULTIBYTE (string))
1136 return Fstring_make_unibyte (string);
1137 else
1138 return Fstring_make_multibyte (string);
1139 }
1140
1141 DEFUN ("try-completion", Ftry_completion, Stry_completion, 2, 3, 0,
1142 doc: /* Return common substring of all completions of STRING in COLLECTION.
1143 Test each possible completion specified by COLLECTION
1144 to see if it begins with STRING. The possible completions may be
1145 strings or symbols. Symbols are converted to strings before testing,
1146 see `symbol-name'.
1147 All that match STRING are compared together; the longest initial sequence
1148 common to all these matches is the return value.
1149 If there is no match at all, the return value is nil.
1150 For a unique match which is exact, the return value is t.
1151
1152 If COLLECTION is an alist, the keys (cars of elements) are the
1153 possible completions. If an element is not a cons cell, then the
1154 element itself is the possible completion.
1155 If COLLECTION is a hash-table, all the keys that are strings or symbols
1156 are the possible completions.
1157 If COLLECTION is an obarray, the names of all symbols in the obarray
1158 are the possible completions.
1159
1160 COLLECTION can also be a function to do the completion itself.
1161 It receives three arguments: the values STRING, PREDICATE and nil.
1162 Whatever it returns becomes the value of `try-completion'.
1163
1164 If optional third argument PREDICATE is non-nil,
1165 it is used to test each possible match.
1166 The match is a candidate only if PREDICATE returns non-nil.
1167 The argument given to PREDICATE is the alist element
1168 or the symbol from the obarray. If COLLECTION is a hash-table,
1169 predicate is called with two arguments: the key and the value.
1170 Additionally to this predicate, `completion-regexp-list'
1171 is used to further constrain the set of candidates. */)
1172 (Lisp_Object string, Lisp_Object collection, Lisp_Object predicate)
1173 {
1174 Lisp_Object bestmatch, tail, elt, eltstring;
1175 /* Size in bytes of BESTMATCH. */
1176 ptrdiff_t bestmatchsize = 0;
1177 /* These are in bytes, too. */
1178 ptrdiff_t compare, matchsize;
1179 enum { function_table, list_table, obarray_table, hash_table}
1180 type = (HASH_TABLE_P (collection) ? hash_table
1181 : VECTORP (collection) ? obarray_table
1182 : ((NILP (collection)
1183 || (CONSP (collection) && !FUNCTIONP (collection)))
1184 ? list_table : function_table));
1185 ptrdiff_t idx = 0, obsize = 0;
1186 int matchcount = 0;
1187 ptrdiff_t bindcount = -1;
1188 Lisp_Object bucket, zero, end, tem;
1189
1190 CHECK_STRING (string);
1191 if (type == function_table)
1192 return call3 (collection, string, predicate, Qnil);
1193
1194 bestmatch = bucket = Qnil;
1195 zero = make_number (0);
1196
1197 /* If COLLECTION is not a list, set TAIL just for gc pro. */
1198 tail = collection;
1199 if (type == obarray_table)
1200 {
1201 collection = check_obarray (collection);
1202 obsize = ASIZE (collection);
1203 bucket = AREF (collection, idx);
1204 }
1205
1206 while (1)
1207 {
1208 /* Get the next element of the alist, obarray, or hash-table. */
1209 /* Exit the loop if the elements are all used up. */
1210 /* elt gets the alist element or symbol.
1211 eltstring gets the name to check as a completion. */
1212
1213 if (type == list_table)
1214 {
1215 if (!CONSP (tail))
1216 break;
1217 elt = XCAR (tail);
1218 eltstring = CONSP (elt) ? XCAR (elt) : elt;
1219 tail = XCDR (tail);
1220 }
1221 else if (type == obarray_table)
1222 {
1223 if (!EQ (bucket, zero))
1224 {
1225 if (!SYMBOLP (bucket))
1226 error ("Bad data in guts of obarray");
1227 elt = bucket;
1228 eltstring = elt;
1229 if (XSYMBOL (bucket)->next)
1230 XSETSYMBOL (bucket, XSYMBOL (bucket)->next);
1231 else
1232 XSETFASTINT (bucket, 0);
1233 }
1234 else if (++idx >= obsize)
1235 break;
1236 else
1237 {
1238 bucket = AREF (collection, idx);
1239 continue;
1240 }
1241 }
1242 else /* if (type == hash_table) */
1243 {
1244 while (idx < HASH_TABLE_SIZE (XHASH_TABLE (collection))
1245 && NILP (HASH_HASH (XHASH_TABLE (collection), idx)))
1246 idx++;
1247 if (idx >= HASH_TABLE_SIZE (XHASH_TABLE (collection)))
1248 break;
1249 else
1250 elt = eltstring = HASH_KEY (XHASH_TABLE (collection), idx++);
1251 }
1252
1253 /* Is this element a possible completion? */
1254
1255 if (SYMBOLP (eltstring))
1256 eltstring = Fsymbol_name (eltstring);
1257
1258 if (STRINGP (eltstring)
1259 && SCHARS (string) <= SCHARS (eltstring)
1260 && (tem = Fcompare_strings (eltstring, zero,
1261 make_number (SCHARS (string)),
1262 string, zero, Qnil,
1263 completion_ignore_case ? Qt : Qnil),
1264 EQ (Qt, tem)))
1265 {
1266 /* Yes. */
1267 Lisp_Object regexps;
1268
1269 /* Ignore this element if it fails to match all the regexps. */
1270 {
1271 for (regexps = Vcompletion_regexp_list; CONSP (regexps);
1272 regexps = XCDR (regexps))
1273 {
1274 if (bindcount < 0) {
1275 bindcount = SPECPDL_INDEX ();
1276 specbind (Qcase_fold_search,
1277 completion_ignore_case ? Qt : Qnil);
1278 }
1279 tem = Fstring_match (XCAR (regexps), eltstring, zero);
1280 if (NILP (tem))
1281 break;
1282 }
1283 if (CONSP (regexps))
1284 continue;
1285 }
1286
1287 /* Ignore this element if there is a predicate
1288 and the predicate doesn't like it. */
1289
1290 if (!NILP (predicate))
1291 {
1292 if (EQ (predicate, Qcommandp))
1293 tem = Fcommandp (elt, Qnil);
1294 else
1295 {
1296 if (bindcount >= 0)
1297 {
1298 unbind_to (bindcount, Qnil);
1299 bindcount = -1;
1300 }
1301 tem = (type == hash_table
1302 ? call2 (predicate, elt,
1303 HASH_VALUE (XHASH_TABLE (collection),
1304 idx - 1))
1305 : call1 (predicate, elt));
1306 }
1307 if (NILP (tem)) continue;
1308 }
1309
1310 /* Update computation of how much all possible completions match */
1311
1312 if (NILP (bestmatch))
1313 {
1314 matchcount = 1;
1315 bestmatch = eltstring;
1316 bestmatchsize = SCHARS (eltstring);
1317 }
1318 else
1319 {
1320 compare = min (bestmatchsize, SCHARS (eltstring));
1321 tem = Fcompare_strings (bestmatch, zero,
1322 make_number (compare),
1323 eltstring, zero,
1324 make_number (compare),
1325 completion_ignore_case ? Qt : Qnil);
1326 matchsize = EQ (tem, Qt) ? compare : eabs (XINT (tem)) - 1;
1327
1328 if (completion_ignore_case)
1329 {
1330 /* If this is an exact match except for case,
1331 use it as the best match rather than one that is not an
1332 exact match. This way, we get the case pattern
1333 of the actual match. */
1334 if ((matchsize == SCHARS (eltstring)
1335 && matchsize < SCHARS (bestmatch))
1336 ||
1337 /* If there is more than one exact match ignoring case,
1338 and one of them is exact including case,
1339 prefer that one. */
1340 /* If there is no exact match ignoring case,
1341 prefer a match that does not change the case
1342 of the input. */
1343 ((matchsize == SCHARS (eltstring))
1344 ==
1345 (matchsize == SCHARS (bestmatch))
1346 && (tem = Fcompare_strings (eltstring, zero,
1347 make_number (SCHARS (string)),
1348 string, zero,
1349 Qnil,
1350 Qnil),
1351 EQ (Qt, tem))
1352 && (tem = Fcompare_strings (bestmatch, zero,
1353 make_number (SCHARS (string)),
1354 string, zero,
1355 Qnil,
1356 Qnil),
1357 ! EQ (Qt, tem))))
1358 bestmatch = eltstring;
1359 }
1360 if (bestmatchsize != SCHARS (eltstring)
1361 || bestmatchsize != matchsize)
1362 /* Don't count the same string multiple times. */
1363 matchcount += matchcount <= 1;
1364 bestmatchsize = matchsize;
1365 if (matchsize <= SCHARS (string)
1366 /* If completion-ignore-case is non-nil, don't
1367 short-circuit because we want to find the best
1368 possible match *including* case differences. */
1369 && !completion_ignore_case
1370 && matchcount > 1)
1371 /* No need to look any further. */
1372 break;
1373 }
1374 }
1375 }
1376
1377 if (bindcount >= 0) {
1378 unbind_to (bindcount, Qnil);
1379 bindcount = -1;
1380 }
1381
1382 if (NILP (bestmatch))
1383 return Qnil; /* No completions found. */
1384 /* If we are ignoring case, and there is no exact match,
1385 and no additional text was supplied,
1386 don't change the case of what the user typed. */
1387 if (completion_ignore_case && bestmatchsize == SCHARS (string)
1388 && SCHARS (bestmatch) > bestmatchsize)
1389 return minibuf_conform_representation (string, bestmatch);
1390
1391 /* Return t if the supplied string is an exact match (counting case);
1392 it does not require any change to be made. */
1393 if (matchcount == 1 && !NILP (Fequal (bestmatch, string)))
1394 return Qt;
1395
1396 XSETFASTINT (zero, 0); /* Else extract the part in which */
1397 XSETFASTINT (end, bestmatchsize); /* all completions agree. */
1398 return Fsubstring (bestmatch, zero, end);
1399 }
1400 \f
1401 DEFUN ("all-completions", Fall_completions, Sall_completions, 2, 4, 0,
1402 doc: /* Search for partial matches to STRING in COLLECTION.
1403 Test each of the possible completions specified by COLLECTION
1404 to see if it begins with STRING. The possible completions may be
1405 strings or symbols. Symbols are converted to strings before testing,
1406 see `symbol-name'.
1407 The value is a list of all the possible completions that match STRING.
1408
1409 If COLLECTION is an alist, the keys (cars of elements) are the
1410 possible completions. If an element is not a cons cell, then the
1411 element itself is the possible completion.
1412 If COLLECTION is a hash-table, all the keys that are strings or symbols
1413 are the possible completions.
1414 If COLLECTION is an obarray, the names of all symbols in the obarray
1415 are the possible completions.
1416
1417 COLLECTION can also be a function to do the completion itself.
1418 It receives three arguments: the values STRING, PREDICATE and t.
1419 Whatever it returns becomes the value of `all-completions'.
1420
1421 If optional third argument PREDICATE is non-nil,
1422 it is used to test each possible match.
1423 The match is a candidate only if PREDICATE returns non-nil.
1424 The argument given to PREDICATE is the alist element
1425 or the symbol from the obarray. If COLLECTION is a hash-table,
1426 predicate is called with two arguments: the key and the value.
1427 Additionally to this predicate, `completion-regexp-list'
1428 is used to further constrain the set of candidates.
1429
1430 An obsolete optional fourth argument HIDE-SPACES is still accepted for
1431 backward compatibility. If non-nil, strings in COLLECTION that start
1432 with a space are ignored unless STRING itself starts with a space. */)
1433 (Lisp_Object string, Lisp_Object collection, Lisp_Object predicate, Lisp_Object hide_spaces)
1434 {
1435 Lisp_Object tail, elt, eltstring;
1436 Lisp_Object allmatches;
1437 int type = HASH_TABLE_P (collection) ? 3
1438 : VECTORP (collection) ? 2
1439 : NILP (collection) || (CONSP (collection) && !FUNCTIONP (collection));
1440 ptrdiff_t idx = 0, obsize = 0;
1441 ptrdiff_t bindcount = -1;
1442 Lisp_Object bucket, tem, zero;
1443
1444 CHECK_STRING (string);
1445 if (type == 0)
1446 return call3 (collection, string, predicate, Qt);
1447 allmatches = bucket = Qnil;
1448 zero = make_number (0);
1449
1450 /* If COLLECTION is not a list, set TAIL just for gc pro. */
1451 tail = collection;
1452 if (type == 2)
1453 {
1454 collection = check_obarray (collection);
1455 obsize = ASIZE (collection);
1456 bucket = AREF (collection, idx);
1457 }
1458
1459 while (1)
1460 {
1461 /* Get the next element of the alist, obarray, or hash-table. */
1462 /* Exit the loop if the elements are all used up. */
1463 /* elt gets the alist element or symbol.
1464 eltstring gets the name to check as a completion. */
1465
1466 if (type == 1)
1467 {
1468 if (!CONSP (tail))
1469 break;
1470 elt = XCAR (tail);
1471 eltstring = CONSP (elt) ? XCAR (elt) : elt;
1472 tail = XCDR (tail);
1473 }
1474 else if (type == 2)
1475 {
1476 if (!EQ (bucket, zero))
1477 {
1478 if (!SYMBOLP (bucket))
1479 error ("Bad data in guts of obarray");
1480 elt = bucket;
1481 eltstring = elt;
1482 if (XSYMBOL (bucket)->next)
1483 XSETSYMBOL (bucket, XSYMBOL (bucket)->next);
1484 else
1485 XSETFASTINT (bucket, 0);
1486 }
1487 else if (++idx >= obsize)
1488 break;
1489 else
1490 {
1491 bucket = AREF (collection, idx);
1492 continue;
1493 }
1494 }
1495 else /* if (type == 3) */
1496 {
1497 while (idx < HASH_TABLE_SIZE (XHASH_TABLE (collection))
1498 && NILP (HASH_HASH (XHASH_TABLE (collection), idx)))
1499 idx++;
1500 if (idx >= HASH_TABLE_SIZE (XHASH_TABLE (collection)))
1501 break;
1502 else
1503 elt = eltstring = HASH_KEY (XHASH_TABLE (collection), idx++);
1504 }
1505
1506 /* Is this element a possible completion? */
1507
1508 if (SYMBOLP (eltstring))
1509 eltstring = Fsymbol_name (eltstring);
1510
1511 if (STRINGP (eltstring)
1512 && SCHARS (string) <= SCHARS (eltstring)
1513 /* If HIDE_SPACES, reject alternatives that start with space
1514 unless the input starts with space. */
1515 && (NILP (hide_spaces)
1516 || (SBYTES (string) > 0
1517 && SREF (string, 0) == ' ')
1518 || SREF (eltstring, 0) != ' ')
1519 && (tem = Fcompare_strings (eltstring, zero,
1520 make_number (SCHARS (string)),
1521 string, zero,
1522 make_number (SCHARS (string)),
1523 completion_ignore_case ? Qt : Qnil),
1524 EQ (Qt, tem)))
1525 {
1526 /* Yes. */
1527 Lisp_Object regexps;
1528
1529 /* Ignore this element if it fails to match all the regexps. */
1530 {
1531 for (regexps = Vcompletion_regexp_list; CONSP (regexps);
1532 regexps = XCDR (regexps))
1533 {
1534 if (bindcount < 0) {
1535 bindcount = SPECPDL_INDEX ();
1536 specbind (Qcase_fold_search,
1537 completion_ignore_case ? Qt : Qnil);
1538 }
1539 tem = Fstring_match (XCAR (regexps), eltstring, zero);
1540 if (NILP (tem))
1541 break;
1542 }
1543 if (CONSP (regexps))
1544 continue;
1545 }
1546
1547 /* Ignore this element if there is a predicate
1548 and the predicate doesn't like it. */
1549
1550 if (!NILP (predicate))
1551 {
1552 if (EQ (predicate, Qcommandp))
1553 tem = Fcommandp (elt, Qnil);
1554 else
1555 {
1556 if (bindcount >= 0) {
1557 unbind_to (bindcount, Qnil);
1558 bindcount = -1;
1559 }
1560 tem = type == 3
1561 ? call2 (predicate, elt,
1562 HASH_VALUE (XHASH_TABLE (collection), idx - 1))
1563 : call1 (predicate, elt);
1564 }
1565 if (NILP (tem)) continue;
1566 }
1567 /* Ok => put it on the list. */
1568 allmatches = Fcons (eltstring, allmatches);
1569 }
1570 }
1571
1572 if (bindcount >= 0) {
1573 unbind_to (bindcount, Qnil);
1574 bindcount = -1;
1575 }
1576
1577 return Fnreverse (allmatches);
1578 }
1579 \f
1580 DEFUN ("completing-read", Fcompleting_read, Scompleting_read, 2, 8, 0,
1581 doc: /* Read a string in the minibuffer, with completion.
1582 PROMPT is a string to prompt with; normally it ends in a colon and a space.
1583 COLLECTION can be a list of strings, an alist, an obarray or a hash table.
1584 COLLECTION can also be a function to do the completion itself.
1585 PREDICATE limits completion to a subset of COLLECTION.
1586 See `try-completion', `all-completions', `test-completion',
1587 and `completion-boundaries', for more details on completion,
1588 COLLECTION, and PREDICATE. See also Info nodes `(elisp)Basic Completion'
1589 for the details about completion, and `(elisp)Programmed Completion' for
1590 expectations from COLLECTION when it's a function.
1591
1592 REQUIRE-MATCH can take the following values:
1593 - t means that the user is not allowed to exit unless
1594 the input is (or completes to) an element of COLLECTION or is null.
1595 - nil means that the user can exit with any input.
1596 - `confirm' means that the user can exit with any input, but she needs
1597 to confirm her choice if the input is not an element of COLLECTION.
1598 - `confirm-after-completion' means that the user can exit with any
1599 input, but she needs to confirm her choice if she called
1600 `minibuffer-complete' right before `minibuffer-complete-and-exit'
1601 and the input is not an element of COLLECTION.
1602 - anything else behaves like t except that typing RET does not exit if it
1603 does non-null completion.
1604
1605 If the input is null, `completing-read' returns DEF, or the first element
1606 of the list of default values, or an empty string if DEF is nil,
1607 regardless of the value of REQUIRE-MATCH.
1608
1609 If INITIAL-INPUT is non-nil, insert it in the minibuffer initially,
1610 with point positioned at the end.
1611 If it is (STRING . POSITION), the initial input is STRING, but point
1612 is placed at _zero-indexed_ position POSITION in STRING. (*Note*
1613 that this is different from `read-from-minibuffer' and related
1614 functions, which use one-indexing for POSITION.) This feature is
1615 deprecated--it is best to pass nil for INITIAL-INPUT and supply the
1616 default value DEF instead. The user can yank the default value into
1617 the minibuffer easily using \\<minibuffer-local-map>\\[next-history-element].
1618
1619 HIST, if non-nil, specifies a history list and optionally the initial
1620 position in the list. It can be a symbol, which is the history list
1621 variable to use, or it can be a cons cell (HISTVAR . HISTPOS). In
1622 that case, HISTVAR is the history list variable to use, and HISTPOS
1623 is the initial position (the position in the list used by the
1624 minibuffer history commands). For consistency, you should also
1625 specify that element of the history as the value of
1626 INITIAL-INPUT. (This is the only case in which you should use
1627 INITIAL-INPUT instead of DEF.) Positions are counted starting from
1628 1 at the beginning of the list. The variable `history-length'
1629 controls the maximum length of a history list.
1630
1631 DEF, if non-nil, is the default value or the list of default values.
1632
1633 If INHERIT-INPUT-METHOD is non-nil, the minibuffer inherits
1634 the current input method and the setting of `enable-multibyte-characters'.
1635
1636 Completion ignores case if the ambient value of
1637 `completion-ignore-case' is non-nil.
1638
1639 See also `completing-read-function'. */)
1640 (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)
1641 {
1642 return CALLN (Ffuncall,
1643 Fsymbol_value (intern ("completing-read-function")),
1644 prompt, collection, predicate, require_match, initial_input,
1645 hist, def, inherit_input_method);
1646 }
1647 \f
1648 /* Test whether TXT is an exact completion. */
1649 DEFUN ("test-completion", Ftest_completion, Stest_completion, 2, 3, 0,
1650 doc: /* Return non-nil if STRING is a valid completion.
1651 Takes the same arguments as `all-completions' and `try-completion'.
1652 If COLLECTION is a function, it is called with three arguments:
1653 the values STRING, PREDICATE and `lambda'. */)
1654 (Lisp_Object string, Lisp_Object collection, Lisp_Object predicate)
1655 {
1656 Lisp_Object regexps, tail, tem = Qnil;
1657 ptrdiff_t i = 0;
1658
1659 CHECK_STRING (string);
1660
1661 if (NILP (collection) || (CONSP (collection) && !FUNCTIONP (collection)))
1662 {
1663 tem = Fassoc_string (string, collection, completion_ignore_case ? Qt : Qnil);
1664 if (NILP (tem))
1665 return Qnil;
1666 }
1667 else if (VECTORP (collection))
1668 {
1669 /* Bypass intern-soft as that loses for nil. */
1670 tem = oblookup (collection,
1671 SSDATA (string),
1672 SCHARS (string),
1673 SBYTES (string));
1674 if (!SYMBOLP (tem))
1675 {
1676 if (STRING_MULTIBYTE (string))
1677 string = Fstring_make_unibyte (string);
1678 else
1679 string = Fstring_make_multibyte (string);
1680
1681 tem = oblookup (collection,
1682 SSDATA (string),
1683 SCHARS (string),
1684 SBYTES (string));
1685 }
1686
1687 if (completion_ignore_case && !SYMBOLP (tem))
1688 {
1689 for (i = ASIZE (collection) - 1; i >= 0; i--)
1690 {
1691 tail = AREF (collection, i);
1692 if (SYMBOLP (tail))
1693 while (1)
1694 {
1695 if (EQ (Fcompare_strings (string, make_number (0), Qnil,
1696 Fsymbol_name (tail),
1697 make_number (0) , Qnil, Qt),
1698 Qt))
1699 {
1700 tem = tail;
1701 break;
1702 }
1703 if (XSYMBOL (tail)->next == 0)
1704 break;
1705 XSETSYMBOL (tail, XSYMBOL (tail)->next);
1706 }
1707 }
1708 }
1709
1710 if (!SYMBOLP (tem))
1711 return Qnil;
1712 }
1713 else if (HASH_TABLE_P (collection))
1714 {
1715 struct Lisp_Hash_Table *h = XHASH_TABLE (collection);
1716 Lisp_Object key = Qnil;
1717 i = hash_lookup (h, string, NULL);
1718 if (i >= 0)
1719 tem = HASH_KEY (h, i);
1720 else
1721 for (i = 0; i < HASH_TABLE_SIZE (h); ++i)
1722 if (!NILP (HASH_HASH (h, i))
1723 && (key = HASH_KEY (h, i),
1724 SYMBOLP (key) ? key = Fsymbol_name (key) : key,
1725 STRINGP (key))
1726 && EQ (Fcompare_strings (string, make_number (0), Qnil,
1727 key, make_number (0) , Qnil,
1728 completion_ignore_case ? Qt : Qnil),
1729 Qt))
1730 {
1731 tem = key;
1732 break;
1733 }
1734 if (!STRINGP (tem))
1735 return Qnil;
1736 }
1737 else
1738 return call3 (collection, string, predicate, Qlambda);
1739
1740 /* Reject this element if it fails to match all the regexps. */
1741 if (CONSP (Vcompletion_regexp_list))
1742 {
1743 ptrdiff_t count = SPECPDL_INDEX ();
1744 specbind (Qcase_fold_search, completion_ignore_case ? Qt : Qnil);
1745 for (regexps = Vcompletion_regexp_list; CONSP (regexps);
1746 regexps = XCDR (regexps))
1747 {
1748 if (NILP (Fstring_match (XCAR (regexps),
1749 SYMBOLP (tem) ? string : tem,
1750 Qnil)))
1751 return unbind_to (count, Qnil);
1752 }
1753 unbind_to (count, Qnil);
1754 }
1755
1756 /* Finally, check the predicate. */
1757 if (!NILP (predicate))
1758 {
1759 return HASH_TABLE_P (collection)
1760 ? call2 (predicate, tem, HASH_VALUE (XHASH_TABLE (collection), i))
1761 : call1 (predicate, tem);
1762 }
1763 else
1764 return Qt;
1765 }
1766
1767 DEFUN ("internal-complete-buffer", Finternal_complete_buffer, Sinternal_complete_buffer, 3, 3, 0,
1768 doc: /* Perform completion on buffer names.
1769 STRING and PREDICATE have the same meanings as in `try-completion',
1770 `all-completions', and `test-completion'.
1771
1772 If FLAG is nil, invoke `try-completion'; if it is t, invoke
1773 `all-completions'; otherwise invoke `test-completion'. */)
1774 (Lisp_Object string, Lisp_Object predicate, Lisp_Object flag)
1775 {
1776 if (NILP (flag))
1777 return Ftry_completion (string, Vbuffer_alist, predicate);
1778 else if (EQ (flag, Qt))
1779 {
1780 Lisp_Object res = Fall_completions (string, Vbuffer_alist, predicate, Qnil);
1781 if (SCHARS (string) > 0)
1782 return res;
1783 else
1784 { /* Strip out internal buffers. */
1785 Lisp_Object bufs = res;
1786 /* First, look for a non-internal buffer in `res'. */
1787 while (CONSP (bufs) && SREF (XCAR (bufs), 0) == ' ')
1788 bufs = XCDR (bufs);
1789 if (NILP (bufs))
1790 return (EQ (Flength (res), Flength (Vbuffer_alist))
1791 /* If all bufs are internal don't strip them out. */
1792 ? res : bufs);
1793 res = bufs;
1794 while (CONSP (XCDR (bufs)))
1795 if (SREF (XCAR (XCDR (bufs)), 0) == ' ')
1796 XSETCDR (bufs, XCDR (XCDR (bufs)));
1797 else
1798 bufs = XCDR (bufs);
1799 return res;
1800 }
1801 }
1802 else if (EQ (flag, Qlambda))
1803 return Ftest_completion (string, Vbuffer_alist, predicate);
1804 else if (EQ (flag, Qmetadata))
1805 return list2 (Qmetadata, Fcons (Qcategory, Qbuffer));
1806 else
1807 return Qnil;
1808 }
1809
1810 /* Like assoc but assumes KEY is a string, and ignores case if appropriate. */
1811
1812 DEFUN ("assoc-string", Fassoc_string, Sassoc_string, 2, 3, 0,
1813 doc: /* Like `assoc' but specifically for strings (and symbols).
1814
1815 This returns the first element of LIST whose car matches the string or
1816 symbol KEY, or nil if no match exists. When performing the
1817 comparison, symbols are first converted to strings, and unibyte
1818 strings to multibyte. If the optional arg CASE-FOLD is non-nil, case
1819 is ignored.
1820
1821 Unlike `assoc', KEY can also match an entry in LIST consisting of a
1822 single string, rather than a cons cell whose car is a string. */)
1823 (register Lisp_Object key, Lisp_Object list, Lisp_Object case_fold)
1824 {
1825 register Lisp_Object tail;
1826
1827 if (SYMBOLP (key))
1828 key = Fsymbol_name (key);
1829
1830 for (tail = list; CONSP (tail); tail = XCDR (tail))
1831 {
1832 register Lisp_Object elt, tem, thiscar;
1833 elt = XCAR (tail);
1834 thiscar = CONSP (elt) ? XCAR (elt) : elt;
1835 if (SYMBOLP (thiscar))
1836 thiscar = Fsymbol_name (thiscar);
1837 else if (!STRINGP (thiscar))
1838 continue;
1839 tem = Fcompare_strings (thiscar, make_number (0), Qnil,
1840 key, make_number (0), Qnil,
1841 case_fold);
1842 if (EQ (tem, Qt))
1843 return elt;
1844 QUIT;
1845 }
1846 return Qnil;
1847 }
1848
1849 \f
1850 DEFUN ("minibuffer-depth", Fminibuffer_depth, Sminibuffer_depth, 0, 0, 0,
1851 doc: /* Return current depth of activations of minibuffer, a nonnegative integer. */)
1852 (void)
1853 {
1854 return make_number (minibuf_level);
1855 }
1856
1857 DEFUN ("minibuffer-prompt", Fminibuffer_prompt, Sminibuffer_prompt, 0, 0, 0,
1858 doc: /* Return the prompt string of the currently-active minibuffer.
1859 If no minibuffer is active, return nil. */)
1860 (void)
1861 {
1862 return Fcopy_sequence (minibuf_prompt);
1863 }
1864
1865 \f
1866 void
1867 init_minibuf_once (void)
1868 {
1869 Vminibuffer_list = Qnil;
1870 staticpro (&Vminibuffer_list);
1871 }
1872
1873 void
1874 syms_of_minibuf (void)
1875 {
1876 minibuf_level = 0;
1877 minibuf_prompt = Qnil;
1878 staticpro (&minibuf_prompt);
1879
1880 minibuf_save_list = Qnil;
1881 staticpro (&minibuf_save_list);
1882
1883 DEFSYM (Qcompletion_ignore_case, "completion-ignore-case");
1884 DEFSYM (Qminibuffer_default, "minibuffer-default");
1885 Fset (Qminibuffer_default, Qnil);
1886
1887 DEFSYM (Qminibuffer_completion_table, "minibuffer-completion-table");
1888
1889 staticpro (&last_minibuf_string);
1890 last_minibuf_string = Qnil;
1891
1892 DEFSYM (Qminibuffer_history, "minibuffer-history");
1893 DEFSYM (Qbuffer_name_history, "buffer-name-history");
1894 Fset (Qbuffer_name_history, Qnil);
1895
1896 DEFSYM (Qcustom_variable_p, "custom-variable-p");
1897
1898 /* Normal hooks for entry to and exit from minibuffer. */
1899 DEFSYM (Qminibuffer_setup_hook, "minibuffer-setup-hook");
1900 DEFSYM (Qminibuffer_exit_hook, "minibuffer-exit-hook");
1901
1902 /* The maximum length of a minibuffer history. */
1903 DEFSYM (Qhistory_length, "history-length");
1904
1905 DEFSYM (Qcurrent_input_method, "current-input-method");
1906 DEFSYM (Qactivate_input_method, "activate-input-method");
1907 DEFSYM (Qcase_fold_search, "case-fold-search");
1908 DEFSYM (Qmetadata, "metadata");
1909
1910 DEFVAR_LISP ("read-expression-history", Vread_expression_history,
1911 doc: /* A history list for arguments that are Lisp expressions to evaluate.
1912 For example, `eval-expression' uses this. */);
1913 Vread_expression_history = Qnil;
1914
1915 DEFVAR_LISP ("read-buffer-function", Vread_buffer_function,
1916 doc: /* If this is non-nil, `read-buffer' does its work by calling this function.
1917 The function is called with the arguments passed to `read-buffer'. */);
1918 Vread_buffer_function = Qnil;
1919
1920 DEFVAR_BOOL ("read-buffer-completion-ignore-case",
1921 read_buffer_completion_ignore_case,
1922 doc: /* Non-nil means completion ignores case when reading a buffer name. */);
1923 read_buffer_completion_ignore_case = 0;
1924
1925 DEFVAR_LISP ("minibuffer-setup-hook", Vminibuffer_setup_hook,
1926 doc: /* Normal hook run just after entry to minibuffer. */);
1927 Vminibuffer_setup_hook = Qnil;
1928
1929 DEFVAR_LISP ("minibuffer-exit-hook", Vminibuffer_exit_hook,
1930 doc: /* Normal hook run just after exit from minibuffer. */);
1931 Vminibuffer_exit_hook = Qnil;
1932
1933 DEFVAR_LISP ("history-length", Vhistory_length,
1934 doc: /* Maximum length of history lists before truncation takes place.
1935 A number means truncate to that length; truncation deletes old
1936 elements, and is done just after inserting a new element.
1937 A value of t means no truncation.
1938
1939 This variable only affects history lists that don't specify their own
1940 maximum lengths. Setting the `history-length' property of a history
1941 variable overrides this default. */);
1942 XSETFASTINT (Vhistory_length, 100);
1943
1944 DEFVAR_BOOL ("history-delete-duplicates", history_delete_duplicates,
1945 doc: /* Non-nil means to delete duplicates in history.
1946 If set to t when adding a new history element, all previous identical
1947 elements are deleted from the history list. */);
1948 history_delete_duplicates = 0;
1949
1950 DEFVAR_LISP ("history-add-new-input", Vhistory_add_new_input,
1951 doc: /* Non-nil means to add new elements in history.
1952 If set to nil, minibuffer reading functions don't add new elements to the
1953 history list, so it is possible to do this afterwards by calling
1954 `add-to-history' explicitly. */);
1955 Vhistory_add_new_input = Qt;
1956
1957 DEFVAR_BOOL ("completion-ignore-case", completion_ignore_case,
1958 doc: /* Non-nil means don't consider case significant in completion.
1959 For file-name completion, `read-file-name-completion-ignore-case'
1960 controls the behavior, rather than this variable.
1961 For buffer name completion, `read-buffer-completion-ignore-case'
1962 controls the behavior, rather than this variable. */);
1963 completion_ignore_case = 0;
1964
1965 DEFVAR_BOOL ("enable-recursive-minibuffers", enable_recursive_minibuffers,
1966 doc: /* Non-nil means to allow minibuffer commands while in the minibuffer.
1967 This variable makes a difference whenever the minibuffer window is active. */);
1968 enable_recursive_minibuffers = 0;
1969
1970 DEFVAR_LISP ("minibuffer-completion-table", Vminibuffer_completion_table,
1971 doc: /* Alist or obarray used for completion in the minibuffer.
1972 This becomes the ALIST argument to `try-completion' and `all-completions'.
1973 The value can also be a list of strings or a hash table.
1974
1975 The value may alternatively be a function, which is given three arguments:
1976 STRING, the current buffer contents;
1977 PREDICATE, the predicate for filtering possible matches;
1978 CODE, which says what kind of things to do.
1979 CODE can be nil, t or `lambda':
1980 nil -- return the best completion of STRING, or nil if there is none.
1981 t -- return a list of all possible completions of STRING.
1982 lambda -- return t if STRING is a valid completion as it stands. */);
1983 Vminibuffer_completion_table = Qnil;
1984
1985 DEFVAR_LISP ("minibuffer-completion-predicate", Vminibuffer_completion_predicate,
1986 doc: /* Within call to `completing-read', this holds the PREDICATE argument. */);
1987 Vminibuffer_completion_predicate = Qnil;
1988
1989 DEFVAR_LISP ("minibuffer-completion-confirm", Vminibuffer_completion_confirm,
1990 doc: /* Whether to demand confirmation of completion before exiting minibuffer.
1991 If nil, confirmation is not required.
1992 If the value is `confirm', the user may exit with an input that is not
1993 a valid completion alternative, but Emacs asks for confirmation.
1994 If the value is `confirm-after-completion', the user may exit with an
1995 input that is not a valid completion alternative, but Emacs asks for
1996 confirmation if the user submitted the input right after any of the
1997 completion commands listed in `minibuffer-confirm-exit-commands'. */);
1998 Vminibuffer_completion_confirm = Qnil;
1999
2000 DEFVAR_LISP ("minibuffer-completing-file-name",
2001 Vminibuffer_completing_file_name,
2002 doc: /* Non-nil means completing file names. */);
2003 Vminibuffer_completing_file_name = Qnil;
2004
2005 DEFVAR_LISP ("minibuffer-help-form", Vminibuffer_help_form,
2006 doc: /* Value that `help-form' takes on inside the minibuffer. */);
2007 Vminibuffer_help_form = Qnil;
2008
2009 DEFVAR_LISP ("minibuffer-history-variable", Vminibuffer_history_variable,
2010 doc: /* History list symbol to add minibuffer values to.
2011 Each string of minibuffer input, as it appears on exit from the minibuffer,
2012 is added with
2013 (set minibuffer-history-variable
2014 (cons STRING (symbol-value minibuffer-history-variable))) */);
2015 XSETFASTINT (Vminibuffer_history_variable, 0);
2016
2017 DEFVAR_LISP ("minibuffer-history-position", Vminibuffer_history_position,
2018 doc: /* Current position of redoing in the history list. */);
2019 Vminibuffer_history_position = Qnil;
2020
2021 DEFVAR_BOOL ("minibuffer-auto-raise", minibuffer_auto_raise,
2022 doc: /* Non-nil means entering the minibuffer raises the minibuffer's frame.
2023 Some uses of the echo area also raise that frame (since they use it too). */);
2024 minibuffer_auto_raise = 0;
2025
2026 DEFVAR_LISP ("completion-regexp-list", Vcompletion_regexp_list,
2027 doc: /* List of regexps that should restrict possible completions.
2028 The basic completion functions only consider a completion acceptable
2029 if it matches all regular expressions in this list, with
2030 `case-fold-search' bound to the value of `completion-ignore-case'.
2031 See Info node `(elisp)Basic Completion', for a description of these
2032 functions. */);
2033 Vcompletion_regexp_list = Qnil;
2034
2035 DEFVAR_BOOL ("minibuffer-allow-text-properties",
2036 minibuffer_allow_text_properties,
2037 doc: /* Non-nil means `read-from-minibuffer' should not discard text properties.
2038 This also affects `read-string', but it does not affect `read-minibuffer',
2039 `read-no-blanks-input', or any of the functions that do minibuffer input
2040 with completion; they always discard text properties. */);
2041 minibuffer_allow_text_properties = 0;
2042
2043 DEFVAR_LISP ("minibuffer-prompt-properties", Vminibuffer_prompt_properties,
2044 doc: /* Text properties that are added to minibuffer prompts.
2045 These are in addition to the basic `field' property, and stickiness
2046 properties. */);
2047 Vminibuffer_prompt_properties = list2 (Qread_only, Qt);
2048
2049 DEFVAR_LISP ("read-hide-char", Vread_hide_char,
2050 doc: /* Whether to hide input characters in noninteractive mode.
2051 It must be a character, which will be used to mask the input
2052 characters. This variable should never be set globally. */);
2053 Vread_hide_char = Qnil;
2054
2055 defsubr (&Sactive_minibuffer_window);
2056 defsubr (&Sset_minibuffer_window);
2057 defsubr (&Sread_from_minibuffer);
2058 defsubr (&Sread_string);
2059 defsubr (&Sread_command);
2060 defsubr (&Sread_variable);
2061 defsubr (&Sinternal_complete_buffer);
2062 defsubr (&Sread_buffer);
2063 defsubr (&Sread_no_blanks_input);
2064 defsubr (&Sminibuffer_depth);
2065 defsubr (&Sminibuffer_prompt);
2066
2067 defsubr (&Sminibufferp);
2068 defsubr (&Sminibuffer_prompt_end);
2069 defsubr (&Sminibuffer_contents);
2070 defsubr (&Sminibuffer_contents_no_properties);
2071 defsubr (&Sminibuffer_completion_contents);
2072
2073 defsubr (&Stry_completion);
2074 defsubr (&Sall_completions);
2075 defsubr (&Stest_completion);
2076 defsubr (&Sassoc_string);
2077 defsubr (&Scompleting_read);
2078 }