annotate src/minibuf.c @ 99492:ee792794d888

(isearch-search-fun): Compare the length of the current search string with the length of the string from the previous search state to detect the situation when the user adds or removes characters in the search string. Use word-search-forward-lax and word-search-backward-lax in this case, and otherwise word-search-forward and word-search-backward.
author Juri Linkov <juri@jurta.org>
date Tue, 11 Nov 2008 19:43:09 +0000
parents 2b78c770209e
children 45b1a61112cb
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1 /* Minibuffer input and completion.
94963
8971ddf55736 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 94629
diff changeset
2 Copyright (C) 1985, 1986, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
8971ddf55736 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 94629
diff changeset
3 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
8971ddf55736 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 94629
diff changeset
4 2008 Free Software Foundation, Inc.
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
6 This file is part of GNU Emacs.
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
7
94963
8971ddf55736 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 94629
diff changeset
8 GNU Emacs is free software: you can redistribute it and/or modify
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
9 it under the terms of the GNU General Public License as published by
94963
8971ddf55736 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 94629
diff changeset
10 the Free Software Foundation, either version 3 of the License, or
8971ddf55736 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 94629
diff changeset
11 (at your option) any later version.
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
12
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
13 GNU Emacs is distributed in the hope that it will be useful,
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
16 GNU General Public License for more details.
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
17
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
18 You should have received a copy of the GNU General Public License
94963
8971ddf55736 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 94629
diff changeset
19 along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
20
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
21
4696
1fc792473491 Include <config.h> instead of "config.h".
Roland McGrath <roland@gnu.org>
parents: 4641
diff changeset
22 #include <config.h>
25788
7796a636f039 (toplevel): Move include of stdio.h to other includes.
Gerd Moellmann <gerd@gnu.org>
parents: 25738
diff changeset
23 #include <stdio.h>
39989
c652433b7f2f Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents: 39973
diff changeset
24
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
25 #include "lisp.h"
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
26 #include "commands.h"
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
27 #include "buffer.h"
88351
aac41b50c875 Include "character.h" instead of "charset.h".
Kenichi Handa <handa@m17n.org>
parents: 43573
diff changeset
28 #include "character.h"
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
29 #include "dispextern.h"
31102
6a0caa788013 Include keyboard.h before frame.h.
Andrew Innes <andrewi@gnu.org>
parents: 30976
diff changeset
30 #include "keyboard.h"
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 737
diff changeset
31 #include "frame.h"
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
32 #include "window.h"
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
33 #include "syntax.h"
34224
5a5d98ee4078 * minibuf.c: Include intervals.h.
Ken Raeburn <raeburn@raeburn.org>
parents: 33682
diff changeset
34 #include "intervals.h"
39697
0b986bb45526 Include keymap.h.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39682
diff changeset
35 #include "keymap.h"
82992
5de4189e659d Got rid of the rif (window-based redisplay interface) global variable.
Karoly Lorentey <lorentey@elte.hu>
parents: 53364
diff changeset
36 #include "termhooks.h"
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
37
6233
1e90a9197a2a (temp_echo_area_glyphs): Use quit_char, not C-g.
Karl Heuer <kwzh@gnu.org>
parents: 6207
diff changeset
38 extern int quit_char;
1e90a9197a2a (temp_echo_area_glyphs): Use quit_char, not C-g.
Karl Heuer <kwzh@gnu.org>
parents: 6207
diff changeset
39
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
40 /* List of buffers for use as minibuffers.
7952
9e2e0fdd1710 (minibuf_save_list): New variable, replaces minibuf_save_vector.
Karl Heuer <kwzh@gnu.org>
parents: 7836
diff changeset
41 The first element of the list is used for the outermost minibuffer
9e2e0fdd1710 (minibuf_save_list): New variable, replaces minibuf_save_vector.
Karl Heuer <kwzh@gnu.org>
parents: 7836
diff changeset
42 invocation, the next element is used for a recursive minibuffer
9e2e0fdd1710 (minibuf_save_list): New variable, replaces minibuf_save_vector.
Karl Heuer <kwzh@gnu.org>
parents: 7836
diff changeset
43 invocation, etc. The list is extended at the end as deeper
9e2e0fdd1710 (minibuf_save_list): New variable, replaces minibuf_save_vector.
Karl Heuer <kwzh@gnu.org>
parents: 7836
diff changeset
44 minibuffer recursions are encountered. */
25014
1c522baf1a3c (read_minibuf): Reset echo message strings to nil.
Gerd Moellmann <gerd@gnu.org>
parents: 24918
diff changeset
45
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
46 Lisp_Object Vminibuffer_list;
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
47
7952
9e2e0fdd1710 (minibuf_save_list): New variable, replaces minibuf_save_vector.
Karl Heuer <kwzh@gnu.org>
parents: 7836
diff changeset
48 /* Data to remember during recursive minibuffer invocations */
25014
1c522baf1a3c (read_minibuf): Reset echo message strings to nil.
Gerd Moellmann <gerd@gnu.org>
parents: 24918
diff changeset
49
7952
9e2e0fdd1710 (minibuf_save_list): New variable, replaces minibuf_save_vector.
Karl Heuer <kwzh@gnu.org>
parents: 7836
diff changeset
50 Lisp_Object minibuf_save_list;
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
51
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
52 /* Depth in minibuffer invocations. */
25014
1c522baf1a3c (read_minibuf): Reset echo message strings to nil.
Gerd Moellmann <gerd@gnu.org>
parents: 24918
diff changeset
53
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
54 int minibuf_level;
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
55
15967
b791ab74ff30 (Vhistory_length, Qhistory_length): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 15835
diff changeset
56 /* The maximum length of a minibuffer history. */
25014
1c522baf1a3c (read_minibuf): Reset echo message strings to nil.
Gerd Moellmann <gerd@gnu.org>
parents: 24918
diff changeset
57
15967
b791ab74ff30 (Vhistory_length, Qhistory_length): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 15835
diff changeset
58 Lisp_Object Qhistory_length, Vhistory_length;
b791ab74ff30 (Vhistory_length, Qhistory_length): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 15835
diff changeset
59
57016
eda556d106c6 (history_delete_duplicates): New variable.
Juri Linkov <juri@jurta.org>
parents: 56666
diff changeset
60 /* No duplicates in history. */
eda556d106c6 (history_delete_duplicates): New variable.
Juri Linkov <juri@jurta.org>
parents: 56666
diff changeset
61
eda556d106c6 (history_delete_duplicates): New variable.
Juri Linkov <juri@jurta.org>
parents: 56666
diff changeset
62 int history_delete_duplicates;
eda556d106c6 (history_delete_duplicates): New variable.
Juri Linkov <juri@jurta.org>
parents: 56666
diff changeset
63
71120
3c66cf4b4ded (Vhistory_add_new_input): New variable.
Juri Linkov <juri@jurta.org>
parents: 70930
diff changeset
64 /* Non-nil means add new input to history. */
3c66cf4b4ded (Vhistory_add_new_input): New variable.
Juri Linkov <juri@jurta.org>
parents: 70930
diff changeset
65
3c66cf4b4ded (Vhistory_add_new_input): New variable.
Juri Linkov <juri@jurta.org>
parents: 70930
diff changeset
66 Lisp_Object Vhistory_add_new_input;
3c66cf4b4ded (Vhistory_add_new_input): New variable.
Juri Linkov <juri@jurta.org>
parents: 70930
diff changeset
67
4824
eaf67474339b (Fminibuffer_complete_word): GCPRO1 `completion' during calls to
Brian Fox <bfox@gnu.org>
parents: 4775
diff changeset
68 /* Fread_minibuffer leaves the input here as a string. */
25014
1c522baf1a3c (read_minibuf): Reset echo message strings to nil.
Gerd Moellmann <gerd@gnu.org>
parents: 24918
diff changeset
69
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
70 Lisp_Object last_minibuf_string;
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
71
45620
1ae71892eb5f (read_minibuf): Cast `current_column' return value to int.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 45408
diff changeset
72 /* Nonzero means let functions called when within a minibuffer
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
73 invoke recursive minibuffers (to read arguments, or whatever) */
25014
1c522baf1a3c (read_minibuf): Reset echo message strings to nil.
Gerd Moellmann <gerd@gnu.org>
parents: 24918
diff changeset
74
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
75 int enable_recursive_minibuffers;
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
76
18444
825ff9e2e44e (read_minibuf): New arg allow_props.
Richard M. Stallman <rms@gnu.org>
parents: 17805
diff changeset
77 /* Nonzero means don't ignore text properties
825ff9e2e44e (read_minibuf): New arg allow_props.
Richard M. Stallman <rms@gnu.org>
parents: 17805
diff changeset
78 in Fread_from_minibuffer. */
25014
1c522baf1a3c (read_minibuf): Reset echo message strings to nil.
Gerd Moellmann <gerd@gnu.org>
parents: 24918
diff changeset
79
18444
825ff9e2e44e (read_minibuf): New arg allow_props.
Richard M. Stallman <rms@gnu.org>
parents: 17805
diff changeset
80 int minibuffer_allow_text_properties;
825ff9e2e44e (read_minibuf): New arg allow_props.
Richard M. Stallman <rms@gnu.org>
parents: 17805
diff changeset
81
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
82 /* help-form is bound to this while in the minibuffer. */
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
83
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
84 Lisp_Object Vminibuffer_help_form;
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
85
864
fe5f6b7c9727 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 765
diff changeset
86 /* Variable which is the history list to add minibuffer values to. */
fe5f6b7c9727 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 765
diff changeset
87
fe5f6b7c9727 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 765
diff changeset
88 Lisp_Object Vminibuffer_history_variable;
fe5f6b7c9727 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 765
diff changeset
89
fe5f6b7c9727 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 765
diff changeset
90 /* Current position in the history list (adjusted by M-n and M-p). */
fe5f6b7c9727 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 765
diff changeset
91
fe5f6b7c9727 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 765
diff changeset
92 Lisp_Object Vminibuffer_history_position;
fe5f6b7c9727 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 765
diff changeset
93
33682
ec99a5f4085e (Vminibuffer_prompt_properties): New variable.
Miles Bader <miles@gnu.org>
parents: 33088
diff changeset
94 /* Text properties that are added to minibuffer prompts.
ec99a5f4085e (Vminibuffer_prompt_properties): New variable.
Miles Bader <miles@gnu.org>
parents: 33088
diff changeset
95 These are in addition to the basic `field' property, and stickiness
ec99a5f4085e (Vminibuffer_prompt_properties): New variable.
Miles Bader <miles@gnu.org>
parents: 33088
diff changeset
96 properties. */
ec99a5f4085e (Vminibuffer_prompt_properties): New variable.
Miles Bader <miles@gnu.org>
parents: 33088
diff changeset
97
ec99a5f4085e (Vminibuffer_prompt_properties): New variable.
Miles Bader <miles@gnu.org>
parents: 33088
diff changeset
98 Lisp_Object Vminibuffer_prompt_properties;
ec99a5f4085e (Vminibuffer_prompt_properties): New variable.
Miles Bader <miles@gnu.org>
parents: 33088
diff changeset
99
22010
547e4c0a42c0 (Qbuffer_name_history): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 21854
diff changeset
100 Lisp_Object Qminibuffer_history, Qbuffer_name_history;
864
fe5f6b7c9727 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 765
diff changeset
101
4641
9b8e20b21a66 (Qread_file_name_internal): New var.
Richard M. Stallman <rms@gnu.org>
parents: 4550
diff changeset
102 Lisp_Object Qread_file_name_internal;
9b8e20b21a66 (Qread_file_name_internal): New var.
Richard M. Stallman <rms@gnu.org>
parents: 4550
diff changeset
103
6742
ef62a96ce830 (Vminibuffer_exit_hook): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 6720
diff changeset
104 /* Normal hooks for entry to and exit from minibuffer. */
4550
f189820e7ea7 (Qminibuffer_setup_hook, Vminibuffer_setup_hook): New vars.
Richard M. Stallman <rms@gnu.org>
parents: 4102
diff changeset
105
f189820e7ea7 (Qminibuffer_setup_hook, Vminibuffer_setup_hook): New vars.
Richard M. Stallman <rms@gnu.org>
parents: 4102
diff changeset
106 Lisp_Object Qminibuffer_setup_hook, Vminibuffer_setup_hook;
6742
ef62a96ce830 (Vminibuffer_exit_hook): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 6720
diff changeset
107 Lisp_Object Qminibuffer_exit_hook, Vminibuffer_exit_hook;
4550
f189820e7ea7 (Qminibuffer_setup_hook, Vminibuffer_setup_hook): New vars.
Richard M. Stallman <rms@gnu.org>
parents: 4102
diff changeset
108
20468
2fbad61cd5d0 (Vread_buffer_function): New var.
Karl Heuer <kwzh@gnu.org>
parents: 20302
diff changeset
109 /* Function to call to read a buffer name. */
45620
1ae71892eb5f (read_minibuf): Cast `current_column' return value to int.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 45408
diff changeset
110 Lisp_Object Vread_buffer_function;
20468
2fbad61cd5d0 (Vread_buffer_function): New var.
Karl Heuer <kwzh@gnu.org>
parents: 20302
diff changeset
111
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
112 /* Nonzero means completion ignores case. */
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
113
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
114 int completion_ignore_case;
79108
f197bd049c23 (Qcompletion_ignore_case): New Lisp_Object.
Glenn Morris <rgm@gnu.org>
parents: 78260
diff changeset
115 Lisp_Object Qcompletion_ignore_case;
97121
dd58348427b8 (read_buffer_completion_ignore_case): New var.
Chong Yidong <cyd@stupidchicken.com>
parents: 95781
diff changeset
116 int read_buffer_completion_ignore_case;
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
117
6589
764913e8463c (Vcompletion_regexp_list): New var.
Richard M. Stallman <rms@gnu.org>
parents: 6544
diff changeset
118 /* List of regexps that should restrict possible completions. */
764913e8463c (Vcompletion_regexp_list): New var.
Richard M. Stallman <rms@gnu.org>
parents: 6544
diff changeset
119
764913e8463c (Vcompletion_regexp_list): New var.
Richard M. Stallman <rms@gnu.org>
parents: 6544
diff changeset
120 Lisp_Object Vcompletion_regexp_list;
764913e8463c (Vcompletion_regexp_list): New var.
Richard M. Stallman <rms@gnu.org>
parents: 6544
diff changeset
121
5238
63932e111cc5 (minibuffer_auto_raise): Really define it.
Richard M. Stallman <rms@gnu.org>
parents: 5069
diff changeset
122 /* Nonzero means raise the minibuffer frame when the minibuffer
63932e111cc5 (minibuffer_auto_raise): Really define it.
Richard M. Stallman <rms@gnu.org>
parents: 5069
diff changeset
123 is entered. */
63932e111cc5 (minibuffer_auto_raise): Really define it.
Richard M. Stallman <rms@gnu.org>
parents: 5069
diff changeset
124
63932e111cc5 (minibuffer_auto_raise): Really define it.
Richard M. Stallman <rms@gnu.org>
parents: 5069
diff changeset
125 int minibuffer_auto_raise;
63932e111cc5 (minibuffer_auto_raise): Really define it.
Richard M. Stallman <rms@gnu.org>
parents: 5069
diff changeset
126
73450
726825bcce52 (Vread_expression_map): Define here.
Richard M. Stallman <rms@gnu.org>
parents: 73318
diff changeset
127 /* Keymap for reading expressions. */
726825bcce52 (Vread_expression_map): Define here.
Richard M. Stallman <rms@gnu.org>
parents: 73318
diff changeset
128 Lisp_Object Vread_expression_map;
19545
a7f1c1acde93 (Qcurrent_input_method, Qactivate_input_method): New
Kenichi Handa <handa@m17n.org>
parents: 19417
diff changeset
129
75558
f7b5b15084ef (read_minibuf): Save and clear Vminibuffer_completing_file_name.
Richard M. Stallman <rms@gnu.org>
parents: 75475
diff changeset
130 Lisp_Object Vminibuffer_completion_table, Qminibuffer_completion_table;
f7b5b15084ef (read_minibuf): Save and clear Vminibuffer_completing_file_name.
Richard M. Stallman <rms@gnu.org>
parents: 75475
diff changeset
131 Lisp_Object Vminibuffer_completion_predicate, Qminibuffer_completion_predicate;
f7b5b15084ef (read_minibuf): Save and clear Vminibuffer_completing_file_name.
Richard M. Stallman <rms@gnu.org>
parents: 75475
diff changeset
132 Lisp_Object Vminibuffer_completion_confirm, Qminibuffer_completion_confirm;
f7b5b15084ef (read_minibuf): Save and clear Vminibuffer_completing_file_name.
Richard M. Stallman <rms@gnu.org>
parents: 75475
diff changeset
133 Lisp_Object Vminibuffer_completing_file_name;
f7b5b15084ef (read_minibuf): Save and clear Vminibuffer_completing_file_name.
Richard M. Stallman <rms@gnu.org>
parents: 75475
diff changeset
134
23448
84542af4b8d6 (Fdisplay_completion_list): Put on mouse-face properties.
Richard M. Stallman <rms@gnu.org>
parents: 22969
diff changeset
135 Lisp_Object Quser_variable_p;
84542af4b8d6 (Fdisplay_completion_list): Put on mouse-face properties.
Richard M. Stallman <rms@gnu.org>
parents: 22969
diff changeset
136
84542af4b8d6 (Fdisplay_completion_list): Put on mouse-face properties.
Richard M. Stallman <rms@gnu.org>
parents: 22969
diff changeset
137 Lisp_Object Qminibuffer_default;
84542af4b8d6 (Fdisplay_completion_list): Put on mouse-face properties.
Richard M. Stallman <rms@gnu.org>
parents: 22969
diff changeset
138
19545
a7f1c1acde93 (Qcurrent_input_method, Qactivate_input_method): New
Kenichi Handa <handa@m17n.org>
parents: 19417
diff changeset
139 Lisp_Object Qcurrent_input_method, Qactivate_input_method;
a7f1c1acde93 (Qcurrent_input_method, Qactivate_input_method): New
Kenichi Handa <handa@m17n.org>
parents: 19417
diff changeset
140
53827
44d25617bd98 (Fminibufferp, Fread_from_minibuffer)
Luc Teirlinck <teirllm@auburn.edu>
parents: 53364
diff changeset
141 Lisp_Object Qcase_fold_search;
44d25617bd98 (Fminibufferp, Fread_from_minibuffer)
Luc Teirlinck <teirllm@auburn.edu>
parents: 53364
diff changeset
142
73450
726825bcce52 (Vread_expression_map): Define here.
Richard M. Stallman <rms@gnu.org>
parents: 73318
diff changeset
143 Lisp_Object Qread_expression_history;
726825bcce52 (Vread_expression_map): Define here.
Richard M. Stallman <rms@gnu.org>
parents: 73318
diff changeset
144
726825bcce52 (Vread_expression_map): Define here.
Richard M. Stallman <rms@gnu.org>
parents: 73318
diff changeset
145 extern Lisp_Object Voverriding_local_map;
726825bcce52 (Vread_expression_map): Define here.
Richard M. Stallman <rms@gnu.org>
parents: 73318
diff changeset
146
23448
84542af4b8d6 (Fdisplay_completion_list): Put on mouse-face properties.
Richard M. Stallman <rms@gnu.org>
parents: 22969
diff changeset
147 extern Lisp_Object Qmouse_face;
25014
1c522baf1a3c (read_minibuf): Reset echo message strings to nil.
Gerd Moellmann <gerd@gnu.org>
parents: 24918
diff changeset
148
26059
2a7f35e0072b (Fminibuffer_complete_and_exit): Supply value for new
Gerd Moellmann <gerd@gnu.org>
parents: 25836
diff changeset
149 extern Lisp_Object Qfield;
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
150
13397
aac6ac5b87fd (choose_minibuf_frame): Moved here from frame.c.
Karl Heuer <kwzh@gnu.org>
parents: 13345
diff changeset
151 /* Put minibuf on currently selected frame's minibuffer.
aac6ac5b87fd (choose_minibuf_frame): Moved here from frame.c.
Karl Heuer <kwzh@gnu.org>
parents: 13345
diff changeset
152 We do this whenever the user starts a new minibuffer
aac6ac5b87fd (choose_minibuf_frame): Moved here from frame.c.
Karl Heuer <kwzh@gnu.org>
parents: 13345
diff changeset
153 or when a minibuffer exits. */
aac6ac5b87fd (choose_minibuf_frame): Moved here from frame.c.
Karl Heuer <kwzh@gnu.org>
parents: 13345
diff changeset
154
aac6ac5b87fd (choose_minibuf_frame): Moved here from frame.c.
Karl Heuer <kwzh@gnu.org>
parents: 13345
diff changeset
155 void
aac6ac5b87fd (choose_minibuf_frame): Moved here from frame.c.
Karl Heuer <kwzh@gnu.org>
parents: 13345
diff changeset
156 choose_minibuf_frame ()
aac6ac5b87fd (choose_minibuf_frame): Moved here from frame.c.
Karl Heuer <kwzh@gnu.org>
parents: 13345
diff changeset
157 {
25673
b8bc6e792b2f (choose_minibuf_frame): Don't try to set the
Gerd Moellmann <gerd@gnu.org>
parents: 25658
diff changeset
158 if (FRAMEP (selected_frame)
b8bc6e792b2f (choose_minibuf_frame): Don't try to set the
Gerd Moellmann <gerd@gnu.org>
parents: 25658
diff changeset
159 && FRAME_LIVE_P (XFRAME (selected_frame))
b8bc6e792b2f (choose_minibuf_frame): Don't try to set the
Gerd Moellmann <gerd@gnu.org>
parents: 25658
diff changeset
160 && !EQ (minibuf_window, XFRAME (selected_frame)->minibuffer_window))
13397
aac6ac5b87fd (choose_minibuf_frame): Moved here from frame.c.
Karl Heuer <kwzh@gnu.org>
parents: 13345
diff changeset
161 {
25673
b8bc6e792b2f (choose_minibuf_frame): Don't try to set the
Gerd Moellmann <gerd@gnu.org>
parents: 25658
diff changeset
162 struct frame *sf = XFRAME (selected_frame);
b8bc6e792b2f (choose_minibuf_frame): Don't try to set the
Gerd Moellmann <gerd@gnu.org>
parents: 25658
diff changeset
163 Lisp_Object buffer;
45620
1ae71892eb5f (read_minibuf): Cast `current_column' return value to int.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 45408
diff changeset
164
13397
aac6ac5b87fd (choose_minibuf_frame): Moved here from frame.c.
Karl Heuer <kwzh@gnu.org>
parents: 13345
diff changeset
165 /* I don't think that any frames may validly have a null minibuffer
aac6ac5b87fd (choose_minibuf_frame): Moved here from frame.c.
Karl Heuer <kwzh@gnu.org>
parents: 13345
diff changeset
166 window anymore. */
25673
b8bc6e792b2f (choose_minibuf_frame): Don't try to set the
Gerd Moellmann <gerd@gnu.org>
parents: 25658
diff changeset
167 if (NILP (sf->minibuffer_window))
13397
aac6ac5b87fd (choose_minibuf_frame): Moved here from frame.c.
Karl Heuer <kwzh@gnu.org>
parents: 13345
diff changeset
168 abort ();
aac6ac5b87fd (choose_minibuf_frame): Moved here from frame.c.
Karl Heuer <kwzh@gnu.org>
parents: 13345
diff changeset
169
25673
b8bc6e792b2f (choose_minibuf_frame): Don't try to set the
Gerd Moellmann <gerd@gnu.org>
parents: 25658
diff changeset
170 /* Under X, we come here with minibuf_window being the
b8bc6e792b2f (choose_minibuf_frame): Don't try to set the
Gerd Moellmann <gerd@gnu.org>
parents: 25658
diff changeset
171 minibuffer window of the unused termcap window created in
b8bc6e792b2f (choose_minibuf_frame): Don't try to set the
Gerd Moellmann <gerd@gnu.org>
parents: 25658
diff changeset
172 init_window_once. That window doesn't have a buffer. */
b8bc6e792b2f (choose_minibuf_frame): Don't try to set the
Gerd Moellmann <gerd@gnu.org>
parents: 25658
diff changeset
173 buffer = XWINDOW (minibuf_window)->buffer;
b8bc6e792b2f (choose_minibuf_frame): Don't try to set the
Gerd Moellmann <gerd@gnu.org>
parents: 25658
diff changeset
174 if (BUFFERP (buffer))
51200
be76b5735f96 Update Fset_window_buffer usage.
Kim F. Storm <storm@cua.dk>
parents: 51048
diff changeset
175 Fset_window_buffer (sf->minibuffer_window, buffer, Qnil);
25673
b8bc6e792b2f (choose_minibuf_frame): Don't try to set the
Gerd Moellmann <gerd@gnu.org>
parents: 25658
diff changeset
176 minibuf_window = sf->minibuffer_window;
13397
aac6ac5b87fd (choose_minibuf_frame): Moved here from frame.c.
Karl Heuer <kwzh@gnu.org>
parents: 13345
diff changeset
177 }
16475
2602c284eb11 (read_minibuf_unwind): Don't restore minibuf_window;
Richard M. Stallman <rms@gnu.org>
parents: 16265
diff changeset
178
2602c284eb11 (read_minibuf_unwind): Don't restore minibuf_window;
Richard M. Stallman <rms@gnu.org>
parents: 16265
diff changeset
179 /* Make sure no other frame has a minibuffer as its selected window,
2602c284eb11 (read_minibuf_unwind): Don't restore minibuf_window;
Richard M. Stallman <rms@gnu.org>
parents: 16265
diff changeset
180 because the text would not be displayed in it, and that would be
16564
83d580ba04cf (choose_minibuf_frame): Don't change selected_frame's
Richard M. Stallman <rms@gnu.org>
parents: 16475
diff changeset
181 confusing. Only allow the selected frame to do this,
83d580ba04cf (choose_minibuf_frame): Don't change selected_frame's
Richard M. Stallman <rms@gnu.org>
parents: 16475
diff changeset
182 and that only if the minibuffer is active. */
16475
2602c284eb11 (read_minibuf_unwind): Don't restore minibuf_window;
Richard M. Stallman <rms@gnu.org>
parents: 16265
diff changeset
183 {
2602c284eb11 (read_minibuf_unwind): Don't restore minibuf_window;
Richard M. Stallman <rms@gnu.org>
parents: 16265
diff changeset
184 Lisp_Object tail, frame;
2602c284eb11 (read_minibuf_unwind): Don't restore minibuf_window;
Richard M. Stallman <rms@gnu.org>
parents: 16265
diff changeset
185
2602c284eb11 (read_minibuf_unwind): Don't restore minibuf_window;
Richard M. Stallman <rms@gnu.org>
parents: 16265
diff changeset
186 FOR_EACH_FRAME (tail, frame)
16564
83d580ba04cf (choose_minibuf_frame): Don't change selected_frame's
Richard M. Stallman <rms@gnu.org>
parents: 16475
diff changeset
187 if (MINI_WINDOW_P (XWINDOW (FRAME_SELECTED_WINDOW (XFRAME (frame))))
25673
b8bc6e792b2f (choose_minibuf_frame): Don't try to set the
Gerd Moellmann <gerd@gnu.org>
parents: 25658
diff changeset
188 && !(EQ (frame, selected_frame)
16564
83d580ba04cf (choose_minibuf_frame): Don't change selected_frame's
Richard M. Stallman <rms@gnu.org>
parents: 16475
diff changeset
189 && minibuf_level > 0))
99323
2b78c770209e (choose_minibuf_frame): Handle NORECORD in call of
Martin Rudalics <rudalics@gmx.at>
parents: 97126
diff changeset
190 Fset_frame_selected_window (frame, Fframe_first_window (frame), Qnil);
16475
2602c284eb11 (read_minibuf_unwind): Don't restore minibuf_window;
Richard M. Stallman <rms@gnu.org>
parents: 16265
diff changeset
191 }
13397
aac6ac5b87fd (choose_minibuf_frame): Moved here from frame.c.
Karl Heuer <kwzh@gnu.org>
parents: 13345
diff changeset
192 }
14435
4f2ec5d39f00 (Fset_minibuffer_window): New function.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
193
18904
1ff8b0bca025 (choose_minibuf_frame_1): New function.
Richard M. Stallman <rms@gnu.org>
parents: 18862
diff changeset
194 Lisp_Object
1ff8b0bca025 (choose_minibuf_frame_1): New function.
Richard M. Stallman <rms@gnu.org>
parents: 18862
diff changeset
195 choose_minibuf_frame_1 (ignore)
1ff8b0bca025 (choose_minibuf_frame_1): New function.
Richard M. Stallman <rms@gnu.org>
parents: 18862
diff changeset
196 Lisp_Object ignore;
1ff8b0bca025 (choose_minibuf_frame_1): New function.
Richard M. Stallman <rms@gnu.org>
parents: 18862
diff changeset
197 {
1ff8b0bca025 (choose_minibuf_frame_1): New function.
Richard M. Stallman <rms@gnu.org>
parents: 18862
diff changeset
198 choose_minibuf_frame ();
1ff8b0bca025 (choose_minibuf_frame_1): New function.
Richard M. Stallman <rms@gnu.org>
parents: 18862
diff changeset
199 return Qnil;
1ff8b0bca025 (choose_minibuf_frame_1): New function.
Richard M. Stallman <rms@gnu.org>
parents: 18862
diff changeset
200 }
1ff8b0bca025 (choose_minibuf_frame_1): New function.
Richard M. Stallman <rms@gnu.org>
parents: 18862
diff changeset
201
14435
4f2ec5d39f00 (Fset_minibuffer_window): New function.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
202 DEFUN ("set-minibuffer-window", Fset_minibuffer_window,
4f2ec5d39f00 (Fset_minibuffer_window): New function.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
203 Sset_minibuffer_window, 1, 1, 0,
39989
c652433b7f2f Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents: 39973
diff changeset
204 doc: /* Specify which minibuffer window to use for the minibuffer.
53364
d4539e5181a1 (Fset_minibuffer_window): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 53312
diff changeset
205 This affects where the minibuffer is displayed if you put text in it
39989
c652433b7f2f Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents: 39973
diff changeset
206 without invoking the usual minibuffer commands. */)
c652433b7f2f Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents: 39973
diff changeset
207 (window)
14435
4f2ec5d39f00 (Fset_minibuffer_window): New function.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
208 Lisp_Object window;
4f2ec5d39f00 (Fset_minibuffer_window): New function.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
209 {
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40403
diff changeset
210 CHECK_WINDOW (window);
14435
4f2ec5d39f00 (Fset_minibuffer_window): New function.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
211 if (! MINI_WINDOW_P (XWINDOW (window)))
4f2ec5d39f00 (Fset_minibuffer_window): New function.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
212 error ("Window is not a minibuffer window");
4f2ec5d39f00 (Fset_minibuffer_window): New function.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
213
4f2ec5d39f00 (Fset_minibuffer_window): New function.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
214 minibuf_window = window;
4f2ec5d39f00 (Fset_minibuffer_window): New function.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
215
4f2ec5d39f00 (Fset_minibuffer_window): New function.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
216 return window;
4f2ec5d39f00 (Fset_minibuffer_window): New function.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
217 }
4f2ec5d39f00 (Fset_minibuffer_window): New function.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
218
13397
aac6ac5b87fd (choose_minibuf_frame): Moved here from frame.c.
Karl Heuer <kwzh@gnu.org>
parents: 13345
diff changeset
219
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
220 /* Actual minibuffer invocation. */
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
221
20584
24e567feaf18 (test_completion): Pass both kinds of size to oblookup.
Richard M. Stallman <rms@gnu.org>
parents: 20570
diff changeset
222 static Lisp_Object read_minibuf_unwind P_ ((Lisp_Object));
55795
1e94f291a19c (run_exit_minibuf_hook): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53827
diff changeset
223 static Lisp_Object run_exit_minibuf_hook P_ ((Lisp_Object));
20584
24e567feaf18 (test_completion): Pass both kinds of size to oblookup.
Richard M. Stallman <rms@gnu.org>
parents: 20570
diff changeset
224 static Lisp_Object read_minibuf P_ ((Lisp_Object, Lisp_Object,
24e567feaf18 (test_completion): Pass both kinds of size to oblookup.
Richard M. Stallman <rms@gnu.org>
parents: 20570
diff changeset
225 Lisp_Object, Lisp_Object,
24e567feaf18 (test_completion): Pass both kinds of size to oblookup.
Richard M. Stallman <rms@gnu.org>
parents: 20570
diff changeset
226 int, Lisp_Object,
24e567feaf18 (test_completion): Pass both kinds of size to oblookup.
Richard M. Stallman <rms@gnu.org>
parents: 20570
diff changeset
227 Lisp_Object, Lisp_Object,
70930
f3ddca90b6b1 (read_minibuf): Remove arg KEEP_ALL. Callers changed.
Juri Linkov <juri@jurta.org>
parents: 70499
diff changeset
228 int, int));
26320
d3926d907840 (string_to_object): New.
Gerd Moellmann <gerd@gnu.org>
parents: 26164
diff changeset
229 static Lisp_Object read_minibuf_noninteractive P_ ((Lisp_Object, Lisp_Object,
d3926d907840 (string_to_object): New.
Gerd Moellmann <gerd@gnu.org>
parents: 26164
diff changeset
230 Lisp_Object, Lisp_Object,
d3926d907840 (string_to_object): New.
Gerd Moellmann <gerd@gnu.org>
parents: 26164
diff changeset
231 int, Lisp_Object,
d3926d907840 (string_to_object): New.
Gerd Moellmann <gerd@gnu.org>
parents: 26164
diff changeset
232 Lisp_Object, Lisp_Object,
d3926d907840 (string_to_object): New.
Gerd Moellmann <gerd@gnu.org>
parents: 26164
diff changeset
233 int, int));
d3926d907840 (string_to_object): New.
Gerd Moellmann <gerd@gnu.org>
parents: 26164
diff changeset
234 static Lisp_Object string_to_object P_ ((Lisp_Object, Lisp_Object));
d3926d907840 (string_to_object): New.
Gerd Moellmann <gerd@gnu.org>
parents: 26164
diff changeset
235
d3926d907840 (string_to_object): New.
Gerd Moellmann <gerd@gnu.org>
parents: 26164
diff changeset
236
d3926d907840 (string_to_object): New.
Gerd Moellmann <gerd@gnu.org>
parents: 26164
diff changeset
237 /* Read a Lisp object from VAL and return it. If VAL is an empty
d3926d907840 (string_to_object): New.
Gerd Moellmann <gerd@gnu.org>
parents: 26164
diff changeset
238 string, and DEFALT is a string, read from DEFALT instead of VAL. */
d3926d907840 (string_to_object): New.
Gerd Moellmann <gerd@gnu.org>
parents: 26164
diff changeset
239
d3926d907840 (string_to_object): New.
Gerd Moellmann <gerd@gnu.org>
parents: 26164
diff changeset
240 static Lisp_Object
d3926d907840 (string_to_object): New.
Gerd Moellmann <gerd@gnu.org>
parents: 26164
diff changeset
241 string_to_object (val, defalt)
d3926d907840 (string_to_object): New.
Gerd Moellmann <gerd@gnu.org>
parents: 26164
diff changeset
242 Lisp_Object val, defalt;
d3926d907840 (string_to_object): New.
Gerd Moellmann <gerd@gnu.org>
parents: 26164
diff changeset
243 {
d3926d907840 (string_to_object): New.
Gerd Moellmann <gerd@gnu.org>
parents: 26164
diff changeset
244 struct gcpro gcpro1, gcpro2;
d3926d907840 (string_to_object): New.
Gerd Moellmann <gerd@gnu.org>
parents: 26164
diff changeset
245 Lisp_Object expr_and_pos;
d3926d907840 (string_to_object): New.
Gerd Moellmann <gerd@gnu.org>
parents: 26164
diff changeset
246 int pos;
45620
1ae71892eb5f (read_minibuf): Cast `current_column' return value to int.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 45408
diff changeset
247
26320
d3926d907840 (string_to_object): New.
Gerd Moellmann <gerd@gnu.org>
parents: 26164
diff changeset
248 GCPRO2 (val, defalt);
45620
1ae71892eb5f (read_minibuf): Cast `current_column' return value to int.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 45408
diff changeset
249
85516
6260015b7802 Allow minibuffer default to be a list of default values.
Juri Linkov <juri@jurta.org>
parents: 85372
diff changeset
250 if (STRINGP (val) && SCHARS (val) == 0)
6260015b7802 Allow minibuffer default to be a list of default values.
Juri Linkov <juri@jurta.org>
parents: 85372
diff changeset
251 {
6260015b7802 Allow minibuffer default to be a list of default values.
Juri Linkov <juri@jurta.org>
parents: 85372
diff changeset
252 if (STRINGP (defalt))
6260015b7802 Allow minibuffer default to be a list of default values.
Juri Linkov <juri@jurta.org>
parents: 85372
diff changeset
253 val = defalt;
6260015b7802 Allow minibuffer default to be a list of default values.
Juri Linkov <juri@jurta.org>
parents: 85372
diff changeset
254 else if (CONSP (defalt) && STRINGP (XCAR (defalt)))
6260015b7802 Allow minibuffer default to be a list of default values.
Juri Linkov <juri@jurta.org>
parents: 85372
diff changeset
255 val = XCAR (defalt);
6260015b7802 Allow minibuffer default to be a list of default values.
Juri Linkov <juri@jurta.org>
parents: 85372
diff changeset
256 }
45620
1ae71892eb5f (read_minibuf): Cast `current_column' return value to int.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 45408
diff changeset
257
26320
d3926d907840 (string_to_object): New.
Gerd Moellmann <gerd@gnu.org>
parents: 26164
diff changeset
258 expr_and_pos = Fread_from_string (val, Qnil, Qnil);
d3926d907840 (string_to_object): New.
Gerd Moellmann <gerd@gnu.org>
parents: 26164
diff changeset
259 pos = XINT (Fcdr (expr_and_pos));
46370
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 46293
diff changeset
260 if (pos != SCHARS (val))
26320
d3926d907840 (string_to_object): New.
Gerd Moellmann <gerd@gnu.org>
parents: 26164
diff changeset
261 {
d3926d907840 (string_to_object): New.
Gerd Moellmann <gerd@gnu.org>
parents: 26164
diff changeset
262 /* Ignore trailing whitespace; any other trailing junk
d3926d907840 (string_to_object): New.
Gerd Moellmann <gerd@gnu.org>
parents: 26164
diff changeset
263 is an error. */
d3926d907840 (string_to_object): New.
Gerd Moellmann <gerd@gnu.org>
parents: 26164
diff changeset
264 int i;
d3926d907840 (string_to_object): New.
Gerd Moellmann <gerd@gnu.org>
parents: 26164
diff changeset
265 pos = string_char_to_byte (val, pos);
46370
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 46293
diff changeset
266 for (i = pos; i < SBYTES (val); i++)
26320
d3926d907840 (string_to_object): New.
Gerd Moellmann <gerd@gnu.org>
parents: 26164
diff changeset
267 {
46370
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 46293
diff changeset
268 int c = SREF (val, i);
26320
d3926d907840 (string_to_object): New.
Gerd Moellmann <gerd@gnu.org>
parents: 26164
diff changeset
269 if (c != ' ' && c != '\t' && c != '\n')
d3926d907840 (string_to_object): New.
Gerd Moellmann <gerd@gnu.org>
parents: 26164
diff changeset
270 error ("Trailing garbage following expression");
d3926d907840 (string_to_object): New.
Gerd Moellmann <gerd@gnu.org>
parents: 26164
diff changeset
271 }
d3926d907840 (string_to_object): New.
Gerd Moellmann <gerd@gnu.org>
parents: 26164
diff changeset
272 }
45620
1ae71892eb5f (read_minibuf): Cast `current_column' return value to int.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 45408
diff changeset
273
26320
d3926d907840 (string_to_object): New.
Gerd Moellmann <gerd@gnu.org>
parents: 26164
diff changeset
274 val = Fcar (expr_and_pos);
d3926d907840 (string_to_object): New.
Gerd Moellmann <gerd@gnu.org>
parents: 26164
diff changeset
275 RETURN_UNGCPRO (val);
d3926d907840 (string_to_object): New.
Gerd Moellmann <gerd@gnu.org>
parents: 26164
diff changeset
276 }
d3926d907840 (string_to_object): New.
Gerd Moellmann <gerd@gnu.org>
parents: 26164
diff changeset
277
d3926d907840 (string_to_object): New.
Gerd Moellmann <gerd@gnu.org>
parents: 26164
diff changeset
278
d3926d907840 (string_to_object): New.
Gerd Moellmann <gerd@gnu.org>
parents: 26164
diff changeset
279 /* Like read_minibuf but reading from stdin. This function is called
d3926d907840 (string_to_object): New.
Gerd Moellmann <gerd@gnu.org>
parents: 26164
diff changeset
280 from read_minibuf to do the job if noninteractive. */
d3926d907840 (string_to_object): New.
Gerd Moellmann <gerd@gnu.org>
parents: 26164
diff changeset
281
d3926d907840 (string_to_object): New.
Gerd Moellmann <gerd@gnu.org>
parents: 26164
diff changeset
282 static Lisp_Object
d3926d907840 (string_to_object): New.
Gerd Moellmann <gerd@gnu.org>
parents: 26164
diff changeset
283 read_minibuf_noninteractive (map, initial, prompt, backup_n, expflag,
d3926d907840 (string_to_object): New.
Gerd Moellmann <gerd@gnu.org>
parents: 26164
diff changeset
284 histvar, histpos, defalt, allow_props,
d3926d907840 (string_to_object): New.
Gerd Moellmann <gerd@gnu.org>
parents: 26164
diff changeset
285 inherit_input_method)
d3926d907840 (string_to_object): New.
Gerd Moellmann <gerd@gnu.org>
parents: 26164
diff changeset
286 Lisp_Object map;
d3926d907840 (string_to_object): New.
Gerd Moellmann <gerd@gnu.org>
parents: 26164
diff changeset
287 Lisp_Object initial;
d3926d907840 (string_to_object): New.
Gerd Moellmann <gerd@gnu.org>
parents: 26164
diff changeset
288 Lisp_Object prompt;
d3926d907840 (string_to_object): New.
Gerd Moellmann <gerd@gnu.org>
parents: 26164
diff changeset
289 Lisp_Object backup_n;
d3926d907840 (string_to_object): New.
Gerd Moellmann <gerd@gnu.org>
parents: 26164
diff changeset
290 int expflag;
d3926d907840 (string_to_object): New.
Gerd Moellmann <gerd@gnu.org>
parents: 26164
diff changeset
291 Lisp_Object histvar;
d3926d907840 (string_to_object): New.
Gerd Moellmann <gerd@gnu.org>
parents: 26164
diff changeset
292 Lisp_Object histpos;
d3926d907840 (string_to_object): New.
Gerd Moellmann <gerd@gnu.org>
parents: 26164
diff changeset
293 Lisp_Object defalt;
d3926d907840 (string_to_object): New.
Gerd Moellmann <gerd@gnu.org>
parents: 26164
diff changeset
294 int allow_props;
d3926d907840 (string_to_object): New.
Gerd Moellmann <gerd@gnu.org>
parents: 26164
diff changeset
295 int inherit_input_method;
d3926d907840 (string_to_object): New.
Gerd Moellmann <gerd@gnu.org>
parents: 26164
diff changeset
296 {
d3926d907840 (string_to_object): New.
Gerd Moellmann <gerd@gnu.org>
parents: 26164
diff changeset
297 int size, len;
d3926d907840 (string_to_object): New.
Gerd Moellmann <gerd@gnu.org>
parents: 26164
diff changeset
298 char *line, *s;
d3926d907840 (string_to_object): New.
Gerd Moellmann <gerd@gnu.org>
parents: 26164
diff changeset
299 Lisp_Object val;
d3926d907840 (string_to_object): New.
Gerd Moellmann <gerd@gnu.org>
parents: 26164
diff changeset
300
46370
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 46293
diff changeset
301 fprintf (stdout, "%s", SDATA (prompt));
26320
d3926d907840 (string_to_object): New.
Gerd Moellmann <gerd@gnu.org>
parents: 26164
diff changeset
302 fflush (stdout);
d3926d907840 (string_to_object): New.
Gerd Moellmann <gerd@gnu.org>
parents: 26164
diff changeset
303
31829
43566b0aec59 Avoid some more compiler warnings.
Gerd Moellmann <gerd@gnu.org>
parents: 31140
diff changeset
304 val = Qnil;
26320
d3926d907840 (string_to_object): New.
Gerd Moellmann <gerd@gnu.org>
parents: 26164
diff changeset
305 size = 100;
d3926d907840 (string_to_object): New.
Gerd Moellmann <gerd@gnu.org>
parents: 26164
diff changeset
306 len = 0;
d3926d907840 (string_to_object): New.
Gerd Moellmann <gerd@gnu.org>
parents: 26164
diff changeset
307 line = (char *) xmalloc (size * sizeof *line);
d3926d907840 (string_to_object): New.
Gerd Moellmann <gerd@gnu.org>
parents: 26164
diff changeset
308 while ((s = fgets (line + len, size - len, stdin)) != NULL
d3926d907840 (string_to_object): New.
Gerd Moellmann <gerd@gnu.org>
parents: 26164
diff changeset
309 && (len = strlen (line),
d3926d907840 (string_to_object): New.
Gerd Moellmann <gerd@gnu.org>
parents: 26164
diff changeset
310 len == size - 1 && line[len - 1] != '\n'))
d3926d907840 (string_to_object): New.
Gerd Moellmann <gerd@gnu.org>
parents: 26164
diff changeset
311 {
d3926d907840 (string_to_object): New.
Gerd Moellmann <gerd@gnu.org>
parents: 26164
diff changeset
312 size *= 2;
d3926d907840 (string_to_object): New.
Gerd Moellmann <gerd@gnu.org>
parents: 26164
diff changeset
313 line = (char *) xrealloc (line, size);
d3926d907840 (string_to_object): New.
Gerd Moellmann <gerd@gnu.org>
parents: 26164
diff changeset
314 }
d3926d907840 (string_to_object): New.
Gerd Moellmann <gerd@gnu.org>
parents: 26164
diff changeset
315
d3926d907840 (string_to_object): New.
Gerd Moellmann <gerd@gnu.org>
parents: 26164
diff changeset
316 if (s)
d3926d907840 (string_to_object): New.
Gerd Moellmann <gerd@gnu.org>
parents: 26164
diff changeset
317 {
d3926d907840 (string_to_object): New.
Gerd Moellmann <gerd@gnu.org>
parents: 26164
diff changeset
318 len = strlen (line);
45620
1ae71892eb5f (read_minibuf): Cast `current_column' return value to int.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 45408
diff changeset
319
26320
d3926d907840 (string_to_object): New.
Gerd Moellmann <gerd@gnu.org>
parents: 26164
diff changeset
320 if (len > 0 && line[len - 1] == '\n')
d3926d907840 (string_to_object): New.
Gerd Moellmann <gerd@gnu.org>
parents: 26164
diff changeset
321 line[--len] = '\0';
45620
1ae71892eb5f (read_minibuf): Cast `current_column' return value to int.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 45408
diff changeset
322
26320
d3926d907840 (string_to_object): New.
Gerd Moellmann <gerd@gnu.org>
parents: 26164
diff changeset
323 val = build_string (line);
d3926d907840 (string_to_object): New.
Gerd Moellmann <gerd@gnu.org>
parents: 26164
diff changeset
324 xfree (line);
d3926d907840 (string_to_object): New.
Gerd Moellmann <gerd@gnu.org>
parents: 26164
diff changeset
325 }
d3926d907840 (string_to_object): New.
Gerd Moellmann <gerd@gnu.org>
parents: 26164
diff changeset
326 else
d3926d907840 (string_to_object): New.
Gerd Moellmann <gerd@gnu.org>
parents: 26164
diff changeset
327 {
d3926d907840 (string_to_object): New.
Gerd Moellmann <gerd@gnu.org>
parents: 26164
diff changeset
328 xfree (line);
d3926d907840 (string_to_object): New.
Gerd Moellmann <gerd@gnu.org>
parents: 26164
diff changeset
329 error ("Error reading from stdin");
d3926d907840 (string_to_object): New.
Gerd Moellmann <gerd@gnu.org>
parents: 26164
diff changeset
330 }
45620
1ae71892eb5f (read_minibuf): Cast `current_column' return value to int.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 45408
diff changeset
331
26320
d3926d907840 (string_to_object): New.
Gerd Moellmann <gerd@gnu.org>
parents: 26164
diff changeset
332 /* If Lisp form desired instead of string, parse it. */
d3926d907840 (string_to_object): New.
Gerd Moellmann <gerd@gnu.org>
parents: 26164
diff changeset
333 if (expflag)
85516
6260015b7802 Allow minibuffer default to be a list of default values.
Juri Linkov <juri@jurta.org>
parents: 85372
diff changeset
334 val = string_to_object (val, CONSP (defalt) ? XCAR (defalt) : defalt);
45620
1ae71892eb5f (read_minibuf): Cast `current_column' return value to int.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 45408
diff changeset
335
26320
d3926d907840 (string_to_object): New.
Gerd Moellmann <gerd@gnu.org>
parents: 26164
diff changeset
336 return val;
d3926d907840 (string_to_object): New.
Gerd Moellmann <gerd@gnu.org>
parents: 26164
diff changeset
337 }
46019
8f82bf8a959e (do_completion, Fminibuffer_complete_word)
Richard M. Stallman <rms@gnu.org>
parents: 45620
diff changeset
338
46877
2ff0df63c873 (Fminibufferp): New function.
Richard M. Stallman <rms@gnu.org>
parents: 46473
diff changeset
339 DEFUN ("minibufferp", Fminibufferp,
47620
d9332e0c9cb3 (Fminibufferp): Add an optional `buffer' argument.
John Paul Wallington <jpw@pobox.com>
parents: 46877
diff changeset
340 Sminibufferp, 0, 1, 0,
d9332e0c9cb3 (Fminibufferp): Add an optional `buffer' argument.
John Paul Wallington <jpw@pobox.com>
parents: 46877
diff changeset
341 doc: /* Return t if BUFFER is a minibuffer.
53827
44d25617bd98 (Fminibufferp, Fread_from_minibuffer)
Luc Teirlinck <teirllm@auburn.edu>
parents: 53364
diff changeset
342 No argument or nil as argument means use current buffer as BUFFER.
44d25617bd98 (Fminibufferp, Fread_from_minibuffer)
Luc Teirlinck <teirllm@auburn.edu>
parents: 53364
diff changeset
343 BUFFER can be a buffer or a buffer name. */)
47620
d9332e0c9cb3 (Fminibufferp): Add an optional `buffer' argument.
John Paul Wallington <jpw@pobox.com>
parents: 46877
diff changeset
344 (buffer)
d9332e0c9cb3 (Fminibufferp): Add an optional `buffer' argument.
John Paul Wallington <jpw@pobox.com>
parents: 46877
diff changeset
345 Lisp_Object buffer;
46877
2ff0df63c873 (Fminibufferp): New function.
Richard M. Stallman <rms@gnu.org>
parents: 46473
diff changeset
346 {
2ff0df63c873 (Fminibufferp): New function.
Richard M. Stallman <rms@gnu.org>
parents: 46473
diff changeset
347 Lisp_Object tem;
2ff0df63c873 (Fminibufferp): New function.
Richard M. Stallman <rms@gnu.org>
parents: 46473
diff changeset
348
47620
d9332e0c9cb3 (Fminibufferp): Add an optional `buffer' argument.
John Paul Wallington <jpw@pobox.com>
parents: 46877
diff changeset
349 if (NILP (buffer))
d9332e0c9cb3 (Fminibufferp): Add an optional `buffer' argument.
John Paul Wallington <jpw@pobox.com>
parents: 46877
diff changeset
350 buffer = Fcurrent_buffer ();
d9332e0c9cb3 (Fminibufferp): Add an optional `buffer' argument.
John Paul Wallington <jpw@pobox.com>
parents: 46877
diff changeset
351 else if (STRINGP (buffer))
d9332e0c9cb3 (Fminibufferp): Add an optional `buffer' argument.
John Paul Wallington <jpw@pobox.com>
parents: 46877
diff changeset
352 buffer = Fget_buffer (buffer);
d9332e0c9cb3 (Fminibufferp): Add an optional `buffer' argument.
John Paul Wallington <jpw@pobox.com>
parents: 46877
diff changeset
353 else
d9332e0c9cb3 (Fminibufferp): Add an optional `buffer' argument.
John Paul Wallington <jpw@pobox.com>
parents: 46877
diff changeset
354 CHECK_BUFFER (buffer);
d9332e0c9cb3 (Fminibufferp): Add an optional `buffer' argument.
John Paul Wallington <jpw@pobox.com>
parents: 46877
diff changeset
355
d9332e0c9cb3 (Fminibufferp): Add an optional `buffer' argument.
John Paul Wallington <jpw@pobox.com>
parents: 46877
diff changeset
356 tem = Fmemq (buffer, Vminibuffer_list);
46877
2ff0df63c873 (Fminibufferp): New function.
Richard M. Stallman <rms@gnu.org>
parents: 46473
diff changeset
357 return ! NILP (tem) ? Qt : Qnil;
2ff0df63c873 (Fminibufferp): New function.
Richard M. Stallman <rms@gnu.org>
parents: 46473
diff changeset
358 }
2ff0df63c873 (Fminibufferp): New function.
Richard M. Stallman <rms@gnu.org>
parents: 46473
diff changeset
359
39595
d184cf4318ee (Fminibuffer_prompt_end, Fminibuffer_contents)
Miles Bader <miles@gnu.org>
parents: 39581
diff changeset
360 DEFUN ("minibuffer-prompt-end", Fminibuffer_prompt_end,
d184cf4318ee (Fminibuffer_prompt_end, Fminibuffer_contents)
Miles Bader <miles@gnu.org>
parents: 39581
diff changeset
361 Sminibuffer_prompt_end, 0, 0, 0,
39989
c652433b7f2f Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents: 39973
diff changeset
362 doc: /* Return the buffer position of the end of the minibuffer prompt.
64575
ea5296a45331 (Fminibuffer_prompt_end, Feval_minibuffer): Fix typos in docstrings.
Juanma Barranquero <lekktu@gmail.com>
parents: 64467
diff changeset
363 Return (point-min) if current buffer is not a minibuffer. */)
39989
c652433b7f2f Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents: 39973
diff changeset
364 ()
39595
d184cf4318ee (Fminibuffer_prompt_end, Fminibuffer_contents)
Miles Bader <miles@gnu.org>
parents: 39581
diff changeset
365 {
d184cf4318ee (Fminibuffer_prompt_end, Fminibuffer_contents)
Miles Bader <miles@gnu.org>
parents: 39581
diff changeset
366 /* This function is written to be most efficient when there's a prompt. */
46877
2ff0df63c873 (Fminibufferp): New function.
Richard M. Stallman <rms@gnu.org>
parents: 46473
diff changeset
367 Lisp_Object beg, end, tem;
2ff0df63c873 (Fminibufferp): New function.
Richard M. Stallman <rms@gnu.org>
parents: 46473
diff changeset
368 beg = make_number (BEGV);
2ff0df63c873 (Fminibufferp): New function.
Richard M. Stallman <rms@gnu.org>
parents: 46473
diff changeset
369
2ff0df63c873 (Fminibufferp): New function.
Richard M. Stallman <rms@gnu.org>
parents: 46473
diff changeset
370 tem = Fmemq (Fcurrent_buffer (), Vminibuffer_list);
2ff0df63c873 (Fminibufferp): New function.
Richard M. Stallman <rms@gnu.org>
parents: 46473
diff changeset
371 if (NILP (tem))
2ff0df63c873 (Fminibufferp): New function.
Richard M. Stallman <rms@gnu.org>
parents: 46473
diff changeset
372 return beg;
2ff0df63c873 (Fminibufferp): New function.
Richard M. Stallman <rms@gnu.org>
parents: 46473
diff changeset
373
2ff0df63c873 (Fminibufferp): New function.
Richard M. Stallman <rms@gnu.org>
parents: 46473
diff changeset
374 end = Ffield_end (beg, Qnil, Qnil);
45620
1ae71892eb5f (read_minibuf): Cast `current_column' return value to int.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 45408
diff changeset
375
39595
d184cf4318ee (Fminibuffer_prompt_end, Fminibuffer_contents)
Miles Bader <miles@gnu.org>
parents: 39581
diff changeset
376 if (XINT (end) == ZV && NILP (Fget_char_property (beg, Qfield, Qnil)))
39646
0630a03f4079 * minibuf.c (Fminibuffer_prompt_end): Don't apply make_number to a Lisp_Object.
Ken Raeburn <raeburn@raeburn.org>
parents: 39595
diff changeset
377 return beg;
39595
d184cf4318ee (Fminibuffer_prompt_end, Fminibuffer_contents)
Miles Bader <miles@gnu.org>
parents: 39581
diff changeset
378 else
d184cf4318ee (Fminibuffer_prompt_end, Fminibuffer_contents)
Miles Bader <miles@gnu.org>
parents: 39581
diff changeset
379 return end;
d184cf4318ee (Fminibuffer_prompt_end, Fminibuffer_contents)
Miles Bader <miles@gnu.org>
parents: 39581
diff changeset
380 }
d184cf4318ee (Fminibuffer_prompt_end, Fminibuffer_contents)
Miles Bader <miles@gnu.org>
parents: 39581
diff changeset
381
d184cf4318ee (Fminibuffer_prompt_end, Fminibuffer_contents)
Miles Bader <miles@gnu.org>
parents: 39581
diff changeset
382 DEFUN ("minibuffer-contents", Fminibuffer_contents,
d184cf4318ee (Fminibuffer_prompt_end, Fminibuffer_contents)
Miles Bader <miles@gnu.org>
parents: 39581
diff changeset
383 Sminibuffer_contents, 0, 0, 0,
42881
aa810c4a602b (Fminibuffer_contents)
Pavel Janík <Pavel@Janik.cz>
parents: 42168
diff changeset
384 doc: /* Return the user input in a minibuffer as a string.
77326
58d40e42dfe4 (Fminibuffer_contents, Fminibuffer_contents_no_properties,
Juanma Barranquero <lekktu@gmail.com>
parents: 76384
diff changeset
385 If the current buffer is not a minibuffer, return its entire contents. */)
39989
c652433b7f2f Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents: 39973
diff changeset
386 ()
39595
d184cf4318ee (Fminibuffer_prompt_end, Fminibuffer_contents)
Miles Bader <miles@gnu.org>
parents: 39581
diff changeset
387 {
d184cf4318ee (Fminibuffer_prompt_end, Fminibuffer_contents)
Miles Bader <miles@gnu.org>
parents: 39581
diff changeset
388 int prompt_end = XINT (Fminibuffer_prompt_end ());
d184cf4318ee (Fminibuffer_prompt_end, Fminibuffer_contents)
Miles Bader <miles@gnu.org>
parents: 39581
diff changeset
389 return make_buffer_string (prompt_end, ZV, 1);
d184cf4318ee (Fminibuffer_prompt_end, Fminibuffer_contents)
Miles Bader <miles@gnu.org>
parents: 39581
diff changeset
390 }
d184cf4318ee (Fminibuffer_prompt_end, Fminibuffer_contents)
Miles Bader <miles@gnu.org>
parents: 39581
diff changeset
391
d184cf4318ee (Fminibuffer_prompt_end, Fminibuffer_contents)
Miles Bader <miles@gnu.org>
parents: 39581
diff changeset
392 DEFUN ("minibuffer-contents-no-properties", Fminibuffer_contents_no_properties,
d184cf4318ee (Fminibuffer_prompt_end, Fminibuffer_contents)
Miles Bader <miles@gnu.org>
parents: 39581
diff changeset
393 Sminibuffer_contents_no_properties, 0, 0, 0,
42881
aa810c4a602b (Fminibuffer_contents)
Pavel Janík <Pavel@Janik.cz>
parents: 42168
diff changeset
394 doc: /* Return the user input in a minibuffer as a string, without text-properties.
77326
58d40e42dfe4 (Fminibuffer_contents, Fminibuffer_contents_no_properties,
Juanma Barranquero <lekktu@gmail.com>
parents: 76384
diff changeset
395 If the current buffer is not a minibuffer, return its entire contents. */)
39989
c652433b7f2f Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents: 39973
diff changeset
396 ()
39595
d184cf4318ee (Fminibuffer_prompt_end, Fminibuffer_contents)
Miles Bader <miles@gnu.org>
parents: 39581
diff changeset
397 {
d184cf4318ee (Fminibuffer_prompt_end, Fminibuffer_contents)
Miles Bader <miles@gnu.org>
parents: 39581
diff changeset
398 int prompt_end = XINT (Fminibuffer_prompt_end ());
d184cf4318ee (Fminibuffer_prompt_end, Fminibuffer_contents)
Miles Bader <miles@gnu.org>
parents: 39581
diff changeset
399 return make_buffer_string (prompt_end, ZV, 0);
d184cf4318ee (Fminibuffer_prompt_end, Fminibuffer_contents)
Miles Bader <miles@gnu.org>
parents: 39581
diff changeset
400 }
d184cf4318ee (Fminibuffer_prompt_end, Fminibuffer_contents)
Miles Bader <miles@gnu.org>
parents: 39581
diff changeset
401
67618
40cdd21343f8 (Fminibuffer_completion_contents): New Lisp function
Juri Linkov <juri@jurta.org>
parents: 67498
diff changeset
402 DEFUN ("minibuffer-completion-contents", Fminibuffer_completion_contents,
40cdd21343f8 (Fminibuffer_completion_contents): New Lisp function
Juri Linkov <juri@jurta.org>
parents: 67498
diff changeset
403 Sminibuffer_completion_contents, 0, 0, 0,
40cdd21343f8 (Fminibuffer_completion_contents): New Lisp function
Juri Linkov <juri@jurta.org>
parents: 67498
diff changeset
404 doc: /* Return the user input in a minibuffer before point as a string.
40cdd21343f8 (Fminibuffer_completion_contents): New Lisp function
Juri Linkov <juri@jurta.org>
parents: 67498
diff changeset
405 That is what completion commands operate on.
77326
58d40e42dfe4 (Fminibuffer_contents, Fminibuffer_contents_no_properties,
Juanma Barranquero <lekktu@gmail.com>
parents: 76384
diff changeset
406 If the current buffer is not a minibuffer, return its entire contents. */)
67618
40cdd21343f8 (Fminibuffer_completion_contents): New Lisp function
Juri Linkov <juri@jurta.org>
parents: 67498
diff changeset
407 ()
40cdd21343f8 (Fminibuffer_completion_contents): New Lisp function
Juri Linkov <juri@jurta.org>
parents: 67498
diff changeset
408 {
40cdd21343f8 (Fminibuffer_completion_contents): New Lisp function
Juri Linkov <juri@jurta.org>
parents: 67498
diff changeset
409 int prompt_end = XINT (Fminibuffer_prompt_end ());
40cdd21343f8 (Fminibuffer_completion_contents): New Lisp function
Juri Linkov <juri@jurta.org>
parents: 67498
diff changeset
410 if (PT < prompt_end)
40cdd21343f8 (Fminibuffer_completion_contents): New Lisp function
Juri Linkov <juri@jurta.org>
parents: 67498
diff changeset
411 error ("Cannot do completion in the prompt");
40cdd21343f8 (Fminibuffer_completion_contents): New Lisp function
Juri Linkov <juri@jurta.org>
parents: 67498
diff changeset
412 return make_buffer_string (prompt_end, PT, 1);
40cdd21343f8 (Fminibuffer_completion_contents): New Lisp function
Juri Linkov <juri@jurta.org>
parents: 67498
diff changeset
413 }
40cdd21343f8 (Fminibuffer_completion_contents): New Lisp function
Juri Linkov <juri@jurta.org>
parents: 67498
diff changeset
414
46019
8f82bf8a959e (do_completion, Fminibuffer_complete_word)
Richard M. Stallman <rms@gnu.org>
parents: 45620
diff changeset
415
53251
9bb418538a0f (read_minibuf): Allow INITIAL to be a cons of a string and an integer.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
416 /* Read from the minibuffer using keymap MAP and initial contents INITIAL,
9bb418538a0f (read_minibuf): Allow INITIAL to be a cons of a string and an integer.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
417 putting point minus BACKUP_N bytes from the end of INITIAL,
864
fe5f6b7c9727 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 765
diff changeset
418 prompting with PROMPT (a string), using history list HISTVAR
53251
9bb418538a0f (read_minibuf): Allow INITIAL to be a cons of a string and an integer.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
419 with initial position HISTPOS. INITIAL should be a string or a
9bb418538a0f (read_minibuf): Allow INITIAL to be a cons of a string and an integer.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
420 cons of a string and an integer. BACKUP_N should be <= 0, or
9bb418538a0f (read_minibuf): Allow INITIAL to be a cons of a string and an integer.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
421 Qnil, which is equivalent to 0. If INITIAL is a cons, BACKUP_N is
53827
44d25617bd98 (Fminibufferp, Fread_from_minibuffer)
Luc Teirlinck <teirllm@auburn.edu>
parents: 53364
diff changeset
422 ignored and replaced with an integer that puts point at one-indexed
44d25617bd98 (Fminibufferp, Fread_from_minibuffer)
Luc Teirlinck <teirllm@auburn.edu>
parents: 53364
diff changeset
423 position N in INITIAL, where N is the CDR of INITIAL, or at the
44d25617bd98 (Fminibufferp, Fread_from_minibuffer)
Luc Teirlinck <teirllm@auburn.edu>
parents: 53364
diff changeset
424 beginning of INITIAL if N <= 0.
864
fe5f6b7c9727 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 765
diff changeset
425
fe5f6b7c9727 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 765
diff changeset
426 Normally return the result as a string (the text that was read),
9583
99d523cdb0ea (read_minibuf): Store the object, not the string, into the history variable.
Karl Heuer <kwzh@gnu.org>
parents: 9460
diff changeset
427 but if EXPFLAG is nonzero, read it and return the object read.
4824
eaf67474339b (Fminibuffer_complete_word): GCPRO1 `completion' during calls to
Brian Fox <bfox@gnu.org>
parents: 4775
diff changeset
428 If HISTVAR is given, save the value read on that history only if it doesn't
eaf67474339b (Fminibuffer_complete_word): GCPRO1 `completion' during calls to
Brian Fox <bfox@gnu.org>
parents: 4775
diff changeset
429 match the front of that history list exactly. The value is pushed onto
17737
f79f2d6b119b (Fread_command): New optional arg DEFAULT-VALUE. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 17387
diff changeset
430 the list as the string that was read.
f79f2d6b119b (Fread_command): New optional arg DEFAULT-VALUE. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 17387
diff changeset
431
51039
e7e3f38afa3e (read_minibuf): If buffer is empty, record the default in the history.
Richard M. Stallman <rms@gnu.org>
parents: 50538
diff changeset
432 DEFALT specifies the default value for the sake of history commands.
18444
825ff9e2e44e (read_minibuf): New arg allow_props.
Richard M. Stallman <rms@gnu.org>
parents: 17805
diff changeset
433
19545
a7f1c1acde93 (Qcurrent_input_method, Qactivate_input_method): New
Kenichi Handa <handa@m17n.org>
parents: 19417
diff changeset
434 If ALLOW_PROPS is nonzero, we do not throw away text properties.
a7f1c1acde93 (Qcurrent_input_method, Qactivate_input_method): New
Kenichi Handa <handa@m17n.org>
parents: 19417
diff changeset
435
53251
9bb418538a0f (read_minibuf): Allow INITIAL to be a cons of a string and an integer.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
436 if INHERIT_INPUT_METHOD is nonzero, the minibuffer inherits the
19545
a7f1c1acde93 (Qcurrent_input_method, Qactivate_input_method): New
Kenichi Handa <handa@m17n.org>
parents: 19417
diff changeset
437 current input method. */
864
fe5f6b7c9727 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 765
diff changeset
438
17737
f79f2d6b119b (Fread_command): New optional arg DEFAULT-VALUE. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 17387
diff changeset
439 static Lisp_Object
f79f2d6b119b (Fread_command): New optional arg DEFAULT-VALUE. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 17387
diff changeset
440 read_minibuf (map, initial, prompt, backup_n, expflag,
70930
f3ddca90b6b1 (read_minibuf): Remove arg KEEP_ALL. Callers changed.
Juri Linkov <juri@jurta.org>
parents: 70499
diff changeset
441 histvar, histpos, defalt, allow_props, inherit_input_method)
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
442 Lisp_Object map;
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
443 Lisp_Object initial;
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
444 Lisp_Object prompt;
3690
2d6cd35210f3 (read_minibuf): Set and use mini_frame only if MULTI_FRAME.
Richard M. Stallman <rms@gnu.org>
parents: 2961
diff changeset
445 Lisp_Object backup_n;
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
446 int expflag;
864
fe5f6b7c9727 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 765
diff changeset
447 Lisp_Object histvar;
fe5f6b7c9727 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 765
diff changeset
448 Lisp_Object histpos;
17737
f79f2d6b119b (Fread_command): New optional arg DEFAULT-VALUE. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 17387
diff changeset
449 Lisp_Object defalt;
20584
24e567feaf18 (test_completion): Pass both kinds of size to oblookup.
Richard M. Stallman <rms@gnu.org>
parents: 20570
diff changeset
450 int allow_props;
19545
a7f1c1acde93 (Qcurrent_input_method, Qactivate_input_method): New
Kenichi Handa <handa@m17n.org>
parents: 19417
diff changeset
451 int inherit_input_method;
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
452 {
10249
a664a948dd55 (read_minibuf): GCPRO things.
Richard M. Stallman <rms@gnu.org>
parents: 10173
diff changeset
453 Lisp_Object val;
46293
1fb8f75062c6 Use macro SPECPDL_INDEX.
Juanma Barranquero <lekktu@gmail.com>
parents: 46285
diff changeset
454 int count = SPECPDL_INDEX ();
19545
a7f1c1acde93 (Qcurrent_input_method, Qactivate_input_method): New
Kenichi Handa <handa@m17n.org>
parents: 19417
diff changeset
455 Lisp_Object mini_frame, ambient_dir, minibuffer, input_method;
a7f1c1acde93 (Qcurrent_input_method, Qactivate_input_method): New
Kenichi Handa <handa@m17n.org>
parents: 19417
diff changeset
456 struct gcpro gcpro1, gcpro2, gcpro3, gcpro4, gcpro5;
19561
7e13891b6f22 (read_minibuf): Inherit enable-multibyte-characters
Richard M. Stallman <rms@gnu.org>
parents: 19545
diff changeset
457 Lisp_Object enable_multibyte;
53251
9bb418538a0f (read_minibuf): Allow INITIAL to be a cons of a string and an integer.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
458 int pos = INTEGERP (backup_n) ? XINT (backup_n) : 0;
51039
e7e3f38afa3e (read_minibuf): If buffer is empty, record the default in the history.
Richard M. Stallman <rms@gnu.org>
parents: 50538
diff changeset
459 /* String to add to the history. */
e7e3f38afa3e (read_minibuf): If buffer is empty, record the default in the history.
Richard M. Stallman <rms@gnu.org>
parents: 50538
diff changeset
460 Lisp_Object histstring;
e7e3f38afa3e (read_minibuf): If buffer is empty, record the default in the history.
Richard M. Stallman <rms@gnu.org>
parents: 50538
diff changeset
461
67963
5261f735431a (read_minibuf): Clear out all other minibuffer windows.
Richard M. Stallman <rms@gnu.org>
parents: 67869
diff changeset
462 Lisp_Object empty_minibuf;
5261f735431a (read_minibuf): Clear out all other minibuffer windows.
Richard M. Stallman <rms@gnu.org>
parents: 67869
diff changeset
463 Lisp_Object dummy, frame;
5261f735431a (read_minibuf): Clear out all other minibuffer windows.
Richard M. Stallman <rms@gnu.org>
parents: 67869
diff changeset
464
40403
4d2b8d93aa27 (read_minibuf): Remove unused external declaration of variable
Pavel Janík <Pavel@Janik.cz>
parents: 39989
diff changeset
465 extern Lisp_Object Qfront_sticky;
25612
7f8ebd701925 (read_minibuf): Put all three properties on the same range--the whole prompt.
Richard M. Stallman <rms@gnu.org>
parents: 25516
diff changeset
466 extern Lisp_Object Qrear_nonsticky;
10249
a664a948dd55 (read_minibuf): GCPRO things.
Richard M. Stallman <rms@gnu.org>
parents: 10173
diff changeset
467
17737
f79f2d6b119b (Fread_command): New optional arg DEFAULT-VALUE. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 17387
diff changeset
468 specbind (Qminibuffer_default, defalt);
f79f2d6b119b (Fread_command): New optional arg DEFAULT-VALUE. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 17387
diff changeset
469
75720
d93f8cf55f80 (read_minibuf): Fix 2007-01-30 change.
Kim F. Storm <storm@cua.dk>
parents: 75558
diff changeset
470 /* If Vminibuffer_completing_file_name is `lambda' on entry, it was t
d93f8cf55f80 (read_minibuf): Fix 2007-01-30 change.
Kim F. Storm <storm@cua.dk>
parents: 75558
diff changeset
471 in previous recursive minibuffer, but was not set explicitly
d93f8cf55f80 (read_minibuf): Fix 2007-01-30 change.
Kim F. Storm <storm@cua.dk>
parents: 75558
diff changeset
472 to t for this invocation, so set it to nil in this minibuffer.
d93f8cf55f80 (read_minibuf): Fix 2007-01-30 change.
Kim F. Storm <storm@cua.dk>
parents: 75558
diff changeset
473 Save the old value now, before we change it. */
d93f8cf55f80 (read_minibuf): Fix 2007-01-30 change.
Kim F. Storm <storm@cua.dk>
parents: 75558
diff changeset
474 specbind (intern ("minibuffer-completing-file-name"), Vminibuffer_completing_file_name);
d93f8cf55f80 (read_minibuf): Fix 2007-01-30 change.
Kim F. Storm <storm@cua.dk>
parents: 75558
diff changeset
475 if (EQ (Vminibuffer_completing_file_name, Qlambda))
d93f8cf55f80 (read_minibuf): Fix 2007-01-30 change.
Kim F. Storm <storm@cua.dk>
parents: 75558
diff changeset
476 Vminibuffer_completing_file_name = Qnil;
d93f8cf55f80 (read_minibuf): Fix 2007-01-30 change.
Kim F. Storm <storm@cua.dk>
parents: 75558
diff changeset
477
93074
620496d91e55 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 91327
diff changeset
478 #ifdef HAVE_WINDOW_SYSTEM
36255
1890bad59762 Use display_hourglass_p, start_hourglass,
Gerd Moellmann <gerd@gnu.org>
parents: 34224
diff changeset
479 if (display_hourglass_p)
1890bad59762 Use display_hourglass_p, start_hourglass,
Gerd Moellmann <gerd@gnu.org>
parents: 34224
diff changeset
480 cancel_hourglass ();
27863
30eebaedce93 (read_minibuf): Cancel busy-cursor.
Gerd Moellmann <gerd@gnu.org>
parents: 27697
diff changeset
481 #endif
10818
8c81853b2679 (read_minibuf): Make sure the display is locked.
Karl Heuer <kwzh@gnu.org>
parents: 10619
diff changeset
482
53251
9bb418538a0f (read_minibuf): Allow INITIAL to be a cons of a string and an integer.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
483 if (!NILP (initial))
9bb418538a0f (read_minibuf): Allow INITIAL to be a cons of a string and an integer.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
484 {
9bb418538a0f (read_minibuf): Allow INITIAL to be a cons of a string and an integer.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
485 if (CONSP (initial))
9bb418538a0f (read_minibuf): Allow INITIAL to be a cons of a string and an integer.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
486 {
9bb418538a0f (read_minibuf): Allow INITIAL to be a cons of a string and an integer.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
487 backup_n = Fcdr (initial);
9bb418538a0f (read_minibuf): Allow INITIAL to be a cons of a string and an integer.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
488 initial = Fcar (initial);
9bb418538a0f (read_minibuf): Allow INITIAL to be a cons of a string and an integer.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
489 CHECK_STRING (initial);
9bb418538a0f (read_minibuf): Allow INITIAL to be a cons of a string and an integer.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
490 if (!NILP (backup_n))
9bb418538a0f (read_minibuf): Allow INITIAL to be a cons of a string and an integer.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
491 {
9bb418538a0f (read_minibuf): Allow INITIAL to be a cons of a string and an integer.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
492 CHECK_NUMBER (backup_n);
9bb418538a0f (read_minibuf): Allow INITIAL to be a cons of a string and an integer.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
493 /* Convert to distance from end of input. */
9bb418538a0f (read_minibuf): Allow INITIAL to be a cons of a string and an integer.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
494 if (XINT (backup_n) < 1)
9bb418538a0f (read_minibuf): Allow INITIAL to be a cons of a string and an integer.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
495 /* A number too small means the beginning of the string. */
9bb418538a0f (read_minibuf): Allow INITIAL to be a cons of a string and an integer.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
496 pos = - SCHARS (initial);
9bb418538a0f (read_minibuf): Allow INITIAL to be a cons of a string and an integer.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
497 else
9bb418538a0f (read_minibuf): Allow INITIAL to be a cons of a string and an integer.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
498 pos = XINT (backup_n) - 1 - SCHARS (initial);
9bb418538a0f (read_minibuf): Allow INITIAL to be a cons of a string and an integer.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
499 }
9bb418538a0f (read_minibuf): Allow INITIAL to be a cons of a string and an integer.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
500 }
9bb418538a0f (read_minibuf): Allow INITIAL to be a cons of a string and an integer.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
501 else
9bb418538a0f (read_minibuf): Allow INITIAL to be a cons of a string and an integer.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
502 CHECK_STRING (initial);
9bb418538a0f (read_minibuf): Allow INITIAL to be a cons of a string and an integer.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
503 }
10249
a664a948dd55 (read_minibuf): GCPRO things.
Richard M. Stallman <rms@gnu.org>
parents: 10173
diff changeset
504 val = Qnil;
14969
ea072e2f75f8 (read_minibuf): GCPRO ambient_dir.
Richard M. Stallman <rms@gnu.org>
parents: 14952
diff changeset
505 ambient_dir = current_buffer->directory;
19545
a7f1c1acde93 (Qcurrent_input_method, Qactivate_input_method): New
Kenichi Handa <handa@m17n.org>
parents: 19417
diff changeset
506 input_method = Qnil;
19561
7e13891b6f22 (read_minibuf): Inherit enable-multibyte-characters
Richard M. Stallman <rms@gnu.org>
parents: 19545
diff changeset
507 enable_multibyte = Qnil;
14969
ea072e2f75f8 (read_minibuf): GCPRO ambient_dir.
Richard M. Stallman <rms@gnu.org>
parents: 14952
diff changeset
508
10249
a664a948dd55 (read_minibuf): GCPRO things.
Richard M. Stallman <rms@gnu.org>
parents: 10173
diff changeset
509 /* Don't need to protect PROMPT, HISTVAR, and HISTPOS because we
a664a948dd55 (read_minibuf): GCPRO things.
Richard M. Stallman <rms@gnu.org>
parents: 10173
diff changeset
510 store them away before we can GC. Don't need to protect
a664a948dd55 (read_minibuf): GCPRO things.
Richard M. Stallman <rms@gnu.org>
parents: 10173
diff changeset
511 BACKUP_N because we use the value only if it is an integer. */
19545
a7f1c1acde93 (Qcurrent_input_method, Qactivate_input_method): New
Kenichi Handa <handa@m17n.org>
parents: 19417
diff changeset
512 GCPRO5 (map, initial, val, ambient_dir, input_method);
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
513
9120
ed766dfb4efe (read_minibuf, Fread_from_minibuffer, Fread_buffer, Ftry_completion,
Karl Heuer <kwzh@gnu.org>
parents: 9049
diff changeset
514 if (!STRINGP (prompt))
81280
d27a83277a4b (read_minibuf): Use empty_unibyte_string.
Juanma Barranquero <lekktu@gmail.com>
parents: 77326
diff changeset
515 prompt = empty_unibyte_string;
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
516
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
517 if (!enable_recursive_minibuffers
16180
9b0180c495ff (read_minibuf): If not in minibuffer window,
Richard M. Stallman <rms@gnu.org>
parents: 16051
diff changeset
518 && minibuf_level > 0)
9b0180c495ff (read_minibuf): If not in minibuffer window,
Richard M. Stallman <rms@gnu.org>
parents: 16051
diff changeset
519 {
9b0180c495ff (read_minibuf): If not in minibuffer window,
Richard M. Stallman <rms@gnu.org>
parents: 16051
diff changeset
520 if (EQ (selected_window, minibuf_window))
9b0180c495ff (read_minibuf): If not in minibuffer window,
Richard M. Stallman <rms@gnu.org>
parents: 16051
diff changeset
521 error ("Command attempted to use minibuffer while in minibuffer");
9b0180c495ff (read_minibuf): If not in minibuffer window,
Richard M. Stallman <rms@gnu.org>
parents: 16051
diff changeset
522 else
9b0180c495ff (read_minibuf): If not in minibuffer window,
Richard M. Stallman <rms@gnu.org>
parents: 16051
diff changeset
523 /* If we're in another window, cancel the minibuffer that's active. */
9b0180c495ff (read_minibuf): If not in minibuffer window,
Richard M. Stallman <rms@gnu.org>
parents: 16051
diff changeset
524 Fthrow (Qexit,
9b0180c495ff (read_minibuf): If not in minibuffer window,
Richard M. Stallman <rms@gnu.org>
parents: 16051
diff changeset
525 build_string ("Command attempted to use minibuffer while in minibuffer"));
9b0180c495ff (read_minibuf): If not in minibuffer window,
Richard M. Stallman <rms@gnu.org>
parents: 16051
diff changeset
526 }
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
527
70353
ecf86801649d (read_minibuf): Don't use read_minibuf_noninteractive
Richard M. Stallman <rms@gnu.org>
parents: 68651
diff changeset
528 if (noninteractive && NILP (Vexecuting_kbd_macro))
36530
c98e0f6d63f2 (read_minibuf): Clean up the binding stack if
Gerd Moellmann <gerd@gnu.org>
parents: 36255
diff changeset
529 {
53251
9bb418538a0f (read_minibuf): Allow INITIAL to be a cons of a string and an integer.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
530 val = read_minibuf_noninteractive (map, initial, prompt,
9bb418538a0f (read_minibuf): Allow INITIAL to be a cons of a string and an integer.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
531 make_number (pos),
36530
c98e0f6d63f2 (read_minibuf): Clean up the binding stack if
Gerd Moellmann <gerd@gnu.org>
parents: 36255
diff changeset
532 expflag, histvar, histpos, defalt,
c98e0f6d63f2 (read_minibuf): Clean up the binding stack if
Gerd Moellmann <gerd@gnu.org>
parents: 36255
diff changeset
533 allow_props, inherit_input_method);
51781
bd0acf8d5f97 (read_minibuf): UNGCPRO before returning.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51200
diff changeset
534 UNGCPRO;
36530
c98e0f6d63f2 (read_minibuf): Clean up the binding stack if
Gerd Moellmann <gerd@gnu.org>
parents: 36255
diff changeset
535 return unbind_to (count, val);
c98e0f6d63f2 (read_minibuf): Clean up the binding stack if
Gerd Moellmann <gerd@gnu.org>
parents: 36255
diff changeset
536 }
26320
d3926d907840 (string_to_object): New.
Gerd Moellmann <gerd@gnu.org>
parents: 26164
diff changeset
537
14952
cb48d9a50ebc (read_minibuf): Rearrange operations, mainly putting
Richard M. Stallman <rms@gnu.org>
parents: 14667
diff changeset
538 /* Choose the minibuffer window and frame, and take action on them. */
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
539
12631
ab75fc26058e (read_minibuf): Call choose_minibuffer_frame.
Richard M. Stallman <rms@gnu.org>
parents: 12164
diff changeset
540 choose_minibuf_frame ();
ab75fc26058e (read_minibuf): Call choose_minibuffer_frame.
Richard M. Stallman <rms@gnu.org>
parents: 12164
diff changeset
541
18904
1ff8b0bca025 (choose_minibuf_frame_1): New function.
Richard M. Stallman <rms@gnu.org>
parents: 18862
diff changeset
542 record_unwind_protect (choose_minibuf_frame_1, Qnil);
1ff8b0bca025 (choose_minibuf_frame_1): New function.
Richard M. Stallman <rms@gnu.org>
parents: 18862
diff changeset
543
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
544 record_unwind_protect (Fset_window_configuration,
345
8633e6928acc *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 330
diff changeset
545 Fcurrent_window_configuration (Qnil));
8633e6928acc *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 330
diff changeset
546
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 737
diff changeset
547 /* If the minibuffer window is on a different frame, save that
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 737
diff changeset
548 frame's configuration too. */
8899
81103c53aa59 (read_minibuf): Fix Lisp_Object vs. int problems.
Karl Heuer <kwzh@gnu.org>
parents: 8872
diff changeset
549 mini_frame = WINDOW_FRAME (XWINDOW (minibuf_window));
25673
b8bc6e792b2f (choose_minibuf_frame): Don't try to set the
Gerd Moellmann <gerd@gnu.org>
parents: 25658
diff changeset
550 if (!EQ (mini_frame, selected_frame))
3690
2d6cd35210f3 (read_minibuf): Set and use mini_frame only if MULTI_FRAME.
Richard M. Stallman <rms@gnu.org>
parents: 2961
diff changeset
551 record_unwind_protect (Fset_window_configuration,
2d6cd35210f3 (read_minibuf): Set and use mini_frame only if MULTI_FRAME.
Richard M. Stallman <rms@gnu.org>
parents: 2961
diff changeset
552 Fcurrent_window_configuration (mini_frame));
6354
a74524e1c961 (read_minibuf): Make minibuffer frame visible when minibuffer activated.
Karl Heuer <kwzh@gnu.org>
parents: 6235
diff changeset
553
a74524e1c961 (read_minibuf): Make minibuffer frame visible when minibuffer activated.
Karl Heuer <kwzh@gnu.org>
parents: 6235
diff changeset
554 /* If the minibuffer is on an iconified or invisible frame,
a74524e1c961 (read_minibuf): Make minibuffer frame visible when minibuffer activated.
Karl Heuer <kwzh@gnu.org>
parents: 6235
diff changeset
555 make it visible now. */
a74524e1c961 (read_minibuf): Make minibuffer frame visible when minibuffer activated.
Karl Heuer <kwzh@gnu.org>
parents: 6235
diff changeset
556 Fmake_frame_visible (mini_frame);
a74524e1c961 (read_minibuf): Make minibuffer frame visible when minibuffer activated.
Karl Heuer <kwzh@gnu.org>
parents: 6235
diff changeset
557
5238
63932e111cc5 (minibuffer_auto_raise): Really define it.
Richard M. Stallman <rms@gnu.org>
parents: 5069
diff changeset
558 if (minibuffer_auto_raise)
63932e111cc5 (minibuffer_auto_raise): Really define it.
Richard M. Stallman <rms@gnu.org>
parents: 5069
diff changeset
559 Fraise_frame (mini_frame);
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
560
83449
ff74a86c2b16 Overhaul and simplify single_kboard API. Allow calls to `recursive-edit' in process filters. Small fixes.
Karoly Lorentey <lorentey@elte.hu>
parents: 83431
diff changeset
561 temporarily_switch_to_single_kboard (XFRAME (mini_frame));
83374
0b75ace4f7ad Fix crash after y-or-n-p prompt triggered by emacsclient. (Reported by Han Boetes, analysis by Kalle Olavi Niemitalo.)
Karoly Lorentey <lorentey@elte.hu>
parents: 83353
diff changeset
562
14952
cb48d9a50ebc (read_minibuf): Rearrange operations, mainly putting
Richard M. Stallman <rms@gnu.org>
parents: 14667
diff changeset
563 /* We have to do this after saving the window configuration
cb48d9a50ebc (read_minibuf): Rearrange operations, mainly putting
Richard M. Stallman <rms@gnu.org>
parents: 14667
diff changeset
564 since that is what restores the current buffer. */
cb48d9a50ebc (read_minibuf): Rearrange operations, mainly putting
Richard M. Stallman <rms@gnu.org>
parents: 14667
diff changeset
565
cb48d9a50ebc (read_minibuf): Rearrange operations, mainly putting
Richard M. Stallman <rms@gnu.org>
parents: 14667
diff changeset
566 /* Arrange to restore a number of minibuffer-related variables.
cb48d9a50ebc (read_minibuf): Rearrange operations, mainly putting
Richard M. Stallman <rms@gnu.org>
parents: 14667
diff changeset
567 We could bind each variable separately, but that would use lots of
cb48d9a50ebc (read_minibuf): Rearrange operations, mainly putting
Richard M. Stallman <rms@gnu.org>
parents: 14667
diff changeset
568 specpdl slots. */
cb48d9a50ebc (read_minibuf): Rearrange operations, mainly putting
Richard M. Stallman <rms@gnu.org>
parents: 14667
diff changeset
569 minibuf_save_list
cb48d9a50ebc (read_minibuf): Rearrange operations, mainly putting
Richard M. Stallman <rms@gnu.org>
parents: 14667
diff changeset
570 = Fcons (Voverriding_local_map,
75558
f7b5b15084ef (read_minibuf): Save and clear Vminibuffer_completing_file_name.
Richard M. Stallman <rms@gnu.org>
parents: 75475
diff changeset
571 Fcons (minibuf_window,
75720
d93f8cf55f80 (read_minibuf): Fix 2007-01-30 change.
Kim F. Storm <storm@cua.dk>
parents: 75558
diff changeset
572 minibuf_save_list));
14952
cb48d9a50ebc (read_minibuf): Rearrange operations, mainly putting
Richard M. Stallman <rms@gnu.org>
parents: 14667
diff changeset
573 minibuf_save_list
cb48d9a50ebc (read_minibuf): Rearrange operations, mainly putting
Richard M. Stallman <rms@gnu.org>
parents: 14667
diff changeset
574 = Fcons (minibuf_prompt,
cb48d9a50ebc (read_minibuf): Rearrange operations, mainly putting
Richard M. Stallman <rms@gnu.org>
parents: 14667
diff changeset
575 Fcons (make_number (minibuf_prompt_width),
cb48d9a50ebc (read_minibuf): Rearrange operations, mainly putting
Richard M. Stallman <rms@gnu.org>
parents: 14667
diff changeset
576 Fcons (Vhelp_form,
cb48d9a50ebc (read_minibuf): Rearrange operations, mainly putting
Richard M. Stallman <rms@gnu.org>
parents: 14667
diff changeset
577 Fcons (Vcurrent_prefix_arg,
cb48d9a50ebc (read_minibuf): Rearrange operations, mainly putting
Richard M. Stallman <rms@gnu.org>
parents: 14667
diff changeset
578 Fcons (Vminibuffer_history_position,
cb48d9a50ebc (read_minibuf): Rearrange operations, mainly putting
Richard M. Stallman <rms@gnu.org>
parents: 14667
diff changeset
579 Fcons (Vminibuffer_history_variable,
cb48d9a50ebc (read_minibuf): Rearrange operations, mainly putting
Richard M. Stallman <rms@gnu.org>
parents: 14667
diff changeset
580 minibuf_save_list))))));
cb48d9a50ebc (read_minibuf): Rearrange operations, mainly putting
Richard M. Stallman <rms@gnu.org>
parents: 14667
diff changeset
581
cb48d9a50ebc (read_minibuf): Rearrange operations, mainly putting
Richard M. Stallman <rms@gnu.org>
parents: 14667
diff changeset
582 record_unwind_protect (read_minibuf_unwind, Qnil);
cb48d9a50ebc (read_minibuf): Rearrange operations, mainly putting
Richard M. Stallman <rms@gnu.org>
parents: 14667
diff changeset
583 minibuf_level++;
55795
1e94f291a19c (run_exit_minibuf_hook): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53827
diff changeset
584 /* We are exiting the minibuffer one way or the other, so run the hook.
1e94f291a19c (run_exit_minibuf_hook): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53827
diff changeset
585 It should be run before unwinding the minibuf settings. Do it
1e94f291a19c (run_exit_minibuf_hook): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53827
diff changeset
586 separately from read_minibuf_unwind because we need to make sure that
1e94f291a19c (run_exit_minibuf_hook): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53827
diff changeset
587 read_minibuf_unwind is fully executed even if exit-minibuffer-hook
1e94f291a19c (run_exit_minibuf_hook): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53827
diff changeset
588 signals an error. --Stef */
1e94f291a19c (run_exit_minibuf_hook): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53827
diff changeset
589 record_unwind_protect (run_exit_minibuf_hook, Qnil);
14952
cb48d9a50ebc (read_minibuf): Rearrange operations, mainly putting
Richard M. Stallman <rms@gnu.org>
parents: 14667
diff changeset
590
cb48d9a50ebc (read_minibuf): Rearrange operations, mainly putting
Richard M. Stallman <rms@gnu.org>
parents: 14667
diff changeset
591 /* Now that we can restore all those variables, start changing them. */
cb48d9a50ebc (read_minibuf): Rearrange operations, mainly putting
Richard M. Stallman <rms@gnu.org>
parents: 14667
diff changeset
592
25658
a9f38bb7f815 (read_minibuf_unwind): Call resize_mini_window with
Gerd Moellmann <gerd@gnu.org>
parents: 25612
diff changeset
593 minibuf_prompt_width = 0;
14952
cb48d9a50ebc (read_minibuf): Rearrange operations, mainly putting
Richard M. Stallman <rms@gnu.org>
parents: 14667
diff changeset
594 minibuf_prompt = Fcopy_sequence (prompt);
cb48d9a50ebc (read_minibuf): Rearrange operations, mainly putting
Richard M. Stallman <rms@gnu.org>
parents: 14667
diff changeset
595 Vminibuffer_history_position = histpos;
cb48d9a50ebc (read_minibuf): Rearrange operations, mainly putting
Richard M. Stallman <rms@gnu.org>
parents: 14667
diff changeset
596 Vminibuffer_history_variable = histvar;
cb48d9a50ebc (read_minibuf): Rearrange operations, mainly putting
Richard M. Stallman <rms@gnu.org>
parents: 14667
diff changeset
597 Vhelp_form = Vminibuffer_help_form;
75720
d93f8cf55f80 (read_minibuf): Fix 2007-01-30 change.
Kim F. Storm <storm@cua.dk>
parents: 75558
diff changeset
598 /* If this minibuffer is reading a file name, that doesn't mean
d93f8cf55f80 (read_minibuf): Fix 2007-01-30 change.
Kim F. Storm <storm@cua.dk>
parents: 75558
diff changeset
599 recursive ones are. But we cannot set it to nil, because
d93f8cf55f80 (read_minibuf): Fix 2007-01-30 change.
Kim F. Storm <storm@cua.dk>
parents: 75558
diff changeset
600 completion code still need to know the minibuffer is completing a
d93f8cf55f80 (read_minibuf): Fix 2007-01-30 change.
Kim F. Storm <storm@cua.dk>
parents: 75558
diff changeset
601 file name. So use `lambda' as intermediate value meaning
d93f8cf55f80 (read_minibuf): Fix 2007-01-30 change.
Kim F. Storm <storm@cua.dk>
parents: 75558
diff changeset
602 "t" in this minibuffer, but "nil" in next minibuffer. */
d93f8cf55f80 (read_minibuf): Fix 2007-01-30 change.
Kim F. Storm <storm@cua.dk>
parents: 75558
diff changeset
603 if (!NILP (Vminibuffer_completing_file_name))
d93f8cf55f80 (read_minibuf): Fix 2007-01-30 change.
Kim F. Storm <storm@cua.dk>
parents: 75558
diff changeset
604 Vminibuffer_completing_file_name = Qlambda;
14952
cb48d9a50ebc (read_minibuf): Rearrange operations, mainly putting
Richard M. Stallman <rms@gnu.org>
parents: 14667
diff changeset
605
19545
a7f1c1acde93 (Qcurrent_input_method, Qactivate_input_method): New
Kenichi Handa <handa@m17n.org>
parents: 19417
diff changeset
606 if (inherit_input_method)
19561
7e13891b6f22 (read_minibuf): Inherit enable-multibyte-characters
Richard M. Stallman <rms@gnu.org>
parents: 19545
diff changeset
607 {
43000
c16f32068114 (Fread_from_minibuffer, Fread_command, Fread_function)
Pavel Janík <Pavel@Janik.cz>
parents: 42881
diff changeset
608 /* `current-input-method' is buffer local. So, remember it in
19561
7e13891b6f22 (read_minibuf): Inherit enable-multibyte-characters
Richard M. Stallman <rms@gnu.org>
parents: 19545
diff changeset
609 INPUT_METHOD before changing the current buffer. */
7e13891b6f22 (read_minibuf): Inherit enable-multibyte-characters
Richard M. Stallman <rms@gnu.org>
parents: 19545
diff changeset
610 input_method = Fsymbol_value (Qcurrent_input_method);
7e13891b6f22 (read_minibuf): Inherit enable-multibyte-characters
Richard M. Stallman <rms@gnu.org>
parents: 19545
diff changeset
611 enable_multibyte = current_buffer->enable_multibyte_characters;
7e13891b6f22 (read_minibuf): Inherit enable-multibyte-characters
Richard M. Stallman <rms@gnu.org>
parents: 19545
diff changeset
612 }
19545
a7f1c1acde93 (Qcurrent_input_method, Qactivate_input_method): New
Kenichi Handa <handa@m17n.org>
parents: 19417
diff changeset
613
14952
cb48d9a50ebc (read_minibuf): Rearrange operations, mainly putting
Richard M. Stallman <rms@gnu.org>
parents: 14667
diff changeset
614 /* Switch to the minibuffer. */
cb48d9a50ebc (read_minibuf): Rearrange operations, mainly putting
Richard M. Stallman <rms@gnu.org>
parents: 14667
diff changeset
615
17387
b0d63d297969 (read_minibuf): Get the string from the minibuffer
Richard M. Stallman <rms@gnu.org>
parents: 17375
diff changeset
616 minibuffer = get_minibuffer (minibuf_level);
b0d63d297969 (read_minibuf): Get the string from the minibuffer
Richard M. Stallman <rms@gnu.org>
parents: 17375
diff changeset
617 Fset_buffer (minibuffer);
1593
a3862c6dfcd0 * minibuf.c (temp_echo_area_glyphs): Change reference to
Jim Blandy <jimb@redhat.com>
parents: 1568
diff changeset
618
67869
ea017f365939 (Fminibuffer_message): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 67720
diff changeset
619 /* If appropriate, copy enable-multibyte-characters into the minibuffer. */
ea017f365939 (Fminibuffer_message): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 67720
diff changeset
620 if (inherit_input_method)
ea017f365939 (Fminibuffer_message): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 67720
diff changeset
621 current_buffer->enable_multibyte_characters = enable_multibyte;
ea017f365939 (Fminibuffer_message): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 67720
diff changeset
622
1593
a3862c6dfcd0 * minibuf.c (temp_echo_area_glyphs): Change reference to
Jim Blandy <jimb@redhat.com>
parents: 1568
diff changeset
623 /* The current buffer's default directory is usually the right thing
a3862c6dfcd0 * minibuf.c (temp_echo_area_glyphs): Change reference to
Jim Blandy <jimb@redhat.com>
parents: 1568
diff changeset
624 for our minibuffer here. However, if you're typing a command at
a3862c6dfcd0 * minibuf.c (temp_echo_area_glyphs): Change reference to
Jim Blandy <jimb@redhat.com>
parents: 1568
diff changeset
625 a minibuffer-only frame when minibuf_level is zero, then buf IS
a3862c6dfcd0 * minibuf.c (temp_echo_area_glyphs): Change reference to
Jim Blandy <jimb@redhat.com>
parents: 1568
diff changeset
626 the current_buffer, so reset_buffer leaves buf's default
a3862c6dfcd0 * minibuf.c (temp_echo_area_glyphs): Change reference to
Jim Blandy <jimb@redhat.com>
parents: 1568
diff changeset
627 directory unchanged. This is a bummer when you've just started
a3862c6dfcd0 * minibuf.c (temp_echo_area_glyphs): Change reference to
Jim Blandy <jimb@redhat.com>
parents: 1568
diff changeset
628 up Emacs and buf's default directory is Qnil. Here's a hack; can
a3862c6dfcd0 * minibuf.c (temp_echo_area_glyphs): Change reference to
Jim Blandy <jimb@redhat.com>
parents: 1568
diff changeset
629 you think of something better to do? Find another buffer with a
a3862c6dfcd0 * minibuf.c (temp_echo_area_glyphs): Change reference to
Jim Blandy <jimb@redhat.com>
parents: 1568
diff changeset
630 better directory, and use that one instead. */
14952
cb48d9a50ebc (read_minibuf): Rearrange operations, mainly putting
Richard M. Stallman <rms@gnu.org>
parents: 14667
diff changeset
631 if (STRINGP (ambient_dir))
cb48d9a50ebc (read_minibuf): Rearrange operations, mainly putting
Richard M. Stallman <rms@gnu.org>
parents: 14667
diff changeset
632 current_buffer->directory = ambient_dir;
1593
a3862c6dfcd0 * minibuf.c (temp_echo_area_glyphs): Change reference to
Jim Blandy <jimb@redhat.com>
parents: 1568
diff changeset
633 else
a3862c6dfcd0 * minibuf.c (temp_echo_area_glyphs): Change reference to
Jim Blandy <jimb@redhat.com>
parents: 1568
diff changeset
634 {
a3862c6dfcd0 * minibuf.c (temp_echo_area_glyphs): Change reference to
Jim Blandy <jimb@redhat.com>
parents: 1568
diff changeset
635 Lisp_Object buf_list;
a3862c6dfcd0 * minibuf.c (temp_echo_area_glyphs): Change reference to
Jim Blandy <jimb@redhat.com>
parents: 1568
diff changeset
636
a3862c6dfcd0 * minibuf.c (temp_echo_area_glyphs): Change reference to
Jim Blandy <jimb@redhat.com>
parents: 1568
diff changeset
637 for (buf_list = Vbuffer_alist;
a3862c6dfcd0 * minibuf.c (temp_echo_area_glyphs): Change reference to
Jim Blandy <jimb@redhat.com>
parents: 1568
diff changeset
638 CONSP (buf_list);
26164
d39ec0a27081 more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents: 26059
diff changeset
639 buf_list = XCDR (buf_list))
1593
a3862c6dfcd0 * minibuf.c (temp_echo_area_glyphs): Change reference to
Jim Blandy <jimb@redhat.com>
parents: 1568
diff changeset
640 {
6504
c867b9af8de4 (read_minibuf): Use assignment instead of initialization.
Karl Heuer <kwzh@gnu.org>
parents: 6472
diff changeset
641 Lisp_Object other_buf;
1593
a3862c6dfcd0 * minibuf.c (temp_echo_area_glyphs): Change reference to
Jim Blandy <jimb@redhat.com>
parents: 1568
diff changeset
642
26164
d39ec0a27081 more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents: 26059
diff changeset
643 other_buf = XCDR (XCAR (buf_list));
9120
ed766dfb4efe (read_minibuf, Fread_from_minibuffer, Fread_buffer, Ftry_completion,
Karl Heuer <kwzh@gnu.org>
parents: 9049
diff changeset
644 if (STRINGP (XBUFFER (other_buf)->directory))
1593
a3862c6dfcd0 * minibuf.c (temp_echo_area_glyphs): Change reference to
Jim Blandy <jimb@redhat.com>
parents: 1568
diff changeset
645 {
a3862c6dfcd0 * minibuf.c (temp_echo_area_glyphs): Change reference to
Jim Blandy <jimb@redhat.com>
parents: 1568
diff changeset
646 current_buffer->directory = XBUFFER (other_buf)->directory;
a3862c6dfcd0 * minibuf.c (temp_echo_area_glyphs): Change reference to
Jim Blandy <jimb@redhat.com>
parents: 1568
diff changeset
647 break;
a3862c6dfcd0 * minibuf.c (temp_echo_area_glyphs): Change reference to
Jim Blandy <jimb@redhat.com>
parents: 1568
diff changeset
648 }
a3862c6dfcd0 * minibuf.c (temp_echo_area_glyphs): Change reference to
Jim Blandy <jimb@redhat.com>
parents: 1568
diff changeset
649 }
a3862c6dfcd0 * minibuf.c (temp_echo_area_glyphs): Change reference to
Jim Blandy <jimb@redhat.com>
parents: 1568
diff changeset
650 }
a3862c6dfcd0 * minibuf.c (temp_echo_area_glyphs): Change reference to
Jim Blandy <jimb@redhat.com>
parents: 1568
diff changeset
651
25673
b8bc6e792b2f (choose_minibuf_frame): Don't try to set the
Gerd Moellmann <gerd@gnu.org>
parents: 25658
diff changeset
652 if (!EQ (mini_frame, selected_frame))
b8bc6e792b2f (choose_minibuf_frame): Don't try to set the
Gerd Moellmann <gerd@gnu.org>
parents: 25658
diff changeset
653 Fredirect_frame_focus (selected_frame, mini_frame);
358
71c9042fb90d *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 345
diff changeset
654
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
655 Vminibuf_scroll_window = selected_window;
43573
3d6e86e8823b (read_minibuf): Set Vminibuf_selected_window on first
Kim F. Storm <storm@cua.dk>
parents: 43040
diff changeset
656 if (minibuf_level == 1 || !EQ (minibuf_window, selected_window))
43595
b7964dae2379 (minibuf_selected_window): Renamed from Vminibuf_selected_window.
Kim F. Storm <storm@cua.dk>
parents: 43573
diff changeset
657 minibuf_selected_window = selected_window;
67963
5261f735431a (read_minibuf): Clear out all other minibuffer windows.
Richard M. Stallman <rms@gnu.org>
parents: 67869
diff changeset
658
5261f735431a (read_minibuf): Clear out all other minibuffer windows.
Richard M. Stallman <rms@gnu.org>
parents: 67869
diff changeset
659 /* Empty out the minibuffers of all frames other than the one
5261f735431a (read_minibuf): Clear out all other minibuffer windows.
Richard M. Stallman <rms@gnu.org>
parents: 67869
diff changeset
660 where we are going to display one now.
5261f735431a (read_minibuf): Clear out all other minibuffer windows.
Richard M. Stallman <rms@gnu.org>
parents: 67869
diff changeset
661 Set them to point to ` *Minibuf-0*', which is always empty. */
5261f735431a (read_minibuf): Clear out all other minibuffer windows.
Richard M. Stallman <rms@gnu.org>
parents: 67869
diff changeset
662 empty_minibuf = Fget_buffer (build_string (" *Minibuf-0*"));
5261f735431a (read_minibuf): Clear out all other minibuffer windows.
Richard M. Stallman <rms@gnu.org>
parents: 67869
diff changeset
663
5261f735431a (read_minibuf): Clear out all other minibuffer windows.
Richard M. Stallman <rms@gnu.org>
parents: 67869
diff changeset
664 FOR_EACH_FRAME (dummy, frame)
5261f735431a (read_minibuf): Clear out all other minibuffer windows.
Richard M. Stallman <rms@gnu.org>
parents: 67869
diff changeset
665 {
5261f735431a (read_minibuf): Clear out all other minibuffer windows.
Richard M. Stallman <rms@gnu.org>
parents: 67869
diff changeset
666 Lisp_Object root_window = Fframe_root_window (frame);
5261f735431a (read_minibuf): Clear out all other minibuffer windows.
Richard M. Stallman <rms@gnu.org>
parents: 67869
diff changeset
667 Lisp_Object mini_window = XWINDOW (root_window)->next;
5261f735431a (read_minibuf): Clear out all other minibuffer windows.
Richard M. Stallman <rms@gnu.org>
parents: 67869
diff changeset
668
68261
380cef0ff139 (read_minibuf): Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents: 67963
diff changeset
669 if (! NILP (mini_window) && ! EQ (mini_window, minibuf_window)
380cef0ff139 (read_minibuf): Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents: 67963
diff changeset
670 && !NILP (Fwindow_minibuffer_p (mini_window)))
67963
5261f735431a (read_minibuf): Clear out all other minibuffer windows.
Richard M. Stallman <rms@gnu.org>
parents: 67869
diff changeset
671 Fset_window_buffer (mini_window, empty_minibuf, Qnil);
5261f735431a (read_minibuf): Clear out all other minibuffer windows.
Richard M. Stallman <rms@gnu.org>
parents: 67869
diff changeset
672 }
5261f735431a (read_minibuf): Clear out all other minibuffer windows.
Richard M. Stallman <rms@gnu.org>
parents: 67869
diff changeset
673
5261f735431a (read_minibuf): Clear out all other minibuffer windows.
Richard M. Stallman <rms@gnu.org>
parents: 67869
diff changeset
674 /* Display this minibuffer in the proper window. */
51200
be76b5735f96 Update Fset_window_buffer usage.
Kim F. Storm <storm@cua.dk>
parents: 51048
diff changeset
675 Fset_window_buffer (minibuf_window, Fcurrent_buffer (), Qnil);
51048
7ac9c3bea5ea (Fselect_window): Add optional arg `norecord'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51039
diff changeset
676 Fselect_window (minibuf_window, Qnil);
9316
5f7cfbdef872 (read_minibuf, get_minibuffer, read_minibuf_unwind, Fread_from_minibuffer,
Karl Heuer <kwzh@gnu.org>
parents: 9183
diff changeset
677 XSETFASTINT (XWINDOW (minibuf_window)->hscroll, 0);
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
678
14952
cb48d9a50ebc (read_minibuf): Rearrange operations, mainly putting
Richard M. Stallman <rms@gnu.org>
parents: 14667
diff changeset
679 Fmake_local_variable (Qprint_escape_newlines);
cb48d9a50ebc (read_minibuf): Rearrange operations, mainly putting
Richard M. Stallman <rms@gnu.org>
parents: 14667
diff changeset
680 print_escape_newlines = 1;
cb48d9a50ebc (read_minibuf): Rearrange operations, mainly putting
Richard M. Stallman <rms@gnu.org>
parents: 14667
diff changeset
681
cb48d9a50ebc (read_minibuf): Rearrange operations, mainly putting
Richard M. Stallman <rms@gnu.org>
parents: 14667
diff changeset
682 /* Erase the buffer. */
14667
3de266c52c9a (read_minibuf): Bind inhibit-read-only to t around clearing the minibuffer.
Richard M. Stallman <rms@gnu.org>
parents: 14435
diff changeset
683 {
46285
3f111801efb4 Rename BINDING_STACK_SIZE to SPECPDL_INDEX.
Juanma Barranquero <lekktu@gmail.com>
parents: 46224
diff changeset
684 int count1 = SPECPDL_INDEX ();
14667
3de266c52c9a (read_minibuf): Bind inhibit-read-only to t around clearing the minibuffer.
Richard M. Stallman <rms@gnu.org>
parents: 14435
diff changeset
685 specbind (Qinhibit_read_only, Qt);
39248
51b411c7b689 (read_minibuf): Bind inhibit-modification-hooks to t,
Gerd Moellmann <gerd@gnu.org>
parents: 38166
diff changeset
686 specbind (Qinhibit_modification_hooks, Qt);
14667
3de266c52c9a (read_minibuf): Bind inhibit-read-only to t around clearing the minibuffer.
Richard M. Stallman <rms@gnu.org>
parents: 14435
diff changeset
687 Ferase_buffer ();
76369
488516b0de0a (read_minibuf): Bind inhibit-read-only a bit longer so as
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 76042
diff changeset
688
488516b0de0a (read_minibuf): Bind inhibit-read-only a bit longer so as
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 76042
diff changeset
689 if (!NILP (current_buffer->enable_multibyte_characters)
488516b0de0a (read_minibuf): Bind inhibit-read-only a bit longer so as
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 76042
diff changeset
690 && ! STRING_MULTIBYTE (minibuf_prompt))
488516b0de0a (read_minibuf): Bind inhibit-read-only a bit longer so as
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 76042
diff changeset
691 minibuf_prompt = Fstring_make_multibyte (minibuf_prompt);
77326
58d40e42dfe4 (Fminibuffer_contents, Fminibuffer_contents_no_properties,
Juanma Barranquero <lekktu@gmail.com>
parents: 76384
diff changeset
692
76369
488516b0de0a (read_minibuf): Bind inhibit-read-only a bit longer so as
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 76042
diff changeset
693 /* Insert the prompt, record where it ends. */
488516b0de0a (read_minibuf): Bind inhibit-read-only a bit longer so as
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 76042
diff changeset
694 Finsert (1, &minibuf_prompt);
488516b0de0a (read_minibuf): Bind inhibit-read-only a bit longer so as
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 76042
diff changeset
695 if (PT > BEG)
488516b0de0a (read_minibuf): Bind inhibit-read-only a bit longer so as
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 76042
diff changeset
696 {
488516b0de0a (read_minibuf): Bind inhibit-read-only a bit longer so as
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 76042
diff changeset
697 Fput_text_property (make_number (BEG), make_number (PT),
488516b0de0a (read_minibuf): Bind inhibit-read-only a bit longer so as
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 76042
diff changeset
698 Qfront_sticky, Qt, Qnil);
488516b0de0a (read_minibuf): Bind inhibit-read-only a bit longer so as
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 76042
diff changeset
699 Fput_text_property (make_number (BEG), make_number (PT),
488516b0de0a (read_minibuf): Bind inhibit-read-only a bit longer so as
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 76042
diff changeset
700 Qrear_nonsticky, Qt, Qnil);
488516b0de0a (read_minibuf): Bind inhibit-read-only a bit longer so as
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 76042
diff changeset
701 Fput_text_property (make_number (BEG), make_number (PT),
488516b0de0a (read_minibuf): Bind inhibit-read-only a bit longer so as
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 76042
diff changeset
702 Qfield, Qt, Qnil);
488516b0de0a (read_minibuf): Bind inhibit-read-only a bit longer so as
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 76042
diff changeset
703 Fadd_text_properties (make_number (BEG), make_number (PT),
488516b0de0a (read_minibuf): Bind inhibit-read-only a bit longer so as
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 76042
diff changeset
704 Vminibuffer_prompt_properties, Qnil);
488516b0de0a (read_minibuf): Bind inhibit-read-only a bit longer so as
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 76042
diff changeset
705 }
14667
3de266c52c9a (read_minibuf): Bind inhibit-read-only to t around clearing the minibuffer.
Richard M. Stallman <rms@gnu.org>
parents: 14435
diff changeset
706 unbind_to (count1, Qnil);
3de266c52c9a (read_minibuf): Bind inhibit-read-only to t around clearing the minibuffer.
Richard M. Stallman <rms@gnu.org>
parents: 14435
diff changeset
707 }
3de266c52c9a (read_minibuf): Bind inhibit-read-only to t around clearing the minibuffer.
Richard M. Stallman <rms@gnu.org>
parents: 14435
diff changeset
708
45620
1ae71892eb5f (read_minibuf): Cast `current_column' return value to int.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 45408
diff changeset
709 minibuf_prompt_width = (int) current_column (); /* iftc */
1ae71892eb5f (read_minibuf): Cast `current_column' return value to int.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 45408
diff changeset
710
14952
cb48d9a50ebc (read_minibuf): Rearrange operations, mainly putting
Richard M. Stallman <rms@gnu.org>
parents: 14667
diff changeset
711 /* Put in the initial input. */
488
4fddd0f0fc33 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 426
diff changeset
712 if (!NILP (initial))
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
713 {
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
714 Finsert (1, &initial);
53251
9bb418538a0f (read_minibuf): Allow INITIAL to be a cons of a string and an integer.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
715 Fforward_char (make_number (pos));
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
716 }
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
717
25354
2049a0c919a1 Remove conditional compilation on
Gerd Moellmann <gerd@gnu.org>
parents: 25014
diff changeset
718 clear_message (1, 1);
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
719 current_buffer->keymap = map;
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
720
19545
a7f1c1acde93 (Qcurrent_input_method, Qactivate_input_method): New
Kenichi Handa <handa@m17n.org>
parents: 19417
diff changeset
721 /* Turn on an input method stored in INPUT_METHOD if any. */
19728
6fad157cece4 (read_minibuf): Fix use of Ffboundp.
Richard M. Stallman <rms@gnu.org>
parents: 19672
diff changeset
722 if (STRINGP (input_method) && !NILP (Ffboundp (Qactivate_input_method)))
19545
a7f1c1acde93 (Qcurrent_input_method, Qactivate_input_method): New
Kenichi Handa <handa@m17n.org>
parents: 19417
diff changeset
723 call1 (Qactivate_input_method, input_method);
a7f1c1acde93 (Qcurrent_input_method, Qactivate_input_method): New
Kenichi Handa <handa@m17n.org>
parents: 19417
diff changeset
724
4550
f189820e7ea7 (Qminibuffer_setup_hook, Vminibuffer_setup_hook): New vars.
Richard M. Stallman <rms@gnu.org>
parents: 4102
diff changeset
725 /* Run our hook, but not if it is empty.
f189820e7ea7 (Qminibuffer_setup_hook, Vminibuffer_setup_hook): New vars.
Richard M. Stallman <rms@gnu.org>
parents: 4102
diff changeset
726 (run-hooks would do nothing if it is empty,
43000
c16f32068114 (Fread_from_minibuffer, Fread_command, Fread_function)
Pavel Janík <Pavel@Janik.cz>
parents: 42881
diff changeset
727 but it's important to save time here in the usual case.) */
6207
993ca5adfcd1 (read_minibuf): Don't call Vrun_hooks if it is nil.
Richard M. Stallman <rms@gnu.org>
parents: 6161
diff changeset
728 if (!NILP (Vminibuffer_setup_hook) && !EQ (Vminibuffer_setup_hook, Qunbound)
993ca5adfcd1 (read_minibuf): Don't call Vrun_hooks if it is nil.
Richard M. Stallman <rms@gnu.org>
parents: 6161
diff changeset
729 && !NILP (Vrun_hooks))
4550
f189820e7ea7 (Qminibuffer_setup_hook, Vminibuffer_setup_hook): New vars.
Richard M. Stallman <rms@gnu.org>
parents: 4102
diff changeset
730 call1 (Vrun_hooks, Qminibuffer_setup_hook);
f189820e7ea7 (Qminibuffer_setup_hook, Vminibuffer_setup_hook): New vars.
Richard M. Stallman <rms@gnu.org>
parents: 4102
diff changeset
731
33088
9d03916282c9 (read_minibuf): Reset the undo history just before starting the recursive-edit.
Miles Bader <miles@gnu.org>
parents: 32988
diff changeset
732 /* Don't allow the user to undo past this point. */
9d03916282c9 (read_minibuf): Reset the undo history just before starting the recursive-edit.
Miles Bader <miles@gnu.org>
parents: 32988
diff changeset
733 current_buffer->undo_list = Qnil;
9d03916282c9 (read_minibuf): Reset the undo history just before starting the recursive-edit.
Miles Bader <miles@gnu.org>
parents: 32988
diff changeset
734
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
735 recursive_edit_1 ();
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
736
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
737 /* If cursor is on the minibuffer line,
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
738 show the user we have exited by putting it in column 0. */
25014
1c522baf1a3c (read_minibuf): Reset echo message strings to nil.
Gerd Moellmann <gerd@gnu.org>
parents: 24918
diff changeset
739 if (XWINDOW (minibuf_window)->cursor.vpos >= 0
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
740 && !noninteractive)
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
741 {
25014
1c522baf1a3c (read_minibuf): Reset echo message strings to nil.
Gerd Moellmann <gerd@gnu.org>
parents: 24918
diff changeset
742 XWINDOW (minibuf_window)->cursor.hpos = 0;
1c522baf1a3c (read_minibuf): Reset echo message strings to nil.
Gerd Moellmann <gerd@gnu.org>
parents: 24918
diff changeset
743 XWINDOW (minibuf_window)->cursor.x = 0;
1c522baf1a3c (read_minibuf): Reset echo message strings to nil.
Gerd Moellmann <gerd@gnu.org>
parents: 24918
diff changeset
744 XWINDOW (minibuf_window)->must_be_updated_p = 1;
25673
b8bc6e792b2f (choose_minibuf_frame): Don't try to set the
Gerd Moellmann <gerd@gnu.org>
parents: 25658
diff changeset
745 update_frame (XFRAME (selected_frame), 1, 1);
82992
5de4189e659d Got rid of the rif (window-based redisplay interface) global variable.
Karoly Lorentey <lorentey@elte.hu>
parents: 53364
diff changeset
746 {
5de4189e659d Got rid of the rif (window-based redisplay interface) global variable.
Karoly Lorentey <lorentey@elte.hu>
parents: 53364
diff changeset
747 struct frame *f = XFRAME (XWINDOW (minibuf_window)->frame);
5de4189e659d Got rid of the rif (window-based redisplay interface) global variable.
Karoly Lorentey <lorentey@elte.hu>
parents: 53364
diff changeset
748 struct redisplay_interface *rif = FRAME_RIF (f);
5de4189e659d Got rid of the rif (window-based redisplay interface) global variable.
Karoly Lorentey <lorentey@elte.hu>
parents: 53364
diff changeset
749 if (rif && rif->flush_display)
5de4189e659d Got rid of the rif (window-based redisplay interface) global variable.
Karoly Lorentey <lorentey@elte.hu>
parents: 53364
diff changeset
750 rif->flush_display (f);
5de4189e659d Got rid of the rif (window-based redisplay interface) global variable.
Karoly Lorentey <lorentey@elte.hu>
parents: 53364
diff changeset
751 }
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
752 }
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
753
18444
825ff9e2e44e (read_minibuf): New arg allow_props.
Richard M. Stallman <rms@gnu.org>
parents: 17805
diff changeset
754 /* Make minibuffer contents into a string. */
17387
b0d63d297969 (read_minibuf): Get the string from the minibuffer
Richard M. Stallman <rms@gnu.org>
parents: 17375
diff changeset
755 Fset_buffer (minibuffer);
27611
d9295615b99f (read_minibuf_noninteractive): Remove undeclared gcpro1, gcpro2.
Dave Love <fx@gnu.org>
parents: 27284
diff changeset
756 if (allow_props)
39595
d184cf4318ee (Fminibuffer_prompt_end, Fminibuffer_contents)
Miles Bader <miles@gnu.org>
parents: 39581
diff changeset
757 val = Fminibuffer_contents ();
27611
d9295615b99f (read_minibuf_noninteractive): Remove undeclared gcpro1, gcpro2.
Dave Love <fx@gnu.org>
parents: 27284
diff changeset
758 else
39595
d184cf4318ee (Fminibuffer_prompt_end, Fminibuffer_contents)
Miles Bader <miles@gnu.org>
parents: 39581
diff changeset
759 val = Fminibuffer_contents_no_properties ();
864
fe5f6b7c9727 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 765
diff changeset
760
4824
eaf67474339b (Fminibuffer_complete_word): GCPRO1 `completion' during calls to
Brian Fox <bfox@gnu.org>
parents: 4775
diff changeset
761 /* VAL is the string of minibuffer text. */
20075
de449ef32afd (read_minibuf): Return DEFALT here, if minibuffer is empty.
Karl Heuer <kwzh@gnu.org>
parents: 19902
diff changeset
762
4824
eaf67474339b (Fminibuffer_complete_word): GCPRO1 `completion' during calls to
Brian Fox <bfox@gnu.org>
parents: 4775
diff changeset
763 last_minibuf_string = val;
eaf67474339b (Fminibuffer_complete_word): GCPRO1 `completion' during calls to
Brian Fox <bfox@gnu.org>
parents: 4775
diff changeset
764
51039
e7e3f38afa3e (read_minibuf): If buffer is empty, record the default in the history.
Richard M. Stallman <rms@gnu.org>
parents: 50538
diff changeset
765 /* Choose the string to add to the history. */
70930
f3ddca90b6b1 (read_minibuf): Remove arg KEEP_ALL. Callers changed.
Juri Linkov <juri@jurta.org>
parents: 70499
diff changeset
766 if (SCHARS (val) != 0)
51039
e7e3f38afa3e (read_minibuf): If buffer is empty, record the default in the history.
Richard M. Stallman <rms@gnu.org>
parents: 50538
diff changeset
767 histstring = val;
e7e3f38afa3e (read_minibuf): If buffer is empty, record the default in the history.
Richard M. Stallman <rms@gnu.org>
parents: 50538
diff changeset
768 else if (STRINGP (defalt))
e7e3f38afa3e (read_minibuf): If buffer is empty, record the default in the history.
Richard M. Stallman <rms@gnu.org>
parents: 50538
diff changeset
769 histstring = defalt;
85516
6260015b7802 Allow minibuffer default to be a list of default values.
Juri Linkov <juri@jurta.org>
parents: 85372
diff changeset
770 else if (CONSP (defalt) && STRINGP (XCAR (defalt)))
6260015b7802 Allow minibuffer default to be a list of default values.
Juri Linkov <juri@jurta.org>
parents: 85372
diff changeset
771 histstring = XCAR (defalt);
51039
e7e3f38afa3e (read_minibuf): If buffer is empty, record the default in the history.
Richard M. Stallman <rms@gnu.org>
parents: 50538
diff changeset
772 else
e7e3f38afa3e (read_minibuf): If buffer is empty, record the default in the history.
Richard M. Stallman <rms@gnu.org>
parents: 50538
diff changeset
773 histstring = Qnil;
e7e3f38afa3e (read_minibuf): If buffer is empty, record the default in the history.
Richard M. Stallman <rms@gnu.org>
parents: 50538
diff changeset
774
e7e3f38afa3e (read_minibuf): If buffer is empty, record the default in the history.
Richard M. Stallman <rms@gnu.org>
parents: 50538
diff changeset
775 /* Add the value to the appropriate history list, if any. */
71120
3c66cf4b4ded (Vhistory_add_new_input): New variable.
Juri Linkov <juri@jurta.org>
parents: 70930
diff changeset
776 if (!NILP (Vhistory_add_new_input)
3c66cf4b4ded (Vhistory_add_new_input): New variable.
Juri Linkov <juri@jurta.org>
parents: 70930
diff changeset
777 && SYMBOLP (Vminibuffer_history_variable)
51039
e7e3f38afa3e (read_minibuf): If buffer is empty, record the default in the history.
Richard M. Stallman <rms@gnu.org>
parents: 50538
diff changeset
778 && !NILP (histstring))
9615
f696aae6c5e0 (read_minibuf): Undo previous change.
Richard M. Stallman <rms@gnu.org>
parents: 9583
diff changeset
779 {
f696aae6c5e0 (read_minibuf): Undo previous change.
Richard M. Stallman <rms@gnu.org>
parents: 9583
diff changeset
780 /* If the caller wanted to save the value read on a history list,
f696aae6c5e0 (read_minibuf): Undo previous change.
Richard M. Stallman <rms@gnu.org>
parents: 9583
diff changeset
781 then do so if the value is not already the front of the list. */
f696aae6c5e0 (read_minibuf): Undo previous change.
Richard M. Stallman <rms@gnu.org>
parents: 9583
diff changeset
782 Lisp_Object histval;
22137
2b0e6a1e7fb9 (read_minibuf): If history list var is void, make it nil.
Richard M. Stallman <rms@gnu.org>
parents: 22048
diff changeset
783
2b0e6a1e7fb9 (read_minibuf): If history list var is void, make it nil.
Richard M. Stallman <rms@gnu.org>
parents: 22048
diff changeset
784 /* If variable is unbound, make it nil. */
95107
ab4a75e53461 (Finternal_complete_buffer): Only strip out hidden buffers
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94963
diff changeset
785
ab4a75e53461 (Finternal_complete_buffer): Only strip out hidden buffers
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94963
diff changeset
786 histval = find_symbol_value (Vminibuffer_history_variable);
ab4a75e53461 (Finternal_complete_buffer): Only strip out hidden buffers
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94963
diff changeset
787 if (EQ (histval, Qunbound))
22137
2b0e6a1e7fb9 (read_minibuf): If history list var is void, make it nil.
Richard M. Stallman <rms@gnu.org>
parents: 22048
diff changeset
788 Fset (Vminibuffer_history_variable, Qnil);
2b0e6a1e7fb9 (read_minibuf): If history list var is void, make it nil.
Richard M. Stallman <rms@gnu.org>
parents: 22048
diff changeset
789
9615
f696aae6c5e0 (read_minibuf): Undo previous change.
Richard M. Stallman <rms@gnu.org>
parents: 9583
diff changeset
790 /* The value of the history variable must be a cons or nil. Other
f696aae6c5e0 (read_minibuf): Undo previous change.
Richard M. Stallman <rms@gnu.org>
parents: 9583
diff changeset
791 values are unacceptable. We silently ignore these values. */
51039
e7e3f38afa3e (read_minibuf): If buffer is empty, record the default in the history.
Richard M. Stallman <rms@gnu.org>
parents: 50538
diff changeset
792
9615
f696aae6c5e0 (read_minibuf): Undo previous change.
Richard M. Stallman <rms@gnu.org>
parents: 9583
diff changeset
793 if (NILP (histval)
f696aae6c5e0 (read_minibuf): Undo previous change.
Richard M. Stallman <rms@gnu.org>
parents: 9583
diff changeset
794 || (CONSP (histval)
51039
e7e3f38afa3e (read_minibuf): If buffer is empty, record the default in the history.
Richard M. Stallman <rms@gnu.org>
parents: 50538
diff changeset
795 /* Don't duplicate the most recent entry in the history. */
70930
f3ddca90b6b1 (read_minibuf): Remove arg KEEP_ALL. Callers changed.
Juri Linkov <juri@jurta.org>
parents: 70499
diff changeset
796 && (NILP (Fequal (histstring, Fcar (histval))))))
15967
b791ab74ff30 (Vhistory_length, Qhistory_length): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 15835
diff changeset
797 {
b791ab74ff30 (Vhistory_length, Qhistory_length): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 15835
diff changeset
798 Lisp_Object length;
b791ab74ff30 (Vhistory_length, Qhistory_length): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 15835
diff changeset
799
57016
eda556d106c6 (history_delete_duplicates): New variable.
Juri Linkov <juri@jurta.org>
parents: 56666
diff changeset
800 if (history_delete_duplicates) Fdelete (histstring, histval);
51039
e7e3f38afa3e (read_minibuf): If buffer is empty, record the default in the history.
Richard M. Stallman <rms@gnu.org>
parents: 50538
diff changeset
801 histval = Fcons (histstring, histval);
15967
b791ab74ff30 (Vhistory_length, Qhistory_length): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 15835
diff changeset
802 Fset (Vminibuffer_history_variable, histval);
b791ab74ff30 (Vhistory_length, Qhistory_length): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 15835
diff changeset
803
b791ab74ff30 (Vhistory_length, Qhistory_length): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 15835
diff changeset
804 /* Truncate if requested. */
b791ab74ff30 (Vhistory_length, Qhistory_length): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 15835
diff changeset
805 length = Fget (Vminibuffer_history_variable, Qhistory_length);
b791ab74ff30 (Vhistory_length, Qhistory_length): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 15835
diff changeset
806 if (NILP (length)) length = Vhistory_length;
17737
f79f2d6b119b (Fread_command): New optional arg DEFAULT-VALUE. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 17387
diff changeset
807 if (INTEGERP (length))
f79f2d6b119b (Fread_command): New optional arg DEFAULT-VALUE. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 17387
diff changeset
808 {
f79f2d6b119b (Fread_command): New optional arg DEFAULT-VALUE. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 17387
diff changeset
809 if (XINT (length) <= 0)
f79f2d6b119b (Fread_command): New optional arg DEFAULT-VALUE. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 17387
diff changeset
810 Fset (Vminibuffer_history_variable, Qnil);
f79f2d6b119b (Fread_command): New optional arg DEFAULT-VALUE. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 17387
diff changeset
811 else
f79f2d6b119b (Fread_command): New optional arg DEFAULT-VALUE. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 17387
diff changeset
812 {
f79f2d6b119b (Fread_command): New optional arg DEFAULT-VALUE. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 17387
diff changeset
813 Lisp_Object temp;
15967
b791ab74ff30 (Vhistory_length, Qhistory_length): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 15835
diff changeset
814
17737
f79f2d6b119b (Fread_command): New optional arg DEFAULT-VALUE. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 17387
diff changeset
815 temp = Fnthcdr (Fsub1 (length), histval);
f79f2d6b119b (Fread_command): New optional arg DEFAULT-VALUE. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 17387
diff changeset
816 if (CONSP (temp)) Fsetcdr (temp, Qnil);
f79f2d6b119b (Fread_command): New optional arg DEFAULT-VALUE. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 17387
diff changeset
817 }
f79f2d6b119b (Fread_command): New optional arg DEFAULT-VALUE. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 17387
diff changeset
818 }
15967
b791ab74ff30 (Vhistory_length, Qhistory_length): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 15835
diff changeset
819 }
9615
f696aae6c5e0 (read_minibuf): Undo previous change.
Richard M. Stallman <rms@gnu.org>
parents: 9583
diff changeset
820 }
f696aae6c5e0 (read_minibuf): Undo previous change.
Richard M. Stallman <rms@gnu.org>
parents: 9583
diff changeset
821
5069
47cc31b47402 (read_minibuf): History list always gets strings,
Richard M. Stallman <rms@gnu.org>
parents: 4824
diff changeset
822 /* If Lisp form desired instead of string, parse it. */
47cc31b47402 (read_minibuf): History list always gets strings,
Richard M. Stallman <rms@gnu.org>
parents: 4824
diff changeset
823 if (expflag)
26320
d3926d907840 (string_to_object): New.
Gerd Moellmann <gerd@gnu.org>
parents: 26164
diff changeset
824 val = string_to_object (val, defalt);
5069
47cc31b47402 (read_minibuf): History list always gets strings,
Richard M. Stallman <rms@gnu.org>
parents: 4824
diff changeset
825
10249
a664a948dd55 (read_minibuf): GCPRO things.
Richard M. Stallman <rms@gnu.org>
parents: 10173
diff changeset
826 /* The appropriate frame will get selected
a664a948dd55 (read_minibuf): GCPRO things.
Richard M. Stallman <rms@gnu.org>
parents: 10173
diff changeset
827 in set-window-configuration. */
51781
bd0acf8d5f97 (read_minibuf): UNGCPRO before returning.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51200
diff changeset
828 UNGCPRO;
bd0acf8d5f97 (read_minibuf): UNGCPRO before returning.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51200
diff changeset
829 return unbind_to (count, val);
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
830 }
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
831
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
832 /* Return a buffer to be used as the minibuffer at depth `depth'.
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
833 depth = 0 is the lowest allowed argument, and that is the value
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
834 used for nonrecursive minibuffer invocations */
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
835
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
836 Lisp_Object
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
837 get_minibuffer (depth)
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
838 int depth;
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
839 {
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
840 Lisp_Object tail, num, buf;
6235
d93350e9d2bc (get_minibuffer): Make name buffer large enough.
Karl Heuer <kwzh@gnu.org>
parents: 6234
diff changeset
841 char name[24];
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
842 extern Lisp_Object nconc2 ();
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
843
9316
5f7cfbdef872 (read_minibuf, get_minibuffer, read_minibuf_unwind, Fread_from_minibuffer,
Karl Heuer <kwzh@gnu.org>
parents: 9183
diff changeset
844 XSETFASTINT (num, depth);
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
845 tail = Fnthcdr (num, Vminibuffer_list);
488
4fddd0f0fc33 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 426
diff changeset
846 if (NILP (tail))
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
847 {
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
848 tail = Fcons (Qnil, Qnil);
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
849 Vminibuffer_list = nconc2 (Vminibuffer_list, tail);
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
850 }
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
851 buf = Fcar (tail);
488
4fddd0f0fc33 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 426
diff changeset
852 if (NILP (buf) || NILP (XBUFFER (buf)->name))
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
853 {
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
854 sprintf (name, " *Minibuf-%d*", depth);
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
855 buf = Fget_buffer_create (build_string (name));
1198
7c4519722020 Thu Sep 17 15:51:18 1992 Jim Blandy (jimb@pogo.cs.oberlin.edu)
Jim Blandy <jimb@redhat.com>
parents: 1010
diff changeset
856
7c4519722020 Thu Sep 17 15:51:18 1992 Jim Blandy (jimb@pogo.cs.oberlin.edu)
Jim Blandy <jimb@redhat.com>
parents: 1010
diff changeset
857 /* Although the buffer's name starts with a space, undo should be
7c4519722020 Thu Sep 17 15:51:18 1992 Jim Blandy (jimb@pogo.cs.oberlin.edu)
Jim Blandy <jimb@redhat.com>
parents: 1010
diff changeset
858 enabled in it. */
7c4519722020 Thu Sep 17 15:51:18 1992 Jim Blandy (jimb@pogo.cs.oberlin.edu)
Jim Blandy <jimb@redhat.com>
parents: 1010
diff changeset
859 Fbuffer_enable_undo (buf);
7c4519722020 Thu Sep 17 15:51:18 1992 Jim Blandy (jimb@pogo.cs.oberlin.edu)
Jim Blandy <jimb@redhat.com>
parents: 1010
diff changeset
860
39973
579177964efa Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting
Ken Raeburn <raeburn@raeburn.org>
parents: 39966
diff changeset
861 XSETCAR (tail, buf);
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
862 }
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
863 else
8872
0f20e5e19ed6 (get_minibuffer): Call Fkill_all_local_variables.
Richard M. Stallman <rms@gnu.org>
parents: 8790
diff changeset
864 {
46293
1fb8f75062c6 Use macro SPECPDL_INDEX.
Juanma Barranquero <lekktu@gmail.com>
parents: 46285
diff changeset
865 int count = SPECPDL_INDEX ();
52005
3e9cb0aeebe1 (get_minibuffer): Be careful when calling `reset_buffer'
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51781
diff changeset
866 /* `reset_buffer' blindly sets the list of overlays to NULL, so we
3e9cb0aeebe1 (get_minibuffer): Be careful when calling `reset_buffer'
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51781
diff changeset
867 have to empty the list, otherwise we end up with overlays that
3e9cb0aeebe1 (get_minibuffer): Be careful when calling `reset_buffer'
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51781
diff changeset
868 think they belong to this buffer while the buffer doesn't know about
3e9cb0aeebe1 (get_minibuffer): Be careful when calling `reset_buffer'
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51781
diff changeset
869 them any more. */
52014
292d2d0762b8 (get_minibuffer): Use it.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52005
diff changeset
870 delete_all_overlays (XBUFFER (buf));
292d2d0762b8 (get_minibuffer): Use it.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52005
diff changeset
871 reset_buffer (XBUFFER (buf));
9001
69f0ae06bcdf (Fcompleting_read): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 8899
diff changeset
872 record_unwind_protect (Fset_buffer, Fcurrent_buffer ());
69f0ae06bcdf (Fcompleting_read): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 8899
diff changeset
873 Fset_buffer (buf);
69f0ae06bcdf (Fcompleting_read): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 8899
diff changeset
874 Fkill_all_local_variables ();
69f0ae06bcdf (Fcompleting_read): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 8899
diff changeset
875 unbind_to (count, Qnil);
8872
0f20e5e19ed6 (get_minibuffer): Call Fkill_all_local_variables.
Richard M. Stallman <rms@gnu.org>
parents: 8790
diff changeset
876 }
1593
a3862c6dfcd0 * minibuf.c (temp_echo_area_glyphs): Change reference to
Jim Blandy <jimb@redhat.com>
parents: 1568
diff changeset
877
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
878 return buf;
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
879 }
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
880
55795
1e94f291a19c (run_exit_minibuf_hook): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53827
diff changeset
881 static Lisp_Object
1e94f291a19c (run_exit_minibuf_hook): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53827
diff changeset
882 run_exit_minibuf_hook (data)
1e94f291a19c (run_exit_minibuf_hook): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53827
diff changeset
883 Lisp_Object data;
1e94f291a19c (run_exit_minibuf_hook): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53827
diff changeset
884 {
1e94f291a19c (run_exit_minibuf_hook): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53827
diff changeset
885 if (!NILP (Vminibuffer_exit_hook) && !EQ (Vminibuffer_exit_hook, Qunbound)
1e94f291a19c (run_exit_minibuf_hook): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53827
diff changeset
886 && !NILP (Vrun_hooks))
1e94f291a19c (run_exit_minibuf_hook): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53827
diff changeset
887 safe_run_hooks (Qminibuffer_exit_hook);
1e94f291a19c (run_exit_minibuf_hook): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53827
diff changeset
888
1e94f291a19c (run_exit_minibuf_hook): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53827
diff changeset
889 return Qnil;
1e94f291a19c (run_exit_minibuf_hook): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53827
diff changeset
890 }
1e94f291a19c (run_exit_minibuf_hook): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53827
diff changeset
891
25014
1c522baf1a3c (read_minibuf): Reset echo message strings to nil.
Gerd Moellmann <gerd@gnu.org>
parents: 24918
diff changeset
892 /* This function is called on exiting minibuffer, whether normally or
1c522baf1a3c (read_minibuf): Reset echo message strings to nil.
Gerd Moellmann <gerd@gnu.org>
parents: 24918
diff changeset
893 not, and it restores the current window, buffer, etc. */
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
894
20302
5b3bc7f24d51 (read_minibuf_unwind): Fix return type and return nil.
Andreas Schwab <schwab@suse.de>
parents: 20075
diff changeset
895 static Lisp_Object
358
71c9042fb90d *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 345
diff changeset
896 read_minibuf_unwind (data)
71c9042fb90d *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 345
diff changeset
897 Lisp_Object data;
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
898 {
9049
522a9e03ca05 (read_minibuf_unwind): Preserve Vdeactivate_mark.
Richard M. Stallman <rms@gnu.org>
parents: 9001
diff changeset
899 Lisp_Object old_deactivate_mark;
14667
3de266c52c9a (read_minibuf): Bind inhibit-read-only to t around clearing the minibuffer.
Richard M. Stallman <rms@gnu.org>
parents: 14435
diff changeset
900 Lisp_Object window;
9049
522a9e03ca05 (read_minibuf_unwind): Preserve Vdeactivate_mark.
Richard M. Stallman <rms@gnu.org>
parents: 9001
diff changeset
901
14667
3de266c52c9a (read_minibuf): Bind inhibit-read-only to t around clearing the minibuffer.
Richard M. Stallman <rms@gnu.org>
parents: 14435
diff changeset
902 /* If this was a recursive minibuffer,
3de266c52c9a (read_minibuf): Bind inhibit-read-only to t around clearing the minibuffer.
Richard M. Stallman <rms@gnu.org>
parents: 14435
diff changeset
903 tie the minibuffer window back to the outer level minibuffer buffer. */
3de266c52c9a (read_minibuf): Bind inhibit-read-only to t around clearing the minibuffer.
Richard M. Stallman <rms@gnu.org>
parents: 14435
diff changeset
904 minibuf_level--;
9049
522a9e03ca05 (read_minibuf_unwind): Preserve Vdeactivate_mark.
Richard M. Stallman <rms@gnu.org>
parents: 9001
diff changeset
905
14667
3de266c52c9a (read_minibuf): Bind inhibit-read-only to t around clearing the minibuffer.
Richard M. Stallman <rms@gnu.org>
parents: 14435
diff changeset
906 window = minibuf_window;
25014
1c522baf1a3c (read_minibuf): Reset echo message strings to nil.
Gerd Moellmann <gerd@gnu.org>
parents: 24918
diff changeset
907 /* To keep things predictable, in case it matters, let's be in the
1c522baf1a3c (read_minibuf): Reset echo message strings to nil.
Gerd Moellmann <gerd@gnu.org>
parents: 24918
diff changeset
908 minibuffer when we reset the relevant variables. */
14667
3de266c52c9a (read_minibuf): Bind inhibit-read-only to t around clearing the minibuffer.
Richard M. Stallman <rms@gnu.org>
parents: 14435
diff changeset
909 Fset_buffer (XWINDOW (window)->buffer);
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
910
14667
3de266c52c9a (read_minibuf): Bind inhibit-read-only to t around clearing the minibuffer.
Richard M. Stallman <rms@gnu.org>
parents: 14435
diff changeset
911 /* Restore prompt, etc, from outer minibuffer level. */
7952
9e2e0fdd1710 (minibuf_save_list): New variable, replaces minibuf_save_vector.
Karl Heuer <kwzh@gnu.org>
parents: 7836
diff changeset
912 minibuf_prompt = Fcar (minibuf_save_list);
9e2e0fdd1710 (minibuf_save_list): New variable, replaces minibuf_save_vector.
Karl Heuer <kwzh@gnu.org>
parents: 7836
diff changeset
913 minibuf_save_list = Fcdr (minibuf_save_list);
9e2e0fdd1710 (minibuf_save_list): New variable, replaces minibuf_save_vector.
Karl Heuer <kwzh@gnu.org>
parents: 7836
diff changeset
914 minibuf_prompt_width = XFASTINT (Fcar (minibuf_save_list));
9e2e0fdd1710 (minibuf_save_list): New variable, replaces minibuf_save_vector.
Karl Heuer <kwzh@gnu.org>
parents: 7836
diff changeset
915 minibuf_save_list = Fcdr (minibuf_save_list);
9e2e0fdd1710 (minibuf_save_list): New variable, replaces minibuf_save_vector.
Karl Heuer <kwzh@gnu.org>
parents: 7836
diff changeset
916 Vhelp_form = Fcar (minibuf_save_list);
9e2e0fdd1710 (minibuf_save_list): New variable, replaces minibuf_save_vector.
Karl Heuer <kwzh@gnu.org>
parents: 7836
diff changeset
917 minibuf_save_list = Fcdr (minibuf_save_list);
10859
1af826d1d91d (read_minibuf, read_minibuf_unwind): Undo Jan 31 change.
Karl Heuer <kwzh@gnu.org>
parents: 10818
diff changeset
918 Vcurrent_prefix_arg = Fcar (minibuf_save_list);
7952
9e2e0fdd1710 (minibuf_save_list): New variable, replaces minibuf_save_vector.
Karl Heuer <kwzh@gnu.org>
parents: 7836
diff changeset
919 minibuf_save_list = Fcdr (minibuf_save_list);
9e2e0fdd1710 (minibuf_save_list): New variable, replaces minibuf_save_vector.
Karl Heuer <kwzh@gnu.org>
parents: 7836
diff changeset
920 Vminibuffer_history_position = Fcar (minibuf_save_list);
9e2e0fdd1710 (minibuf_save_list): New variable, replaces minibuf_save_vector.
Karl Heuer <kwzh@gnu.org>
parents: 7836
diff changeset
921 minibuf_save_list = Fcdr (minibuf_save_list);
9e2e0fdd1710 (minibuf_save_list): New variable, replaces minibuf_save_vector.
Karl Heuer <kwzh@gnu.org>
parents: 7836
diff changeset
922 Vminibuffer_history_variable = Fcar (minibuf_save_list);
9e2e0fdd1710 (minibuf_save_list): New variable, replaces minibuf_save_vector.
Karl Heuer <kwzh@gnu.org>
parents: 7836
diff changeset
923 minibuf_save_list = Fcdr (minibuf_save_list);
11004
0f6b7b33340a (read_minibuf): Save Voverriding_local_map.
Richard M. Stallman <rms@gnu.org>
parents: 10859
diff changeset
924 Voverriding_local_map = Fcar (minibuf_save_list);
0f6b7b33340a (read_minibuf): Save Voverriding_local_map.
Richard M. Stallman <rms@gnu.org>
parents: 10859
diff changeset
925 minibuf_save_list = Fcdr (minibuf_save_list);
16475
2602c284eb11 (read_minibuf_unwind): Don't restore minibuf_window;
Richard M. Stallman <rms@gnu.org>
parents: 16265
diff changeset
926 #if 0
2602c284eb11 (read_minibuf_unwind): Don't restore minibuf_window;
Richard M. Stallman <rms@gnu.org>
parents: 16265
diff changeset
927 temp = Fcar (minibuf_save_list);
2602c284eb11 (read_minibuf_unwind): Don't restore minibuf_window;
Richard M. Stallman <rms@gnu.org>
parents: 16265
diff changeset
928 if (FRAME_LIVE_P (XFRAME (WINDOW_FRAME (XWINDOW (temp)))))
2602c284eb11 (read_minibuf_unwind): Don't restore minibuf_window;
Richard M. Stallman <rms@gnu.org>
parents: 16265
diff changeset
929 minibuf_window = temp;
2602c284eb11 (read_minibuf_unwind): Don't restore minibuf_window;
Richard M. Stallman <rms@gnu.org>
parents: 16265
diff changeset
930 #endif
12631
ab75fc26058e (read_minibuf): Call choose_minibuffer_frame.
Richard M. Stallman <rms@gnu.org>
parents: 12164
diff changeset
931 minibuf_save_list = Fcdr (minibuf_save_list);
14667
3de266c52c9a (read_minibuf): Bind inhibit-read-only to t around clearing the minibuffer.
Richard M. Stallman <rms@gnu.org>
parents: 14435
diff changeset
932
3de266c52c9a (read_minibuf): Bind inhibit-read-only to t around clearing the minibuffer.
Richard M. Stallman <rms@gnu.org>
parents: 14435
diff changeset
933 /* Erase the minibuffer we were using at this level. */
3de266c52c9a (read_minibuf): Bind inhibit-read-only to t around clearing the minibuffer.
Richard M. Stallman <rms@gnu.org>
parents: 14435
diff changeset
934 {
46293
1fb8f75062c6 Use macro SPECPDL_INDEX.
Juanma Barranquero <lekktu@gmail.com>
parents: 46285
diff changeset
935 int count = SPECPDL_INDEX ();
14667
3de266c52c9a (read_minibuf): Bind inhibit-read-only to t around clearing the minibuffer.
Richard M. Stallman <rms@gnu.org>
parents: 14435
diff changeset
936 /* Prevent error in erase-buffer. */
3de266c52c9a (read_minibuf): Bind inhibit-read-only to t around clearing the minibuffer.
Richard M. Stallman <rms@gnu.org>
parents: 14435
diff changeset
937 specbind (Qinhibit_read_only, Qt);
39250
5921e30bf534 (read_minibuf_unwind): Bind inhibit-modification-hooks.
Gerd Moellmann <gerd@gnu.org>
parents: 39248
diff changeset
938 specbind (Qinhibit_modification_hooks, Qt);
14667
3de266c52c9a (read_minibuf): Bind inhibit-read-only to t around clearing the minibuffer.
Richard M. Stallman <rms@gnu.org>
parents: 14435
diff changeset
939 old_deactivate_mark = Vdeactivate_mark;
3de266c52c9a (read_minibuf): Bind inhibit-read-only to t around clearing the minibuffer.
Richard M. Stallman <rms@gnu.org>
parents: 14435
diff changeset
940 Ferase_buffer ();
3de266c52c9a (read_minibuf): Bind inhibit-read-only to t around clearing the minibuffer.
Richard M. Stallman <rms@gnu.org>
parents: 14435
diff changeset
941 Vdeactivate_mark = old_deactivate_mark;
3de266c52c9a (read_minibuf): Bind inhibit-read-only to t around clearing the minibuffer.
Richard M. Stallman <rms@gnu.org>
parents: 14435
diff changeset
942 unbind_to (count, Qnil);
3de266c52c9a (read_minibuf): Bind inhibit-read-only to t around clearing the minibuffer.
Richard M. Stallman <rms@gnu.org>
parents: 14435
diff changeset
943 }
3de266c52c9a (read_minibuf): Bind inhibit-read-only to t around clearing the minibuffer.
Richard M. Stallman <rms@gnu.org>
parents: 14435
diff changeset
944
25516
866049050d67 (read_minibuf_unwind): Resize mini-window when
Gerd Moellmann <gerd@gnu.org>
parents: 25478
diff changeset
945 /* When we get to the outmost level, make sure we resize the
866049050d67 (read_minibuf_unwind): Resize mini-window when
Gerd Moellmann <gerd@gnu.org>
parents: 25478
diff changeset
946 mini-window back to its normal size. */
866049050d67 (read_minibuf_unwind): Resize mini-window when
Gerd Moellmann <gerd@gnu.org>
parents: 25478
diff changeset
947 if (minibuf_level == 0)
25658
a9f38bb7f815 (read_minibuf_unwind): Call resize_mini_window with
Gerd Moellmann <gerd@gnu.org>
parents: 25612
diff changeset
948 resize_mini_window (XWINDOW (window), 0);
25516
866049050d67 (read_minibuf_unwind): Resize mini-window when
Gerd Moellmann <gerd@gnu.org>
parents: 25478
diff changeset
949
14667
3de266c52c9a (read_minibuf): Bind inhibit-read-only to t around clearing the minibuffer.
Richard M. Stallman <rms@gnu.org>
parents: 14435
diff changeset
950 /* Make sure minibuffer window is erased, not ignored. */
3de266c52c9a (read_minibuf): Bind inhibit-read-only to t around clearing the minibuffer.
Richard M. Stallman <rms@gnu.org>
parents: 14435
diff changeset
951 windows_or_buffers_changed++;
3de266c52c9a (read_minibuf): Bind inhibit-read-only to t around clearing the minibuffer.
Richard M. Stallman <rms@gnu.org>
parents: 14435
diff changeset
952 XSETFASTINT (XWINDOW (window)->last_modified, 0);
16211
ff05c19e81ac (read_minibuf_unwind): Clear last_overlay_modified field.
Richard M. Stallman <rms@gnu.org>
parents: 16180
diff changeset
953 XSETFASTINT (XWINDOW (window)->last_overlay_modified, 0);
20302
5b3bc7f24d51 (read_minibuf_unwind): Fix return type and return nil.
Andreas Schwab <schwab@suse.de>
parents: 20075
diff changeset
954 return Qnil;
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
955 }
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
956
1010
b6a67ffc7536 * minibuf.c (Fread_from_minibuffer): Put this function's doc
Jim Blandy <jimb@redhat.com>
parents: 967
diff changeset
957
70930
f3ddca90b6b1 (read_minibuf): Remove arg KEEP_ALL. Callers changed.
Juri Linkov <juri@jurta.org>
parents: 70499
diff changeset
958 DEFUN ("read-from-minibuffer", Fread_from_minibuffer, Sread_from_minibuffer, 1, 7, 0,
39989
c652433b7f2f Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents: 39973
diff changeset
959 doc: /* Read a string from the minibuffer, prompting with string PROMPT.
53827
44d25617bd98 (Fminibufferp, Fread_from_minibuffer)
Luc Teirlinck <teirllm@auburn.edu>
parents: 53364
diff changeset
960 The optional second arg INITIAL-CONTENTS is an obsolete alternative to
44d25617bd98 (Fminibufferp, Fread_from_minibuffer)
Luc Teirlinck <teirllm@auburn.edu>
parents: 53364
diff changeset
961 DEFAULT-VALUE. It normally should be nil in new code, except when
44d25617bd98 (Fminibufferp, Fread_from_minibuffer)
Luc Teirlinck <teirllm@auburn.edu>
parents: 53364
diff changeset
962 HIST is a cons. It is discussed in more detail below.
39966
1c2d486200f3 Put doc strings in comments.
Pavel Janík <Pavel@Janik.cz>
parents: 39838
diff changeset
963 Third arg KEYMAP is a keymap to use whilst reading;
1c2d486200f3 Put doc strings in comments.
Pavel Janík <Pavel@Janik.cz>
parents: 39838
diff changeset
964 if omitted or nil, the default is `minibuffer-local-map'.
43000
c16f32068114 (Fread_from_minibuffer, Fread_command, Fread_function)
Pavel Janík <Pavel@Janik.cz>
parents: 42881
diff changeset
965 If fourth arg READ is non-nil, then interpret the result as a Lisp object
39966
1c2d486200f3 Put doc strings in comments.
Pavel Janík <Pavel@Janik.cz>
parents: 39838
diff changeset
966 and return that object:
1c2d486200f3 Put doc strings in comments.
Pavel Janík <Pavel@Janik.cz>
parents: 39838
diff changeset
967 in other words, do `(car (read-from-string INPUT-STRING))'
53827
44d25617bd98 (Fminibufferp, Fread_from_minibuffer)
Luc Teirlinck <teirllm@auburn.edu>
parents: 53364
diff changeset
968 Fifth arg HIST, if non-nil, specifies a history list and optionally
44d25617bd98 (Fminibufferp, Fread_from_minibuffer)
Luc Teirlinck <teirllm@auburn.edu>
parents: 53364
diff changeset
969 the initial position in the list. It can be a symbol, which is the
44d25617bd98 (Fminibufferp, Fread_from_minibuffer)
Luc Teirlinck <teirllm@auburn.edu>
parents: 53364
diff changeset
970 history list variable to use, or it can be a cons cell
44d25617bd98 (Fminibufferp, Fread_from_minibuffer)
Luc Teirlinck <teirllm@auburn.edu>
parents: 53364
diff changeset
971 (HISTVAR . HISTPOS). In that case, HISTVAR is the history list variable
44d25617bd98 (Fminibufferp, Fread_from_minibuffer)
Luc Teirlinck <teirllm@auburn.edu>
parents: 53364
diff changeset
972 to use, and HISTPOS is the initial position for use by the minibuffer
44d25617bd98 (Fminibufferp, Fread_from_minibuffer)
Luc Teirlinck <teirllm@auburn.edu>
parents: 53364
diff changeset
973 history commands. For consistency, you should also specify that
44d25617bd98 (Fminibufferp, Fread_from_minibuffer)
Luc Teirlinck <teirllm@auburn.edu>
parents: 53364
diff changeset
974 element of the history as the value of INITIAL-CONTENTS. Positions
44d25617bd98 (Fminibufferp, Fread_from_minibuffer)
Luc Teirlinck <teirllm@auburn.edu>
parents: 53364
diff changeset
975 are counted starting from 1 at the beginning of the list.
94528
ea7a33f062ae (Fread_from_minibuffer, Fread_string, Fread_command)
Juri Linkov <juri@jurta.org>
parents: 94189
diff changeset
976 Sixth arg DEFAULT-VALUE is the default value or the list of default values.
ea7a33f062ae (Fread_from_minibuffer, Fread_string, Fread_command)
Juri Linkov <juri@jurta.org>
parents: 94189
diff changeset
977 If non-nil, it is available for history commands, and as the value
ea7a33f062ae (Fread_from_minibuffer, Fread_string, Fread_command)
Juri Linkov <juri@jurta.org>
parents: 94189
diff changeset
978 (or the first element of the list of default values) to return
ea7a33f062ae (Fread_from_minibuffer, Fread_string, Fread_command)
Juri Linkov <juri@jurta.org>
parents: 94189
diff changeset
979 if the user enters the empty string. But, unless READ is non-nil,
ea7a33f062ae (Fread_from_minibuffer, Fread_string, Fread_command)
Juri Linkov <juri@jurta.org>
parents: 94189
diff changeset
980 `read-from-minibuffer' does NOT return DEFAULT-VALUE if the user enters
ea7a33f062ae (Fread_from_minibuffer, Fread_string, Fread_command)
Juri Linkov <juri@jurta.org>
parents: 94189
diff changeset
981 empty input! It returns the empty string.
39966
1c2d486200f3 Put doc strings in comments.
Pavel Janík <Pavel@Janik.cz>
parents: 39838
diff changeset
982 Seventh arg INHERIT-INPUT-METHOD, if non-nil, means the minibuffer inherits
42881
aa810c4a602b (Fminibuffer_contents)
Pavel Janík <Pavel@Janik.cz>
parents: 42168
diff changeset
983 the current input method and the setting of `enable-multibyte-characters'.
39966
1c2d486200f3 Put doc strings in comments.
Pavel Janík <Pavel@Janik.cz>
parents: 39838
diff changeset
984 If the variable `minibuffer-allow-text-properties' is non-nil,
1c2d486200f3 Put doc strings in comments.
Pavel Janík <Pavel@Janik.cz>
parents: 39838
diff changeset
985 then the string which is returned includes whatever text properties
53827
44d25617bd98 (Fminibufferp, Fread_from_minibuffer)
Luc Teirlinck <teirllm@auburn.edu>
parents: 53364
diff changeset
986 were present in the minibuffer. Otherwise the value has no text properties.
44d25617bd98 (Fminibufferp, Fread_from_minibuffer)
Luc Teirlinck <teirllm@auburn.edu>
parents: 53364
diff changeset
987
44d25617bd98 (Fminibufferp, Fread_from_minibuffer)
Luc Teirlinck <teirllm@auburn.edu>
parents: 53364
diff changeset
988 The remainder of this documentation string describes the
44d25617bd98 (Fminibufferp, Fread_from_minibuffer)
Luc Teirlinck <teirllm@auburn.edu>
parents: 53364
diff changeset
989 INITIAL-CONTENTS argument in more detail. It is only relevant when
44d25617bd98 (Fminibufferp, Fread_from_minibuffer)
Luc Teirlinck <teirllm@auburn.edu>
parents: 53364
diff changeset
990 studying existing code, or when HIST is a cons. If non-nil,
44d25617bd98 (Fminibufferp, Fread_from_minibuffer)
Luc Teirlinck <teirllm@auburn.edu>
parents: 53364
diff changeset
991 INITIAL-CONTENTS is a string to be inserted into the minibuffer before
44d25617bd98 (Fminibufferp, Fread_from_minibuffer)
Luc Teirlinck <teirllm@auburn.edu>
parents: 53364
diff changeset
992 reading input. Normally, point is put at the end of that string.
44d25617bd98 (Fminibufferp, Fread_from_minibuffer)
Luc Teirlinck <teirllm@auburn.edu>
parents: 53364
diff changeset
993 However, if INITIAL-CONTENTS is \(STRING . POSITION), the initial
44d25617bd98 (Fminibufferp, Fread_from_minibuffer)
Luc Teirlinck <teirllm@auburn.edu>
parents: 53364
diff changeset
994 input is STRING, but point is placed at _one-indexed_ position
44d25617bd98 (Fminibufferp, Fread_from_minibuffer)
Luc Teirlinck <teirllm@auburn.edu>
parents: 53364
diff changeset
995 POSITION in the minibuffer. Any integer value less than or equal to
44d25617bd98 (Fminibufferp, Fread_from_minibuffer)
Luc Teirlinck <teirllm@auburn.edu>
parents: 53364
diff changeset
996 one puts point at the beginning of the string. *Note* that this
44d25617bd98 (Fminibufferp, Fread_from_minibuffer)
Luc Teirlinck <teirllm@auburn.edu>
parents: 53364
diff changeset
997 behavior differs from the way such arguments are used in `completing-read'
44d25617bd98 (Fminibufferp, Fread_from_minibuffer)
Luc Teirlinck <teirllm@auburn.edu>
parents: 53364
diff changeset
998 and some related functions, which use zero-indexing for POSITION. */)
75060
a222d1be5012 Whitespace change.
Richard M. Stallman <rms@gnu.org>
parents: 74666
diff changeset
999 (prompt, initial_contents, keymap, read, hist, default_value, inherit_input_method)
17737
f79f2d6b119b (Fread_command): New optional arg DEFAULT-VALUE. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 17387
diff changeset
1000 Lisp_Object prompt, initial_contents, keymap, read, hist, default_value;
70930
f3ddca90b6b1 (read_minibuf): Remove arg KEEP_ALL. Callers changed.
Juri Linkov <juri@jurta.org>
parents: 70499
diff changeset
1001 Lisp_Object inherit_input_method;
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1002 {
53251
9bb418538a0f (read_minibuf): Allow INITIAL to be a cons of a string and an integer.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
1003 Lisp_Object histvar, histpos, val;
17805
f1625c2d3db9 (Fread_from_minibuffer): Add gcpro.
Richard M. Stallman <rms@gnu.org>
parents: 17737
diff changeset
1004 struct gcpro gcpro1;
f1625c2d3db9 (Fread_from_minibuffer): Add gcpro.
Richard M. Stallman <rms@gnu.org>
parents: 17737
diff changeset
1005
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40403
diff changeset
1006 CHECK_STRING (prompt);
488
4fddd0f0fc33 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 426
diff changeset
1007 if (NILP (keymap))
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1008 keymap = Vminibuffer_local_map;
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1009 else
32988
c3435dc00ed7 * lisp.h (KEYMAPP): New macro.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32772
diff changeset
1010 keymap = get_keymap (keymap, 1, 0);
864
fe5f6b7c9727 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 765
diff changeset
1011
9120
ed766dfb4efe (read_minibuf, Fread_from_minibuffer, Fread_buffer, Ftry_completion,
Karl Heuer <kwzh@gnu.org>
parents: 9049
diff changeset
1012 if (SYMBOLP (hist))
864
fe5f6b7c9727 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 765
diff changeset
1013 {
fe5f6b7c9727 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 765
diff changeset
1014 histvar = hist;
fe5f6b7c9727 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 765
diff changeset
1015 histpos = Qnil;
fe5f6b7c9727 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 765
diff changeset
1016 }
fe5f6b7c9727 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 765
diff changeset
1017 else
fe5f6b7c9727 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 765
diff changeset
1018 {
fe5f6b7c9727 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 765
diff changeset
1019 histvar = Fcar_safe (hist);
fe5f6b7c9727 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 765
diff changeset
1020 histpos = Fcdr_safe (hist);
fe5f6b7c9727 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 765
diff changeset
1021 }
fe5f6b7c9727 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 765
diff changeset
1022 if (NILP (histvar))
fe5f6b7c9727 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 765
diff changeset
1023 histvar = Qminibuffer_history;
fe5f6b7c9727 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 765
diff changeset
1024 if (NILP (histpos))
9316
5f7cfbdef872 (read_minibuf, get_minibuffer, read_minibuf_unwind, Fread_from_minibuffer,
Karl Heuer <kwzh@gnu.org>
parents: 9183
diff changeset
1025 XSETFASTINT (histpos, 0);
864
fe5f6b7c9727 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 765
diff changeset
1026
17805
f1625c2d3db9 (Fread_from_minibuffer): Add gcpro.
Richard M. Stallman <rms@gnu.org>
parents: 17737
diff changeset
1027 GCPRO1 (default_value);
17737
f79f2d6b119b (Fread_command): New optional arg DEFAULT-VALUE. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 17387
diff changeset
1028 val = read_minibuf (keymap, initial_contents, prompt,
53251
9bb418538a0f (read_minibuf): Allow INITIAL to be a cons of a string and an integer.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
1029 Qnil, !NILP (read),
18444
825ff9e2e44e (read_minibuf): New arg allow_props.
Richard M. Stallman <rms@gnu.org>
parents: 17805
diff changeset
1030 histvar, histpos, default_value,
19545
a7f1c1acde93 (Qcurrent_input_method, Qactivate_input_method): New
Kenichi Handa <handa@m17n.org>
parents: 19417
diff changeset
1031 minibuffer_allow_text_properties,
70930
f3ddca90b6b1 (read_minibuf): Remove arg KEEP_ALL. Callers changed.
Juri Linkov <juri@jurta.org>
parents: 70499
diff changeset
1032 !NILP (inherit_input_method));
17805
f1625c2d3db9 (Fread_from_minibuffer): Add gcpro.
Richard M. Stallman <rms@gnu.org>
parents: 17737
diff changeset
1033 UNGCPRO;
17737
f79f2d6b119b (Fread_command): New optional arg DEFAULT-VALUE. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 17387
diff changeset
1034 return val;
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1035 }
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1036
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1037 DEFUN ("read-minibuffer", Fread_minibuffer, Sread_minibuffer, 1, 2, 0,
53827
44d25617bd98 (Fminibufferp, Fread_from_minibuffer)
Luc Teirlinck <teirllm@auburn.edu>
parents: 53364
diff changeset
1038 doc: /* Return a Lisp object read using the minibuffer, unevaluated.
39966
1c2d486200f3 Put doc strings in comments.
Pavel Janík <Pavel@Janik.cz>
parents: 39838
diff changeset
1039 Prompt with PROMPT. If non-nil, optional second arg INITIAL-CONTENTS
53827
44d25617bd98 (Fminibufferp, Fread_from_minibuffer)
Luc Teirlinck <teirllm@auburn.edu>
parents: 53364
diff changeset
1040 is a string to insert in the minibuffer before reading.
85676
a1ea2ab31c31 (Fread_minibuffer, Feval_minibuffer): Reflow docstrings.
Juanma Barranquero <lekktu@gmail.com>
parents: 85516
diff changeset
1041 \(INITIAL-CONTENTS can also be a cons of a string and an integer.
a1ea2ab31c31 (Fread_minibuffer, Feval_minibuffer): Reflow docstrings.
Juanma Barranquero <lekktu@gmail.com>
parents: 85516
diff changeset
1042 Such arguments are used as in `read-from-minibuffer'.) */)
39989
c652433b7f2f Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents: 39973
diff changeset
1043 (prompt, initial_contents)
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1044 Lisp_Object prompt, initial_contents;
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1045 {
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40403
diff changeset
1046 CHECK_STRING (prompt);
864
fe5f6b7c9727 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 765
diff changeset
1047 return read_minibuf (Vminibuffer_local_map, initial_contents,
17737
f79f2d6b119b (Fread_command): New optional arg DEFAULT-VALUE. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 17387
diff changeset
1048 prompt, Qnil, 1, Qminibuffer_history,
70930
f3ddca90b6b1 (read_minibuf): Remove arg KEEP_ALL. Callers changed.
Juri Linkov <juri@jurta.org>
parents: 70499
diff changeset
1049 make_number (0), Qnil, 0, 0);
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1050 }
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1051
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1052 DEFUN ("eval-minibuffer", Feval_minibuffer, Seval_minibuffer, 1, 2, 0,
39989
c652433b7f2f Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents: 39973
diff changeset
1053 doc: /* Return value of Lisp expression read using the minibuffer.
39966
1c2d486200f3 Put doc strings in comments.
Pavel Janík <Pavel@Janik.cz>
parents: 39838
diff changeset
1054 Prompt with PROMPT. If non-nil, optional second arg INITIAL-CONTENTS
53827
44d25617bd98 (Fminibufferp, Fread_from_minibuffer)
Luc Teirlinck <teirllm@auburn.edu>
parents: 53364
diff changeset
1055 is a string to insert in the minibuffer before reading.
85676
a1ea2ab31c31 (Fread_minibuffer, Feval_minibuffer): Reflow docstrings.
Juanma Barranquero <lekktu@gmail.com>
parents: 85516
diff changeset
1056 \(INITIAL-CONTENTS can also be a cons of a string and an integer.
a1ea2ab31c31 (Fread_minibuffer, Feval_minibuffer): Reflow docstrings.
Juanma Barranquero <lekktu@gmail.com>
parents: 85516
diff changeset
1057 Such arguments are used as in `read-from-minibuffer'.) */)
39989
c652433b7f2f Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents: 39973
diff changeset
1058 (prompt, initial_contents)
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1059 Lisp_Object prompt, initial_contents;
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1060 {
73450
726825bcce52 (Vread_expression_map): Define here.
Richard M. Stallman <rms@gnu.org>
parents: 73318
diff changeset
1061 return Feval (read_minibuf (Vread_expression_map, initial_contents,
726825bcce52 (Vread_expression_map): Define here.
Richard M. Stallman <rms@gnu.org>
parents: 73318
diff changeset
1062 prompt, Qnil, 1, Qread_expression_history,
726825bcce52 (Vread_expression_map): Define here.
Richard M. Stallman <rms@gnu.org>
parents: 73318
diff changeset
1063 make_number (0), Qnil, 0, 0));
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1064 }
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1065
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1066 /* Functions that use the minibuffer to read various things. */
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1067
19545
a7f1c1acde93 (Qcurrent_input_method, Qactivate_input_method): New
Kenichi Handa <handa@m17n.org>
parents: 19417
diff changeset
1068 DEFUN ("read-string", Fread_string, Sread_string, 1, 5, 0,
39989
c652433b7f2f Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents: 39973
diff changeset
1069 doc: /* Read a string from the minibuffer, prompting with string PROMPT.
39966
1c2d486200f3 Put doc strings in comments.
Pavel Janík <Pavel@Janik.cz>
parents: 39838
diff changeset
1070 If non-nil, second arg INITIAL-INPUT is a string to insert before reading.
53827
44d25617bd98 (Fminibufferp, Fread_from_minibuffer)
Luc Teirlinck <teirllm@auburn.edu>
parents: 53364
diff changeset
1071 This argument has been superseded by DEFAULT-VALUE and should normally
44d25617bd98 (Fminibufferp, Fread_from_minibuffer)
Luc Teirlinck <teirllm@auburn.edu>
parents: 53364
diff changeset
1072 be nil in new code. It behaves as in `read-from-minibuffer'. See the
44d25617bd98 (Fminibufferp, Fread_from_minibuffer)
Luc Teirlinck <teirllm@auburn.edu>
parents: 53364
diff changeset
1073 documentation string of that function for details.
39966
1c2d486200f3 Put doc strings in comments.
Pavel Janík <Pavel@Janik.cz>
parents: 39838
diff changeset
1074 The third arg HISTORY, if non-nil, specifies a history list
1c2d486200f3 Put doc strings in comments.
Pavel Janík <Pavel@Janik.cz>
parents: 39838
diff changeset
1075 and optionally the initial position in the list.
1c2d486200f3 Put doc strings in comments.
Pavel Janík <Pavel@Janik.cz>
parents: 39838
diff changeset
1076 See `read-from-minibuffer' for details of HISTORY argument.
94528
ea7a33f062ae (Fread_from_minibuffer, Fread_string, Fread_command)
Juri Linkov <juri@jurta.org>
parents: 94189
diff changeset
1077 Fourth arg DEFAULT-VALUE is the default value or the list of default values.
ea7a33f062ae (Fread_from_minibuffer, Fread_string, Fread_command)
Juri Linkov <juri@jurta.org>
parents: 94189
diff changeset
1078 If non-nil, it is used for history commands, and as the value (or the first
ea7a33f062ae (Fread_from_minibuffer, Fread_string, Fread_command)
Juri Linkov <juri@jurta.org>
parents: 94189
diff changeset
1079 element of the list of default values) to return if the user enters the
ea7a33f062ae (Fread_from_minibuffer, Fread_string, Fread_command)
Juri Linkov <juri@jurta.org>
parents: 94189
diff changeset
1080 empty string.
39966
1c2d486200f3 Put doc strings in comments.
Pavel Janík <Pavel@Janik.cz>
parents: 39838
diff changeset
1081 Fifth arg INHERIT-INPUT-METHOD, if non-nil, means the minibuffer inherits
42881
aa810c4a602b (Fminibuffer_contents)
Pavel Janík <Pavel@Janik.cz>
parents: 42168
diff changeset
1082 the current input method and the setting of `enable-multibyte-characters'. */)
39989
c652433b7f2f Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents: 39973
diff changeset
1083 (prompt, initial_input, history, default_value, inherit_input_method)
17737
f79f2d6b119b (Fread_command): New optional arg DEFAULT-VALUE. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 17387
diff changeset
1084 Lisp_Object prompt, initial_input, history, default_value;
19545
a7f1c1acde93 (Qcurrent_input_method, Qactivate_input_method): New
Kenichi Handa <handa@m17n.org>
parents: 19417
diff changeset
1085 Lisp_Object inherit_input_method;
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1086 {
20865
7a730831aa0e (read_minibuf): If input is empty, return empty string.
Richard M. Stallman <rms@gnu.org>
parents: 20754
diff changeset
1087 Lisp_Object val;
7a730831aa0e (read_minibuf): If input is empty, return empty string.
Richard M. Stallman <rms@gnu.org>
parents: 20754
diff changeset
1088 val = Fread_from_minibuffer (prompt, initial_input, Qnil,
7a730831aa0e (read_minibuf): If input is empty, return empty string.
Richard M. Stallman <rms@gnu.org>
parents: 20754
diff changeset
1089 Qnil, history, default_value,
70930
f3ddca90b6b1 (read_minibuf): Remove arg KEEP_ALL. Callers changed.
Juri Linkov <juri@jurta.org>
parents: 70499
diff changeset
1090 inherit_input_method);
46370
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 46293
diff changeset
1091 if (STRINGP (val) && SCHARS (val) == 0 && ! NILP (default_value))
85516
6260015b7802 Allow minibuffer default to be a list of default values.
Juri Linkov <juri@jurta.org>
parents: 85372
diff changeset
1092 val = CONSP (default_value) ? XCAR (default_value) : default_value;
20865
7a730831aa0e (read_minibuf): If input is empty, return empty string.
Richard M. Stallman <rms@gnu.org>
parents: 20754
diff changeset
1093 return val;
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1094 }
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1095
19545
a7f1c1acde93 (Qcurrent_input_method, Qactivate_input_method): New
Kenichi Handa <handa@m17n.org>
parents: 19417
diff changeset
1096 DEFUN ("read-no-blanks-input", Fread_no_blanks_input, Sread_no_blanks_input, 1, 3, 0,
39989
c652433b7f2f Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents: 39973
diff changeset
1097 doc: /* Read a string from the terminal, not allowing blanks.
53827
44d25617bd98 (Fminibufferp, Fread_from_minibuffer)
Luc Teirlinck <teirllm@auburn.edu>
parents: 53364
diff changeset
1098 Prompt with PROMPT. Whitespace terminates the input. If INITIAL is
44d25617bd98 (Fminibufferp, Fread_from_minibuffer)
Luc Teirlinck <teirllm@auburn.edu>
parents: 53364
diff changeset
1099 non-nil, it should be a string, which is used as initial input, with
44d25617bd98 (Fminibufferp, Fread_from_minibuffer)
Luc Teirlinck <teirllm@auburn.edu>
parents: 53364
diff changeset
1100 point positioned at the end, so that SPACE will accept the input.
44d25617bd98 (Fminibufferp, Fread_from_minibuffer)
Luc Teirlinck <teirllm@auburn.edu>
parents: 53364
diff changeset
1101 \(Actually, INITIAL can also be a cons of a string and an integer.
44d25617bd98 (Fminibufferp, Fread_from_minibuffer)
Luc Teirlinck <teirllm@auburn.edu>
parents: 53364
diff changeset
1102 Such values are treated as in `read-from-minibuffer', but are normally
44d25617bd98 (Fminibufferp, Fread_from_minibuffer)
Luc Teirlinck <teirllm@auburn.edu>
parents: 53364
diff changeset
1103 not useful in this function.)
39966
1c2d486200f3 Put doc strings in comments.
Pavel Janík <Pavel@Janik.cz>
parents: 39838
diff changeset
1104 Third arg INHERIT-INPUT-METHOD, if non-nil, means the minibuffer inherits
53827
44d25617bd98 (Fminibufferp, Fread_from_minibuffer)
Luc Teirlinck <teirllm@auburn.edu>
parents: 53364
diff changeset
1105 the current input method and the setting of`enable-multibyte-characters'. */)
39989
c652433b7f2f Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents: 39973
diff changeset
1106 (prompt, initial, inherit_input_method)
20921
ccde9a52e7c1 (read_minibuf): Do use DEFALT in place of empty input
Richard M. Stallman <rms@gnu.org>
parents: 20865
diff changeset
1107 Lisp_Object prompt, initial, inherit_input_method;
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1108 {
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40403
diff changeset
1109 CHECK_STRING (prompt);
20921
ccde9a52e7c1 (read_minibuf): Do use DEFALT in place of empty input
Richard M. Stallman <rms@gnu.org>
parents: 20865
diff changeset
1110 return read_minibuf (Vminibuffer_local_ns_map, initial, prompt, Qnil,
19545
a7f1c1acde93 (Qcurrent_input_method, Qactivate_input_method): New
Kenichi Handa <handa@m17n.org>
parents: 19417
diff changeset
1111 0, Qminibuffer_history, make_number (0), Qnil, 0,
70930
f3ddca90b6b1 (read_minibuf): Remove arg KEEP_ALL. Callers changed.
Juri Linkov <juri@jurta.org>
parents: 70499
diff changeset
1112 !NILP (inherit_input_method));
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1113 }
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1114
17737
f79f2d6b119b (Fread_command): New optional arg DEFAULT-VALUE. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 17387
diff changeset
1115 DEFUN ("read-command", Fread_command, Sread_command, 1, 2, 0,
39989
c652433b7f2f Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents: 39973
diff changeset
1116 doc: /* Read the name of a command and return as a symbol.
94528
ea7a33f062ae (Fread_from_minibuffer, Fread_string, Fread_command)
Juri Linkov <juri@jurta.org>
parents: 94189
diff changeset
1117 Prompt with PROMPT. By default, return DEFAULT-VALUE or its first element
ea7a33f062ae (Fread_from_minibuffer, Fread_string, Fread_command)
Juri Linkov <juri@jurta.org>
parents: 94189
diff changeset
1118 if it is a list. */)
39989
c652433b7f2f Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents: 39973
diff changeset
1119 (prompt, default_value)
17737
f79f2d6b119b (Fread_command): New optional arg DEFAULT-VALUE. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 17387
diff changeset
1120 Lisp_Object prompt, default_value;
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1121 {
20478
d14360d1f6ed (Fread_variable): If DEFAULT_VALUE is symbol, use its name.
Richard M. Stallman <rms@gnu.org>
parents: 20468
diff changeset
1122 Lisp_Object name, default_string;
d14360d1f6ed (Fread_variable): If DEFAULT_VALUE is symbol, use its name.
Richard M. Stallman <rms@gnu.org>
parents: 20468
diff changeset
1123
d14360d1f6ed (Fread_variable): If DEFAULT_VALUE is symbol, use its name.
Richard M. Stallman <rms@gnu.org>
parents: 20468
diff changeset
1124 if (NILP (default_value))
d14360d1f6ed (Fread_variable): If DEFAULT_VALUE is symbol, use its name.
Richard M. Stallman <rms@gnu.org>
parents: 20468
diff changeset
1125 default_string = Qnil;
d14360d1f6ed (Fread_variable): If DEFAULT_VALUE is symbol, use its name.
Richard M. Stallman <rms@gnu.org>
parents: 20468
diff changeset
1126 else if (SYMBOLP (default_value))
45408
3e68a6534915 * minibuf.c (Fread_command, Fread_variable): Use SYMBOL_NAME and
Ken Raeburn <raeburn@raeburn.org>
parents: 44939
diff changeset
1127 default_string = SYMBOL_NAME (default_value);
20478
d14360d1f6ed (Fread_variable): If DEFAULT_VALUE is symbol, use its name.
Richard M. Stallman <rms@gnu.org>
parents: 20468
diff changeset
1128 else
d14360d1f6ed (Fread_variable): If DEFAULT_VALUE is symbol, use its name.
Richard M. Stallman <rms@gnu.org>
parents: 20468
diff changeset
1129 default_string = default_value;
45620
1ae71892eb5f (read_minibuf): Cast `current_column' return value to int.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 45408
diff changeset
1130
20478
d14360d1f6ed (Fread_variable): If DEFAULT_VALUE is symbol, use its name.
Richard M. Stallman <rms@gnu.org>
parents: 20468
diff changeset
1131 name = Fcompleting_read (prompt, Vobarray, Qcommandp, Qt,
d14360d1f6ed (Fread_variable): If DEFAULT_VALUE is symbol, use its name.
Richard M. Stallman <rms@gnu.org>
parents: 20468
diff changeset
1132 Qnil, Qnil, default_string, Qnil);
d14360d1f6ed (Fread_variable): If DEFAULT_VALUE is symbol, use its name.
Richard M. Stallman <rms@gnu.org>
parents: 20468
diff changeset
1133 if (NILP (name))
d14360d1f6ed (Fread_variable): If DEFAULT_VALUE is symbol, use its name.
Richard M. Stallman <rms@gnu.org>
parents: 20468
diff changeset
1134 return name;
d14360d1f6ed (Fread_variable): If DEFAULT_VALUE is symbol, use its name.
Richard M. Stallman <rms@gnu.org>
parents: 20468
diff changeset
1135 return Fintern (name, Qnil);
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1136 }
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1137
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1138 #ifdef NOTDEF
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1139 DEFUN ("read-function", Fread_function, Sread_function, 1, 1, 0,
39989
c652433b7f2f Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents: 39973
diff changeset
1140 doc: /* One arg PROMPT, a string. Read the name of a function and return as a symbol.
43000
c16f32068114 (Fread_from_minibuffer, Fread_command, Fread_function)
Pavel Janík <Pavel@Janik.cz>
parents: 42881
diff changeset
1141 Prompt with PROMPT. */)
39989
c652433b7f2f Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents: 39973
diff changeset
1142 (prompt)
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1143 Lisp_Object prompt;
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1144 {
19545
a7f1c1acde93 (Qcurrent_input_method, Qactivate_input_method): New
Kenichi Handa <handa@m17n.org>
parents: 19417
diff changeset
1145 return Fintern (Fcompleting_read (prompt, Vobarray, Qfboundp, Qt, Qnil, Qnil, Qnil, Qnil),
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1146 Qnil);
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1147 }
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1148 #endif /* NOTDEF */
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1149
17737
f79f2d6b119b (Fread_command): New optional arg DEFAULT-VALUE. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 17387
diff changeset
1150 DEFUN ("read-variable", Fread_variable, Sread_variable, 1, 2, 0,
39989
c652433b7f2f Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents: 39973
diff changeset
1151 doc: /* Read the name of a user variable and return it as a symbol.
94528
ea7a33f062ae (Fread_from_minibuffer, Fread_string, Fread_command)
Juri Linkov <juri@jurta.org>
parents: 94189
diff changeset
1152 Prompt with PROMPT. By default, return DEFAULT-VALUE or its first element
ea7a33f062ae (Fread_from_minibuffer, Fread_string, Fread_command)
Juri Linkov <juri@jurta.org>
parents: 94189
diff changeset
1153 if it is a list.
49106
f9342d2eaa31 (Fread_variable): Doc fix.
Markus Rost <rost@math.uni-bielefeld.de>
parents: 48727
diff changeset
1154 A user variable is one for which `user-variable-p' returns non-nil. */)
39989
c652433b7f2f Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents: 39973
diff changeset
1155 (prompt, default_value)
17737
f79f2d6b119b (Fread_command): New optional arg DEFAULT-VALUE. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 17387
diff changeset
1156 Lisp_Object prompt, default_value;
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1157 {
20478
d14360d1f6ed (Fread_variable): If DEFAULT_VALUE is symbol, use its name.
Richard M. Stallman <rms@gnu.org>
parents: 20468
diff changeset
1158 Lisp_Object name, default_string;
d14360d1f6ed (Fread_variable): If DEFAULT_VALUE is symbol, use its name.
Richard M. Stallman <rms@gnu.org>
parents: 20468
diff changeset
1159
d14360d1f6ed (Fread_variable): If DEFAULT_VALUE is symbol, use its name.
Richard M. Stallman <rms@gnu.org>
parents: 20468
diff changeset
1160 if (NILP (default_value))
d14360d1f6ed (Fread_variable): If DEFAULT_VALUE is symbol, use its name.
Richard M. Stallman <rms@gnu.org>
parents: 20468
diff changeset
1161 default_string = Qnil;
d14360d1f6ed (Fread_variable): If DEFAULT_VALUE is symbol, use its name.
Richard M. Stallman <rms@gnu.org>
parents: 20468
diff changeset
1162 else if (SYMBOLP (default_value))
45408
3e68a6534915 * minibuf.c (Fread_command, Fread_variable): Use SYMBOL_NAME and
Ken Raeburn <raeburn@raeburn.org>
parents: 44939
diff changeset
1163 default_string = SYMBOL_NAME (default_value);
20478
d14360d1f6ed (Fread_variable): If DEFAULT_VALUE is symbol, use its name.
Richard M. Stallman <rms@gnu.org>
parents: 20468
diff changeset
1164 else
d14360d1f6ed (Fread_variable): If DEFAULT_VALUE is symbol, use its name.
Richard M. Stallman <rms@gnu.org>
parents: 20468
diff changeset
1165 default_string = default_value;
45620
1ae71892eb5f (read_minibuf): Cast `current_column' return value to int.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 45408
diff changeset
1166
20478
d14360d1f6ed (Fread_variable): If DEFAULT_VALUE is symbol, use its name.
Richard M. Stallman <rms@gnu.org>
parents: 20468
diff changeset
1167 name = Fcompleting_read (prompt, Vobarray,
d14360d1f6ed (Fread_variable): If DEFAULT_VALUE is symbol, use its name.
Richard M. Stallman <rms@gnu.org>
parents: 20468
diff changeset
1168 Quser_variable_p, Qt,
d14360d1f6ed (Fread_variable): If DEFAULT_VALUE is symbol, use its name.
Richard M. Stallman <rms@gnu.org>
parents: 20468
diff changeset
1169 Qnil, Qnil, default_string, Qnil);
d14360d1f6ed (Fread_variable): If DEFAULT_VALUE is symbol, use its name.
Richard M. Stallman <rms@gnu.org>
parents: 20468
diff changeset
1170 if (NILP (name))
d14360d1f6ed (Fread_variable): If DEFAULT_VALUE is symbol, use its name.
Richard M. Stallman <rms@gnu.org>
parents: 20468
diff changeset
1171 return name;
d14360d1f6ed (Fread_variable): If DEFAULT_VALUE is symbol, use its name.
Richard M. Stallman <rms@gnu.org>
parents: 20468
diff changeset
1172 return Fintern (name, Qnil);
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1173 }
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1174
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1175 DEFUN ("read-buffer", Fread_buffer, Sread_buffer, 1, 3, 0,
43000
c16f32068114 (Fread_from_minibuffer, Fread_command, Fread_function)
Pavel Janík <Pavel@Janik.cz>
parents: 42881
diff changeset
1176 doc: /* Read the name of a buffer and return as a string.
c16f32068114 (Fread_from_minibuffer, Fread_command, Fread_function)
Pavel Janík <Pavel@Janik.cz>
parents: 42881
diff changeset
1177 Prompt with PROMPT.
39966
1c2d486200f3 Put doc strings in comments.
Pavel Janík <Pavel@Janik.cz>
parents: 39838
diff changeset
1178 Optional second arg DEF is value to return if user enters an empty line.
94528
ea7a33f062ae (Fread_from_minibuffer, Fread_string, Fread_command)
Juri Linkov <juri@jurta.org>
parents: 94189
diff changeset
1179 If DEF is a list of default values, return its first element.
43000
c16f32068114 (Fread_from_minibuffer, Fread_command, Fread_function)
Pavel Janík <Pavel@Janik.cz>
parents: 42881
diff changeset
1180 If optional third arg REQUIRE-MATCH is non-nil,
65758
028c8f536edb (High-Level Completion): Explain that the prompt
Romain Francoise <romain@orebokech.com>
parents: 65457
diff changeset
1181 only existing buffer names are allowed.
97121
dd58348427b8 (read_buffer_completion_ignore_case): New var.
Chong Yidong <cyd@stupidchicken.com>
parents: 95781
diff changeset
1182 The argument PROMPT should be a string ending with a colon and a space.
dd58348427b8 (read_buffer_completion_ignore_case): New var.
Chong Yidong <cyd@stupidchicken.com>
parents: 95781
diff changeset
1183 If `read-buffer-completion-ignore-case' is non-nil, completion ignores
dd58348427b8 (read_buffer_completion_ignore_case): New var.
Chong Yidong <cyd@stupidchicken.com>
parents: 95781
diff changeset
1184 case while reading the buffer name.
dd58348427b8 (read_buffer_completion_ignore_case): New var.
Chong Yidong <cyd@stupidchicken.com>
parents: 95781
diff changeset
1185 If `read-buffer-function' is non-nil, this works by calling it as a
dd58348427b8 (read_buffer_completion_ignore_case): New var.
Chong Yidong <cyd@stupidchicken.com>
parents: 95781
diff changeset
1186 function, instead of the usual behavior. */)
39989
c652433b7f2f Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents: 39973
diff changeset
1187 (prompt, def, require_match)
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1188 Lisp_Object prompt, def, require_match;
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1189 {
97121
dd58348427b8 (read_buffer_completion_ignore_case): New var.
Chong Yidong <cyd@stupidchicken.com>
parents: 95781
diff changeset
1190 Lisp_Object args[4], result;
65758
028c8f536edb (High-Level Completion): Explain that the prompt
Romain Francoise <romain@orebokech.com>
parents: 65457
diff changeset
1191 unsigned char *s;
028c8f536edb (High-Level Completion): Explain that the prompt
Romain Francoise <romain@orebokech.com>
parents: 65457
diff changeset
1192 int len;
97121
dd58348427b8 (read_buffer_completion_ignore_case): New var.
Chong Yidong <cyd@stupidchicken.com>
parents: 95781
diff changeset
1193 int count = SPECPDL_INDEX ();
45620
1ae71892eb5f (read_minibuf): Cast `current_column' return value to int.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 45408
diff changeset
1194
9120
ed766dfb4efe (read_minibuf, Fread_from_minibuffer, Fread_buffer, Ftry_completion,
Karl Heuer <kwzh@gnu.org>
parents: 9049
diff changeset
1195 if (BUFFERP (def))
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1196 def = XBUFFER (def)->name;
20468
2fbad61cd5d0 (Vread_buffer_function): New var.
Karl Heuer <kwzh@gnu.org>
parents: 20302
diff changeset
1197
97121
dd58348427b8 (read_buffer_completion_ignore_case): New var.
Chong Yidong <cyd@stupidchicken.com>
parents: 95781
diff changeset
1198 specbind (Qcompletion_ignore_case,
dd58348427b8 (read_buffer_completion_ignore_case): New var.
Chong Yidong <cyd@stupidchicken.com>
parents: 95781
diff changeset
1199 read_buffer_completion_ignore_case ? Qt : Qnil);
dd58348427b8 (read_buffer_completion_ignore_case): New var.
Chong Yidong <cyd@stupidchicken.com>
parents: 95781
diff changeset
1200
20468
2fbad61cd5d0 (Vread_buffer_function): New var.
Karl Heuer <kwzh@gnu.org>
parents: 20302
diff changeset
1201 if (NILP (Vread_buffer_function))
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1202 {
20468
2fbad61cd5d0 (Vread_buffer_function): New var.
Karl Heuer <kwzh@gnu.org>
parents: 20302
diff changeset
1203 if (!NILP (def))
2fbad61cd5d0 (Vread_buffer_function): New var.
Karl Heuer <kwzh@gnu.org>
parents: 20302
diff changeset
1204 {
65758
028c8f536edb (High-Level Completion): Explain that the prompt
Romain Francoise <romain@orebokech.com>
parents: 65457
diff changeset
1205 /* A default value was provided: we must change PROMPT,
028c8f536edb (High-Level Completion): Explain that the prompt
Romain Francoise <romain@orebokech.com>
parents: 65457
diff changeset
1206 editing the default value in before the colon. To achieve
028c8f536edb (High-Level Completion): Explain that the prompt
Romain Francoise <romain@orebokech.com>
parents: 65457
diff changeset
1207 this, we replace PROMPT with a substring that doesn't
028c8f536edb (High-Level Completion): Explain that the prompt
Romain Francoise <romain@orebokech.com>
parents: 65457
diff changeset
1208 contain the terminal space and colon (if present). They
028c8f536edb (High-Level Completion): Explain that the prompt
Romain Francoise <romain@orebokech.com>
parents: 65457
diff changeset
1209 are then added back using Fformat. */
028c8f536edb (High-Level Completion): Explain that the prompt
Romain Francoise <romain@orebokech.com>
parents: 65457
diff changeset
1210
028c8f536edb (High-Level Completion): Explain that the prompt
Romain Francoise <romain@orebokech.com>
parents: 65457
diff changeset
1211 if (STRINGP (prompt))
028c8f536edb (High-Level Completion): Explain that the prompt
Romain Francoise <romain@orebokech.com>
parents: 65457
diff changeset
1212 {
028c8f536edb (High-Level Completion): Explain that the prompt
Romain Francoise <romain@orebokech.com>
parents: 65457
diff changeset
1213 s = SDATA (prompt);
028c8f536edb (High-Level Completion): Explain that the prompt
Romain Francoise <romain@orebokech.com>
parents: 65457
diff changeset
1214 len = strlen (s);
028c8f536edb (High-Level Completion): Explain that the prompt
Romain Francoise <romain@orebokech.com>
parents: 65457
diff changeset
1215 if (len >= 2 && s[len - 2] == ':' && s[len - 1] == ' ')
028c8f536edb (High-Level Completion): Explain that the prompt
Romain Francoise <romain@orebokech.com>
parents: 65457
diff changeset
1216 len = len - 2;
028c8f536edb (High-Level Completion): Explain that the prompt
Romain Francoise <romain@orebokech.com>
parents: 65457
diff changeset
1217 else if (len >= 1 && (s[len - 1] == ':' || s[len - 1] == ' '))
028c8f536edb (High-Level Completion): Explain that the prompt
Romain Francoise <romain@orebokech.com>
parents: 65457
diff changeset
1218 len--;
028c8f536edb (High-Level Completion): Explain that the prompt
Romain Francoise <romain@orebokech.com>
parents: 65457
diff changeset
1219
028c8f536edb (High-Level Completion): Explain that the prompt
Romain Francoise <romain@orebokech.com>
parents: 65457
diff changeset
1220 prompt = make_specified_string (s, -1, len,
028c8f536edb (High-Level Completion): Explain that the prompt
Romain Francoise <romain@orebokech.com>
parents: 65457
diff changeset
1221 STRING_MULTIBYTE (prompt));
028c8f536edb (High-Level Completion): Explain that the prompt
Romain Francoise <romain@orebokech.com>
parents: 65457
diff changeset
1222 }
028c8f536edb (High-Level Completion): Explain that the prompt
Romain Francoise <romain@orebokech.com>
parents: 65457
diff changeset
1223
028c8f536edb (High-Level Completion): Explain that the prompt
Romain Francoise <romain@orebokech.com>
parents: 65457
diff changeset
1224 args[0] = build_string ("%s (default %s): ");
20468
2fbad61cd5d0 (Vread_buffer_function): New var.
Karl Heuer <kwzh@gnu.org>
parents: 20302
diff changeset
1225 args[1] = prompt;
85516
6260015b7802 Allow minibuffer default to be a list of default values.
Juri Linkov <juri@jurta.org>
parents: 85372
diff changeset
1226 args[2] = CONSP (def) ? XCAR (def) : def;
20468
2fbad61cd5d0 (Vread_buffer_function): New var.
Karl Heuer <kwzh@gnu.org>
parents: 20302
diff changeset
1227 prompt = Fformat (3, args);
2fbad61cd5d0 (Vread_buffer_function): New var.
Karl Heuer <kwzh@gnu.org>
parents: 20302
diff changeset
1228 }
2fbad61cd5d0 (Vread_buffer_function): New var.
Karl Heuer <kwzh@gnu.org>
parents: 20302
diff changeset
1229
97121
dd58348427b8 (read_buffer_completion_ignore_case): New var.
Chong Yidong <cyd@stupidchicken.com>
parents: 95781
diff changeset
1230 result = Fcompleting_read (prompt, intern ("internal-complete-buffer"),
dd58348427b8 (read_buffer_completion_ignore_case): New var.
Chong Yidong <cyd@stupidchicken.com>
parents: 95781
diff changeset
1231 Qnil, require_match, Qnil, Qbuffer_name_history,
dd58348427b8 (read_buffer_completion_ignore_case): New var.
Chong Yidong <cyd@stupidchicken.com>
parents: 95781
diff changeset
1232 def, Qnil);
20468
2fbad61cd5d0 (Vread_buffer_function): New var.
Karl Heuer <kwzh@gnu.org>
parents: 20302
diff changeset
1233 }
2fbad61cd5d0 (Vread_buffer_function): New var.
Karl Heuer <kwzh@gnu.org>
parents: 20302
diff changeset
1234 else
2fbad61cd5d0 (Vread_buffer_function): New var.
Karl Heuer <kwzh@gnu.org>
parents: 20302
diff changeset
1235 {
2fbad61cd5d0 (Vread_buffer_function): New var.
Karl Heuer <kwzh@gnu.org>
parents: 20302
diff changeset
1236 args[0] = Vread_buffer_function;
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1237 args[1] = prompt;
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1238 args[2] = def;
20468
2fbad61cd5d0 (Vread_buffer_function): New var.
Karl Heuer <kwzh@gnu.org>
parents: 20302
diff changeset
1239 args[3] = require_match;
97121
dd58348427b8 (read_buffer_completion_ignore_case): New var.
Chong Yidong <cyd@stupidchicken.com>
parents: 95781
diff changeset
1240 result = Ffuncall(4, args);
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1241 }
97121
dd58348427b8 (read_buffer_completion_ignore_case): New var.
Chong Yidong <cyd@stupidchicken.com>
parents: 95781
diff changeset
1242 return unbind_to (count, result);
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1243 }
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1244
21854
67719e401cce (minibuf_conform_representation): New function.
Richard M. Stallman <rms@gnu.org>
parents: 21672
diff changeset
1245 static Lisp_Object
67719e401cce (minibuf_conform_representation): New function.
Richard M. Stallman <rms@gnu.org>
parents: 21672
diff changeset
1246 minibuf_conform_representation (string, basis)
67719e401cce (minibuf_conform_representation): New function.
Richard M. Stallman <rms@gnu.org>
parents: 21672
diff changeset
1247 Lisp_Object string, basis;
67719e401cce (minibuf_conform_representation): New function.
Richard M. Stallman <rms@gnu.org>
parents: 21672
diff changeset
1248 {
67719e401cce (minibuf_conform_representation): New function.
Richard M. Stallman <rms@gnu.org>
parents: 21672
diff changeset
1249 if (STRING_MULTIBYTE (string) == STRING_MULTIBYTE (basis))
67719e401cce (minibuf_conform_representation): New function.
Richard M. Stallman <rms@gnu.org>
parents: 21672
diff changeset
1250 return string;
67719e401cce (minibuf_conform_representation): New function.
Richard M. Stallman <rms@gnu.org>
parents: 21672
diff changeset
1251
67719e401cce (minibuf_conform_representation): New function.
Richard M. Stallman <rms@gnu.org>
parents: 21672
diff changeset
1252 if (STRING_MULTIBYTE (string))
67719e401cce (minibuf_conform_representation): New function.
Richard M. Stallman <rms@gnu.org>
parents: 21672
diff changeset
1253 return Fstring_make_unibyte (string);
67719e401cce (minibuf_conform_representation): New function.
Richard M. Stallman <rms@gnu.org>
parents: 21672
diff changeset
1254 else
67719e401cce (minibuf_conform_representation): New function.
Richard M. Stallman <rms@gnu.org>
parents: 21672
diff changeset
1255 return Fstring_make_multibyte (string);
67719e401cce (minibuf_conform_representation): New function.
Richard M. Stallman <rms@gnu.org>
parents: 21672
diff changeset
1256 }
67719e401cce (minibuf_conform_representation): New function.
Richard M. Stallman <rms@gnu.org>
parents: 21672
diff changeset
1257
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1258 DEFUN ("try-completion", Ftry_completion, Stry_completion, 2, 3, 0,
75475
688a9d290d4d (Ftry_completion, Fall_completions, Fcompleting_read, Ftest_completion):
Richard M. Stallman <rms@gnu.org>
parents: 75431
diff changeset
1259 doc: /* Return common substring of all completions of STRING in COLLECTION.
688a9d290d4d (Ftry_completion, Fall_completions, Fcompleting_read, Ftest_completion):
Richard M. Stallman <rms@gnu.org>
parents: 75431
diff changeset
1260 Test each possible completion specified by COLLECTION
688a9d290d4d (Ftry_completion, Fall_completions, Fcompleting_read, Ftest_completion):
Richard M. Stallman <rms@gnu.org>
parents: 75431
diff changeset
1261 to see if it begins with STRING. The possible completions may be
60210
469c72af5168 (Ftry_completion, Fall_completions): Allow both string
Kim F. Storm <storm@cua.dk>
parents: 58908
diff changeset
1262 strings or symbols. Symbols are converted to strings before testing,
469c72af5168 (Ftry_completion, Fall_completions): Allow both string
Kim F. Storm <storm@cua.dk>
parents: 58908
diff changeset
1263 see `symbol-name'.
75475
688a9d290d4d (Ftry_completion, Fall_completions, Fcompleting_read, Ftest_completion):
Richard M. Stallman <rms@gnu.org>
parents: 75431
diff changeset
1264 All that match STRING are compared together; the longest initial sequence
688a9d290d4d (Ftry_completion, Fall_completions, Fcompleting_read, Ftest_completion):
Richard M. Stallman <rms@gnu.org>
parents: 75431
diff changeset
1265 common to all these matches is the return value.
688a9d290d4d (Ftry_completion, Fall_completions, Fcompleting_read, Ftest_completion):
Richard M. Stallman <rms@gnu.org>
parents: 75431
diff changeset
1266 If there is no match at all, the return value is nil.
688a9d290d4d (Ftry_completion, Fall_completions, Fcompleting_read, Ftest_completion):
Richard M. Stallman <rms@gnu.org>
parents: 75431
diff changeset
1267 For a unique match which is exact, the return value is t.
688a9d290d4d (Ftry_completion, Fall_completions, Fcompleting_read, Ftest_completion):
Richard M. Stallman <rms@gnu.org>
parents: 75431
diff changeset
1268
688a9d290d4d (Ftry_completion, Fall_completions, Fcompleting_read, Ftest_completion):
Richard M. Stallman <rms@gnu.org>
parents: 75431
diff changeset
1269 If COLLECTION is an alist, the keys (cars of elements) are the
688a9d290d4d (Ftry_completion, Fall_completions, Fcompleting_read, Ftest_completion):
Richard M. Stallman <rms@gnu.org>
parents: 75431
diff changeset
1270 possible completions. If an element is not a cons cell, then the
688a9d290d4d (Ftry_completion, Fall_completions, Fcompleting_read, Ftest_completion):
Richard M. Stallman <rms@gnu.org>
parents: 75431
diff changeset
1271 element itself is the possible completion.
688a9d290d4d (Ftry_completion, Fall_completions, Fcompleting_read, Ftest_completion):
Richard M. Stallman <rms@gnu.org>
parents: 75431
diff changeset
1272 If COLLECTION is a hash-table, all the keys that are strings or symbols
688a9d290d4d (Ftry_completion, Fall_completions, Fcompleting_read, Ftest_completion):
Richard M. Stallman <rms@gnu.org>
parents: 75431
diff changeset
1273 are the possible completions.
688a9d290d4d (Ftry_completion, Fall_completions, Fcompleting_read, Ftest_completion):
Richard M. Stallman <rms@gnu.org>
parents: 75431
diff changeset
1274 If COLLECTION is an obarray, the names of all symbols in the obarray
688a9d290d4d (Ftry_completion, Fall_completions, Fcompleting_read, Ftest_completion):
Richard M. Stallman <rms@gnu.org>
parents: 75431
diff changeset
1275 are the possible completions.
688a9d290d4d (Ftry_completion, Fall_completions, Fcompleting_read, Ftest_completion):
Richard M. Stallman <rms@gnu.org>
parents: 75431
diff changeset
1276
688a9d290d4d (Ftry_completion, Fall_completions, Fcompleting_read, Ftest_completion):
Richard M. Stallman <rms@gnu.org>
parents: 75431
diff changeset
1277 COLLECTION can also be a function to do the completion itself.
39966
1c2d486200f3 Put doc strings in comments.
Pavel Janík <Pavel@Janik.cz>
parents: 39838
diff changeset
1278 It receives three arguments: the values STRING, PREDICATE and nil.
1c2d486200f3 Put doc strings in comments.
Pavel Janík <Pavel@Janik.cz>
parents: 39838
diff changeset
1279 Whatever it returns becomes the value of `try-completion'.
1c2d486200f3 Put doc strings in comments.
Pavel Janík <Pavel@Janik.cz>
parents: 39838
diff changeset
1280
1c2d486200f3 Put doc strings in comments.
Pavel Janík <Pavel@Janik.cz>
parents: 39838
diff changeset
1281 If optional third argument PREDICATE is non-nil,
1c2d486200f3 Put doc strings in comments.
Pavel Janík <Pavel@Janik.cz>
parents: 39838
diff changeset
1282 it is used to test each possible match.
1c2d486200f3 Put doc strings in comments.
Pavel Janík <Pavel@Janik.cz>
parents: 39838
diff changeset
1283 The match is a candidate only if PREDICATE returns non-nil.
1c2d486200f3 Put doc strings in comments.
Pavel Janík <Pavel@Janik.cz>
parents: 39838
diff changeset
1284 The argument given to PREDICATE is the alist element
75475
688a9d290d4d (Ftry_completion, Fall_completions, Fcompleting_read, Ftest_completion):
Richard M. Stallman <rms@gnu.org>
parents: 75431
diff changeset
1285 or the symbol from the obarray. If COLLECTION is a hash-table,
46224
98786eb38aed (Ftry_completion, Fall_completions, Ftest_completion):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46105
diff changeset
1286 predicate is called with two arguments: the key and the value.
39966
1c2d486200f3 Put doc strings in comments.
Pavel Janík <Pavel@Janik.cz>
parents: 39838
diff changeset
1287 Additionally to this predicate, `completion-regexp-list'
39989
c652433b7f2f Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents: 39973
diff changeset
1288 is used to further constrain the set of candidates. */)
75475
688a9d290d4d (Ftry_completion, Fall_completions, Fcompleting_read, Ftest_completion):
Richard M. Stallman <rms@gnu.org>
parents: 75431
diff changeset
1289 (string, collection, predicate)
688a9d290d4d (Ftry_completion, Fall_completions, Fcompleting_read, Ftest_completion):
Richard M. Stallman <rms@gnu.org>
parents: 75431
diff changeset
1290 Lisp_Object string, collection, predicate;
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1291 {
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1292 Lisp_Object bestmatch, tail, elt, eltstring;
20584
24e567feaf18 (test_completion): Pass both kinds of size to oblookup.
Richard M. Stallman <rms@gnu.org>
parents: 20570
diff changeset
1293 /* Size in bytes of BESTMATCH. */
31829
43566b0aec59 Avoid some more compiler warnings.
Gerd Moellmann <gerd@gnu.org>
parents: 31140
diff changeset
1294 int bestmatchsize = 0;
20584
24e567feaf18 (test_completion): Pass both kinds of size to oblookup.
Richard M. Stallman <rms@gnu.org>
parents: 20570
diff changeset
1295 /* These are in bytes, too. */
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1296 int compare, matchsize;
82403
9f1e0c774487 (Fall_completions): Use enum for type of table.
Richard M. Stallman <rms@gnu.org>
parents: 82140
diff changeset
1297 enum { function_table, list_table, obarray_table, hash_table}
9f1e0c774487 (Fall_completions): Use enum for type of table.
Richard M. Stallman <rms@gnu.org>
parents: 82140
diff changeset
1298 type = (HASH_TABLE_P (collection) ? hash_table
9f1e0c774487 (Fall_completions): Use enum for type of table.
Richard M. Stallman <rms@gnu.org>
parents: 82140
diff changeset
1299 : VECTORP (collection) ? obarray_table
9f1e0c774487 (Fall_completions): Use enum for type of table.
Richard M. Stallman <rms@gnu.org>
parents: 82140
diff changeset
1300 : ((NILP (collection)
9f1e0c774487 (Fall_completions): Use enum for type of table.
Richard M. Stallman <rms@gnu.org>
parents: 82140
diff changeset
1301 || (CONSP (collection)
9f1e0c774487 (Fall_completions): Use enum for type of table.
Richard M. Stallman <rms@gnu.org>
parents: 82140
diff changeset
1302 && (!SYMBOLP (XCAR (collection))
9f1e0c774487 (Fall_completions): Use enum for type of table.
Richard M. Stallman <rms@gnu.org>
parents: 82140
diff changeset
1303 || NILP (XCAR (collection)))))
9f1e0c774487 (Fall_completions): Use enum for type of table.
Richard M. Stallman <rms@gnu.org>
parents: 82140
diff changeset
1304 ? list_table : function_table));
31829
43566b0aec59 Avoid some more compiler warnings.
Gerd Moellmann <gerd@gnu.org>
parents: 31140
diff changeset
1305 int index = 0, obsize = 0;
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1306 int matchcount = 0;
56167
ce63b548f490 (Ftry_completion, Fall_completions): Do lazy binding
David Kastrup <dak@gnu.org>
parents: 56087
diff changeset
1307 int bindcount = -1;
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1308 Lisp_Object bucket, zero, end, tem;
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1309 struct gcpro gcpro1, gcpro2, gcpro3, gcpro4;
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1310
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40403
diff changeset
1311 CHECK_STRING (string);
82403
9f1e0c774487 (Fall_completions): Use enum for type of table.
Richard M. Stallman <rms@gnu.org>
parents: 82140
diff changeset
1312 if (type == function_table)
75475
688a9d290d4d (Ftry_completion, Fall_completions, Fcompleting_read, Ftest_completion):
Richard M. Stallman <rms@gnu.org>
parents: 75431
diff changeset
1313 return call3 (collection, string, predicate, Qnil);
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1314
31829
43566b0aec59 Avoid some more compiler warnings.
Gerd Moellmann <gerd@gnu.org>
parents: 31140
diff changeset
1315 bestmatch = bucket = Qnil;
58908
e1f3effbdccb (Fall_completions): Add var `zero' and use it in loop.
Richard M. Stallman <rms@gnu.org>
parents: 58896
diff changeset
1316 zero = make_number (0);
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1317
75475
688a9d290d4d (Ftry_completion, Fall_completions, Fcompleting_read, Ftest_completion):
Richard M. Stallman <rms@gnu.org>
parents: 75431
diff changeset
1318 /* If COLLECTION is not a list, set TAIL just for gc pro. */
688a9d290d4d (Ftry_completion, Fall_completions, Fcompleting_read, Ftest_completion):
Richard M. Stallman <rms@gnu.org>
parents: 75431
diff changeset
1319 tail = collection;
82403
9f1e0c774487 (Fall_completions): Use enum for type of table.
Richard M. Stallman <rms@gnu.org>
parents: 82140
diff changeset
1320 if (type == obarray_table)
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1321 {
75475
688a9d290d4d (Ftry_completion, Fall_completions, Fcompleting_read, Ftest_completion):
Richard M. Stallman <rms@gnu.org>
parents: 75431
diff changeset
1322 collection = check_obarray (collection);
688a9d290d4d (Ftry_completion, Fall_completions, Fcompleting_read, Ftest_completion):
Richard M. Stallman <rms@gnu.org>
parents: 75431
diff changeset
1323 obsize = XVECTOR (collection)->size;
688a9d290d4d (Ftry_completion, Fall_completions, Fcompleting_read, Ftest_completion):
Richard M. Stallman <rms@gnu.org>
parents: 75431
diff changeset
1324 bucket = XVECTOR (collection)->contents[index];
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1325 }
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1326
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1327 while (1)
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1328 {
46224
98786eb38aed (Ftry_completion, Fall_completions, Ftest_completion):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46105
diff changeset
1329 /* Get the next element of the alist, obarray, or hash-table. */
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1330 /* Exit the loop if the elements are all used up. */
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1331 /* elt gets the alist element or symbol.
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1332 eltstring gets the name to check as a completion. */
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1333
82403
9f1e0c774487 (Fall_completions): Use enum for type of table.
Richard M. Stallman <rms@gnu.org>
parents: 82140
diff changeset
1334 if (type == list_table)
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1335 {
44469
f9a82a50692e (read_minibuf): Use empty_string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43595
diff changeset
1336 if (!CONSP (tail))
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1337 break;
44469
f9a82a50692e (read_minibuf): Use empty_string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43595
diff changeset
1338 elt = XCAR (tail);
f9a82a50692e (read_minibuf): Use empty_string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43595
diff changeset
1339 eltstring = CONSP (elt) ? XCAR (elt) : elt;
f9a82a50692e (read_minibuf): Use empty_string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43595
diff changeset
1340 tail = XCDR (tail);
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1341 }
82403
9f1e0c774487 (Fall_completions): Use enum for type of table.
Richard M. Stallman <rms@gnu.org>
parents: 82140
diff changeset
1342 else if (type == obarray_table)
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1343 {
58908
e1f3effbdccb (Fall_completions): Add var `zero' and use it in loop.
Richard M. Stallman <rms@gnu.org>
parents: 58896
diff changeset
1344 if (!EQ (bucket, zero))
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1345 {
74666
3f3a13d1c7ce (Ftry_completion): Check that obarray buckets are symbols.
Juanma Barranquero <lekktu@gmail.com>
parents: 74649
diff changeset
1346 if (!SYMBOLP (bucket))
3f3a13d1c7ce (Ftry_completion): Check that obarray buckets are symbols.
Juanma Barranquero <lekktu@gmail.com>
parents: 74649
diff changeset
1347 error ("Bad data in guts of obarray");
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1348 elt = bucket;
60210
469c72af5168 (Ftry_completion, Fall_completions): Allow both string
Kim F. Storm <storm@cua.dk>
parents: 58908
diff changeset
1349 eltstring = elt;
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1350 if (XSYMBOL (bucket)->next)
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1351 XSETSYMBOL (bucket, XSYMBOL (bucket)->next);
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1352 else
9316
5f7cfbdef872 (read_minibuf, get_minibuffer, read_minibuf_unwind, Fread_from_minibuffer,
Karl Heuer <kwzh@gnu.org>
parents: 9183
diff changeset
1353 XSETFASTINT (bucket, 0);
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1354 }
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1355 else if (++index >= obsize)
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1356 break;
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1357 else
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1358 {
75475
688a9d290d4d (Ftry_completion, Fall_completions, Fcompleting_read, Ftest_completion):
Richard M. Stallman <rms@gnu.org>
parents: 75431
diff changeset
1359 bucket = XVECTOR (collection)->contents[index];
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1360 continue;
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1361 }
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1362 }
82403
9f1e0c774487 (Fall_completions): Use enum for type of table.
Richard M. Stallman <rms@gnu.org>
parents: 82140
diff changeset
1363 else /* if (type == hash_table) */
46224
98786eb38aed (Ftry_completion, Fall_completions, Ftest_completion):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46105
diff changeset
1364 {
75475
688a9d290d4d (Ftry_completion, Fall_completions, Fcompleting_read, Ftest_completion):
Richard M. Stallman <rms@gnu.org>
parents: 75431
diff changeset
1365 while (index < HASH_TABLE_SIZE (XHASH_TABLE (collection))
688a9d290d4d (Ftry_completion, Fall_completions, Fcompleting_read, Ftest_completion):
Richard M. Stallman <rms@gnu.org>
parents: 75431
diff changeset
1366 && NILP (HASH_HASH (XHASH_TABLE (collection), index)))
46224
98786eb38aed (Ftry_completion, Fall_completions, Ftest_completion):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46105
diff changeset
1367 index++;
75475
688a9d290d4d (Ftry_completion, Fall_completions, Fcompleting_read, Ftest_completion):
Richard M. Stallman <rms@gnu.org>
parents: 75431
diff changeset
1368 if (index >= HASH_TABLE_SIZE (XHASH_TABLE (collection)))
46224
98786eb38aed (Ftry_completion, Fall_completions, Ftest_completion):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46105
diff changeset
1369 break;
98786eb38aed (Ftry_completion, Fall_completions, Ftest_completion):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46105
diff changeset
1370 else
75475
688a9d290d4d (Ftry_completion, Fall_completions, Fcompleting_read, Ftest_completion):
Richard M. Stallman <rms@gnu.org>
parents: 75431
diff changeset
1371 elt = eltstring = HASH_KEY (XHASH_TABLE (collection), index++);
46224
98786eb38aed (Ftry_completion, Fall_completions, Ftest_completion):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46105
diff changeset
1372 }
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1373
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1374 /* Is this element a possible completion? */
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1375
60210
469c72af5168 (Ftry_completion, Fall_completions): Allow both string
Kim F. Storm <storm@cua.dk>
parents: 58908
diff changeset
1376 if (SYMBOLP (eltstring))
469c72af5168 (Ftry_completion, Fall_completions): Allow both string
Kim F. Storm <storm@cua.dk>
parents: 58908
diff changeset
1377 eltstring = Fsymbol_name (eltstring);
469c72af5168 (Ftry_completion, Fall_completions): Allow both string
Kim F. Storm <storm@cua.dk>
parents: 58908
diff changeset
1378
9120
ed766dfb4efe (read_minibuf, Fread_from_minibuffer, Fread_buffer, Ftry_completion,
Karl Heuer <kwzh@gnu.org>
parents: 9049
diff changeset
1379 if (STRINGP (eltstring)
46370
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 46293
diff changeset
1380 && SCHARS (string) <= SCHARS (eltstring)
58908
e1f3effbdccb (Fall_completions): Add var `zero' and use it in loop.
Richard M. Stallman <rms@gnu.org>
parents: 58896
diff changeset
1381 && (tem = Fcompare_strings (eltstring, zero,
46370
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 46293
diff changeset
1382 make_number (SCHARS (string)),
58908
e1f3effbdccb (Fall_completions): Add var `zero' and use it in loop.
Richard M. Stallman <rms@gnu.org>
parents: 58896
diff changeset
1383 string, zero, Qnil,
53827
44d25617bd98 (Fminibufferp, Fread_from_minibuffer)
Luc Teirlinck <teirllm@auburn.edu>
parents: 53364
diff changeset
1384 completion_ignore_case ? Qt : Qnil),
21672
79703e781c0a (Ftry_completion): Use Fcompare_strings.
Richard M. Stallman <rms@gnu.org>
parents: 21529
diff changeset
1385 EQ (Qt, tem)))
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1386 {
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1387 /* Yes. */
6589
764913e8463c (Vcompletion_regexp_list): New var.
Richard M. Stallman <rms@gnu.org>
parents: 6544
diff changeset
1388 Lisp_Object regexps;
764913e8463c (Vcompletion_regexp_list): New var.
Richard M. Stallman <rms@gnu.org>
parents: 6544
diff changeset
1389
764913e8463c (Vcompletion_regexp_list): New var.
Richard M. Stallman <rms@gnu.org>
parents: 6544
diff changeset
1390 /* Ignore this element if it fails to match all the regexps. */
56167
ce63b548f490 (Ftry_completion, Fall_completions): Do lazy binding
David Kastrup <dak@gnu.org>
parents: 56087
diff changeset
1391 {
ce63b548f490 (Ftry_completion, Fall_completions): Do lazy binding
David Kastrup <dak@gnu.org>
parents: 56087
diff changeset
1392 for (regexps = Vcompletion_regexp_list; CONSP (regexps);
ce63b548f490 (Ftry_completion, Fall_completions): Do lazy binding
David Kastrup <dak@gnu.org>
parents: 56087
diff changeset
1393 regexps = XCDR (regexps))
ce63b548f490 (Ftry_completion, Fall_completions): Do lazy binding
David Kastrup <dak@gnu.org>
parents: 56087
diff changeset
1394 {
ce63b548f490 (Ftry_completion, Fall_completions): Do lazy binding
David Kastrup <dak@gnu.org>
parents: 56087
diff changeset
1395 if (bindcount < 0) {
ce63b548f490 (Ftry_completion, Fall_completions): Do lazy binding
David Kastrup <dak@gnu.org>
parents: 56087
diff changeset
1396 bindcount = SPECPDL_INDEX ();
ce63b548f490 (Ftry_completion, Fall_completions): Do lazy binding
David Kastrup <dak@gnu.org>
parents: 56087
diff changeset
1397 specbind (Qcase_fold_search,
ce63b548f490 (Ftry_completion, Fall_completions): Do lazy binding
David Kastrup <dak@gnu.org>
parents: 56087
diff changeset
1398 completion_ignore_case ? Qt : Qnil);
56087
3d12da599e18 (Ftry_completion, Fall_completions, Ftest_completion):
Andreas Schwab <schwab@suse.de>
parents: 55924
diff changeset
1399 }
56167
ce63b548f490 (Ftry_completion, Fall_completions): Do lazy binding
David Kastrup <dak@gnu.org>
parents: 56087
diff changeset
1400 tem = Fstring_match (XCAR (regexps), eltstring, zero);
ce63b548f490 (Ftry_completion, Fall_completions): Do lazy binding
David Kastrup <dak@gnu.org>
parents: 56087
diff changeset
1401 if (NILP (tem))
ce63b548f490 (Ftry_completion, Fall_completions): Do lazy binding
David Kastrup <dak@gnu.org>
parents: 56087
diff changeset
1402 break;
ce63b548f490 (Ftry_completion, Fall_completions): Do lazy binding
David Kastrup <dak@gnu.org>
parents: 56087
diff changeset
1403 }
ce63b548f490 (Ftry_completion, Fall_completions): Do lazy binding
David Kastrup <dak@gnu.org>
parents: 56087
diff changeset
1404 if (CONSP (regexps))
ce63b548f490 (Ftry_completion, Fall_completions): Do lazy binding
David Kastrup <dak@gnu.org>
parents: 56087
diff changeset
1405 continue;
ce63b548f490 (Ftry_completion, Fall_completions): Do lazy binding
David Kastrup <dak@gnu.org>
parents: 56087
diff changeset
1406 }
6589
764913e8463c (Vcompletion_regexp_list): New var.
Richard M. Stallman <rms@gnu.org>
parents: 6544
diff changeset
1407
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1408 /* Ignore this element if there is a predicate
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1409 and the predicate doesn't like it. */
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1410
14083
3ac9d27214e4 (Ftry_completion, Fall_completions, Fcompleting_read): Harmonize arguments
Erik Naggum <erik@naggum.no>
parents: 13775
diff changeset
1411 if (!NILP (predicate))
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1412 {
14083
3ac9d27214e4 (Ftry_completion, Fall_completions, Fcompleting_read): Harmonize arguments
Erik Naggum <erik@naggum.no>
parents: 13775
diff changeset
1413 if (EQ (predicate, Qcommandp))
44939
d4ace8c553e4 (Fall_completions, Ftry_completion): New arg to Fcommandp.
Richard M. Stallman <rms@gnu.org>
parents: 44469
diff changeset
1414 tem = Fcommandp (elt, Qnil);
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1415 else
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1416 {
82403
9f1e0c774487 (Fall_completions): Use enum for type of table.
Richard M. Stallman <rms@gnu.org>
parents: 82140
diff changeset
1417 if (bindcount >= 0)
9f1e0c774487 (Fall_completions): Use enum for type of table.
Richard M. Stallman <rms@gnu.org>
parents: 82140
diff changeset
1418 {
9f1e0c774487 (Fall_completions): Use enum for type of table.
Richard M. Stallman <rms@gnu.org>
parents: 82140
diff changeset
1419 unbind_to (bindcount, Qnil);
9f1e0c774487 (Fall_completions): Use enum for type of table.
Richard M. Stallman <rms@gnu.org>
parents: 82140
diff changeset
1420 bindcount = -1;
9f1e0c774487 (Fall_completions): Use enum for type of table.
Richard M. Stallman <rms@gnu.org>
parents: 82140
diff changeset
1421 }
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1422 GCPRO4 (tail, string, eltstring, bestmatch);
82403
9f1e0c774487 (Fall_completions): Use enum for type of table.
Richard M. Stallman <rms@gnu.org>
parents: 82140
diff changeset
1423 tem = (type == hash_table
9f1e0c774487 (Fall_completions): Use enum for type of table.
Richard M. Stallman <rms@gnu.org>
parents: 82140
diff changeset
1424 ? call2 (predicate, elt,
9f1e0c774487 (Fall_completions): Use enum for type of table.
Richard M. Stallman <rms@gnu.org>
parents: 82140
diff changeset
1425 HASH_VALUE (XHASH_TABLE (collection),
9f1e0c774487 (Fall_completions): Use enum for type of table.
Richard M. Stallman <rms@gnu.org>
parents: 82140
diff changeset
1426 index - 1))
9f1e0c774487 (Fall_completions): Use enum for type of table.
Richard M. Stallman <rms@gnu.org>
parents: 82140
diff changeset
1427 : call1 (predicate, elt));
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1428 UNGCPRO;
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1429 }
488
4fddd0f0fc33 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 426
diff changeset
1430 if (NILP (tem)) continue;
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1431 }
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1432
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1433 /* Update computation of how much all possible completions match */
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1434
488
4fddd0f0fc33 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 426
diff changeset
1435 if (NILP (bestmatch))
20584
24e567feaf18 (test_completion): Pass both kinds of size to oblookup.
Richard M. Stallman <rms@gnu.org>
parents: 20570
diff changeset
1436 {
46224
98786eb38aed (Ftry_completion, Fall_completions, Ftest_completion):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46105
diff changeset
1437 matchcount = 1;
20584
24e567feaf18 (test_completion): Pass both kinds of size to oblookup.
Richard M. Stallman <rms@gnu.org>
parents: 20570
diff changeset
1438 bestmatch = eltstring;
46370
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 46293
diff changeset
1439 bestmatchsize = SCHARS (eltstring);
20584
24e567feaf18 (test_completion): Pass both kinds of size to oblookup.
Richard M. Stallman <rms@gnu.org>
parents: 20570
diff changeset
1440 }
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1441 else
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1442 {
46370
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 46293
diff changeset
1443 compare = min (bestmatchsize, SCHARS (eltstring));
58908
e1f3effbdccb (Fall_completions): Add var `zero' and use it in loop.
Richard M. Stallman <rms@gnu.org>
parents: 58896
diff changeset
1444 tem = Fcompare_strings (bestmatch, zero,
21672
79703e781c0a (Ftry_completion): Use Fcompare_strings.
Richard M. Stallman <rms@gnu.org>
parents: 21529
diff changeset
1445 make_number (compare),
58908
e1f3effbdccb (Fall_completions): Add var `zero' and use it in loop.
Richard M. Stallman <rms@gnu.org>
parents: 58896
diff changeset
1446 eltstring, zero,
21672
79703e781c0a (Ftry_completion): Use Fcompare_strings.
Richard M. Stallman <rms@gnu.org>
parents: 21529
diff changeset
1447 make_number (compare),
79703e781c0a (Ftry_completion): Use Fcompare_strings.
Richard M. Stallman <rms@gnu.org>
parents: 21529
diff changeset
1448 completion_ignore_case ? Qt : Qnil);
79703e781c0a (Ftry_completion): Use Fcompare_strings.
Richard M. Stallman <rms@gnu.org>
parents: 21529
diff changeset
1449 if (EQ (tem, Qt))
79703e781c0a (Ftry_completion): Use Fcompare_strings.
Richard M. Stallman <rms@gnu.org>
parents: 21529
diff changeset
1450 matchsize = compare;
79703e781c0a (Ftry_completion): Use Fcompare_strings.
Richard M. Stallman <rms@gnu.org>
parents: 21529
diff changeset
1451 else if (XINT (tem) < 0)
79703e781c0a (Ftry_completion): Use Fcompare_strings.
Richard M. Stallman <rms@gnu.org>
parents: 21529
diff changeset
1452 matchsize = - XINT (tem) - 1;
79703e781c0a (Ftry_completion): Use Fcompare_strings.
Richard M. Stallman <rms@gnu.org>
parents: 21529
diff changeset
1453 else
79703e781c0a (Ftry_completion): Use Fcompare_strings.
Richard M. Stallman <rms@gnu.org>
parents: 21529
diff changeset
1454 matchsize = XINT (tem) - 1;
79703e781c0a (Ftry_completion): Use Fcompare_strings.
Richard M. Stallman <rms@gnu.org>
parents: 21529
diff changeset
1455
330
9b1e9b496441 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 284
diff changeset
1456 if (completion_ignore_case)
9b1e9b496441 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 284
diff changeset
1457 {
9b1e9b496441 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 284
diff changeset
1458 /* If this is an exact match except for case,
9b1e9b496441 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 284
diff changeset
1459 use it as the best match rather than one that is not an
9b1e9b496441 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 284
diff changeset
1460 exact match. This way, we get the case pattern
9b1e9b496441 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 284
diff changeset
1461 of the actual match. */
46370
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 46293
diff changeset
1462 if ((matchsize == SCHARS (eltstring)
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 46293
diff changeset
1463 && matchsize < SCHARS (bestmatch))
330
9b1e9b496441 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 284
diff changeset
1464 ||
9b1e9b496441 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 284
diff changeset
1465 /* If there is more than one exact match ignoring case,
9b1e9b496441 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 284
diff changeset
1466 and one of them is exact including case,
9b1e9b496441 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 284
diff changeset
1467 prefer that one. */
9b1e9b496441 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 284
diff changeset
1468 /* If there is no exact match ignoring case,
9b1e9b496441 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 284
diff changeset
1469 prefer a match that does not change the case
9b1e9b496441 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 284
diff changeset
1470 of the input. */
46370
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 46293
diff changeset
1471 ((matchsize == SCHARS (eltstring))
330
9b1e9b496441 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 284
diff changeset
1472 ==
46370
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 46293
diff changeset
1473 (matchsize == SCHARS (bestmatch))
58908
e1f3effbdccb (Fall_completions): Add var `zero' and use it in loop.
Richard M. Stallman <rms@gnu.org>
parents: 58896
diff changeset
1474 && (tem = Fcompare_strings (eltstring, zero,
46370
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 46293
diff changeset
1475 make_number (SCHARS (string)),
58908
e1f3effbdccb (Fall_completions): Add var `zero' and use it in loop.
Richard M. Stallman <rms@gnu.org>
parents: 58896
diff changeset
1476 string, zero,
21672
79703e781c0a (Ftry_completion): Use Fcompare_strings.
Richard M. Stallman <rms@gnu.org>
parents: 21529
diff changeset
1477 Qnil,
79703e781c0a (Ftry_completion): Use Fcompare_strings.
Richard M. Stallman <rms@gnu.org>
parents: 21529
diff changeset
1478 Qnil),
79703e781c0a (Ftry_completion): Use Fcompare_strings.
Richard M. Stallman <rms@gnu.org>
parents: 21529
diff changeset
1479 EQ (Qt, tem))
58908
e1f3effbdccb (Fall_completions): Add var `zero' and use it in loop.
Richard M. Stallman <rms@gnu.org>
parents: 58896
diff changeset
1480 && (tem = Fcompare_strings (bestmatch, zero,
46370
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 46293
diff changeset
1481 make_number (SCHARS (string)),
58908
e1f3effbdccb (Fall_completions): Add var `zero' and use it in loop.
Richard M. Stallman <rms@gnu.org>
parents: 58896
diff changeset
1482 string, zero,
21672
79703e781c0a (Ftry_completion): Use Fcompare_strings.
Richard M. Stallman <rms@gnu.org>
parents: 21529
diff changeset
1483 Qnil,
79703e781c0a (Ftry_completion): Use Fcompare_strings.
Richard M. Stallman <rms@gnu.org>
parents: 21529
diff changeset
1484 Qnil),
79703e781c0a (Ftry_completion): Use Fcompare_strings.
Richard M. Stallman <rms@gnu.org>
parents: 21529
diff changeset
1485 ! EQ (Qt, tem))))
330
9b1e9b496441 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 284
diff changeset
1486 bestmatch = eltstring;
9b1e9b496441 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 284
diff changeset
1487 }
46370
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 46293
diff changeset
1488 if (bestmatchsize != SCHARS (eltstring)
46224
98786eb38aed (Ftry_completion, Fall_completions, Ftest_completion):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46105
diff changeset
1489 || bestmatchsize != matchsize)
98786eb38aed (Ftry_completion, Fall_completions, Ftest_completion):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46105
diff changeset
1490 /* Don't count the same string multiple times. */
98786eb38aed (Ftry_completion, Fall_completions, Ftest_completion):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46105
diff changeset
1491 matchcount++;
330
9b1e9b496441 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 284
diff changeset
1492 bestmatchsize = matchsize;
46370
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 46293
diff changeset
1493 if (matchsize <= SCHARS (string)
76384
24884385912f (Ftry_completion): Don't short circuit if completion-ignore-case is
Chong Yidong <cyd@stupidchicken.com>
parents: 76369
diff changeset
1494 /* If completion-ignore-case is non-nil, don't
24884385912f (Ftry_completion): Don't short circuit if completion-ignore-case is
Chong Yidong <cyd@stupidchicken.com>
parents: 76369
diff changeset
1495 short-circuit because we want to find the best
24884385912f (Ftry_completion): Don't short circuit if completion-ignore-case is
Chong Yidong <cyd@stupidchicken.com>
parents: 76369
diff changeset
1496 possible match *including* case differences. */
24884385912f (Ftry_completion): Don't short circuit if completion-ignore-case is
Chong Yidong <cyd@stupidchicken.com>
parents: 76369
diff changeset
1497 && !completion_ignore_case
44469
f9a82a50692e (read_minibuf): Use empty_string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43595
diff changeset
1498 && matchcount > 1)
f9a82a50692e (read_minibuf): Use empty_string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43595
diff changeset
1499 /* No need to look any further. */
f9a82a50692e (read_minibuf): Use empty_string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43595
diff changeset
1500 break;
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1501 }
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1502 }
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1503 }
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1504
56167
ce63b548f490 (Ftry_completion, Fall_completions): Do lazy binding
David Kastrup <dak@gnu.org>
parents: 56087
diff changeset
1505 if (bindcount >= 0) {
ce63b548f490 (Ftry_completion, Fall_completions): Do lazy binding
David Kastrup <dak@gnu.org>
parents: 56087
diff changeset
1506 unbind_to (bindcount, Qnil);
ce63b548f490 (Ftry_completion, Fall_completions): Do lazy binding
David Kastrup <dak@gnu.org>
parents: 56087
diff changeset
1507 bindcount = -1;
ce63b548f490 (Ftry_completion, Fall_completions): Do lazy binding
David Kastrup <dak@gnu.org>
parents: 56087
diff changeset
1508 }
ce63b548f490 (Ftry_completion, Fall_completions): Do lazy binding
David Kastrup <dak@gnu.org>
parents: 56087
diff changeset
1509
488
4fddd0f0fc33 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 426
diff changeset
1510 if (NILP (bestmatch))
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1511 return Qnil; /* No completions found */
330
9b1e9b496441 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 284
diff changeset
1512 /* If we are ignoring case, and there is no exact match,
9b1e9b496441 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 284
diff changeset
1513 and no additional text was supplied,
9b1e9b496441 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 284
diff changeset
1514 don't change the case of what the user typed. */
46370
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 46293
diff changeset
1515 if (completion_ignore_case && bestmatchsize == SCHARS (string)
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 46293
diff changeset
1516 && SCHARS (bestmatch) > bestmatchsize)
21854
67719e401cce (minibuf_conform_representation): New function.
Richard M. Stallman <rms@gnu.org>
parents: 21672
diff changeset
1517 return minibuf_conform_representation (string, bestmatch);
330
9b1e9b496441 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 284
diff changeset
1518
9b1e9b496441 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 284
diff changeset
1519 /* Return t if the supplied string is an exact match (counting case);
9b1e9b496441 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 284
diff changeset
1520 it does not require any change to be made. */
95781
a17231a1f8f8 * dired.c (file_name_completion): Don't return t if the match is exact
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 95575
diff changeset
1521 if (matchcount == 1 && !NILP (Fequal (bestmatch, string)))
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1522 return Qt;
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1523
9316
5f7cfbdef872 (read_minibuf, get_minibuffer, read_minibuf_unwind, Fread_from_minibuffer,
Karl Heuer <kwzh@gnu.org>
parents: 9183
diff changeset
1524 XSETFASTINT (zero, 0); /* Else extract the part in which */
5f7cfbdef872 (read_minibuf, get_minibuffer, read_minibuf_unwind, Fread_from_minibuffer,
Karl Heuer <kwzh@gnu.org>
parents: 9183
diff changeset
1525 XSETFASTINT (end, bestmatchsize); /* all completions agree */
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1526 return Fsubstring (bestmatch, zero, end);
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1527 }
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1528
10173
6a4f5fc9d3f9 (Fall_completions): New arg hide_spaces.
Richard M. Stallman <rms@gnu.org>
parents: 10086
diff changeset
1529 DEFUN ("all-completions", Fall_completions, Sall_completions, 2, 4, 0,
75475
688a9d290d4d (Ftry_completion, Fall_completions, Fcompleting_read, Ftest_completion):
Richard M. Stallman <rms@gnu.org>
parents: 75431
diff changeset
1530 doc: /* Search for partial matches to STRING in COLLECTION.
688a9d290d4d (Ftry_completion, Fall_completions, Fcompleting_read, Ftest_completion):
Richard M. Stallman <rms@gnu.org>
parents: 75431
diff changeset
1531 Test each of the possible completions specified by COLLECTION
688a9d290d4d (Ftry_completion, Fall_completions, Fcompleting_read, Ftest_completion):
Richard M. Stallman <rms@gnu.org>
parents: 75431
diff changeset
1532 to see if it begins with STRING. The possible completions may be
60210
469c72af5168 (Ftry_completion, Fall_completions): Allow both string
Kim F. Storm <storm@cua.dk>
parents: 58908
diff changeset
1533 strings or symbols. Symbols are converted to strings before testing,
469c72af5168 (Ftry_completion, Fall_completions): Allow both string
Kim F. Storm <storm@cua.dk>
parents: 58908
diff changeset
1534 see `symbol-name'.
75475
688a9d290d4d (Ftry_completion, Fall_completions, Fcompleting_read, Ftest_completion):
Richard M. Stallman <rms@gnu.org>
parents: 75431
diff changeset
1535 The value is a list of all the possible completions that match STRING.
688a9d290d4d (Ftry_completion, Fall_completions, Fcompleting_read, Ftest_completion):
Richard M. Stallman <rms@gnu.org>
parents: 75431
diff changeset
1536
688a9d290d4d (Ftry_completion, Fall_completions, Fcompleting_read, Ftest_completion):
Richard M. Stallman <rms@gnu.org>
parents: 75431
diff changeset
1537 If COLLECTION is an alist, the keys (cars of elements) are the
688a9d290d4d (Ftry_completion, Fall_completions, Fcompleting_read, Ftest_completion):
Richard M. Stallman <rms@gnu.org>
parents: 75431
diff changeset
1538 possible completions. If an element is not a cons cell, then the
688a9d290d4d (Ftry_completion, Fall_completions, Fcompleting_read, Ftest_completion):
Richard M. Stallman <rms@gnu.org>
parents: 75431
diff changeset
1539 element itself is the possible completion.
688a9d290d4d (Ftry_completion, Fall_completions, Fcompleting_read, Ftest_completion):
Richard M. Stallman <rms@gnu.org>
parents: 75431
diff changeset
1540 If COLLECTION is a hash-table, all the keys that are strings or symbols
688a9d290d4d (Ftry_completion, Fall_completions, Fcompleting_read, Ftest_completion):
Richard M. Stallman <rms@gnu.org>
parents: 75431
diff changeset
1541 are the possible completions.
688a9d290d4d (Ftry_completion, Fall_completions, Fcompleting_read, Ftest_completion):
Richard M. Stallman <rms@gnu.org>
parents: 75431
diff changeset
1542 If COLLECTION is an obarray, the names of all symbols in the obarray
688a9d290d4d (Ftry_completion, Fall_completions, Fcompleting_read, Ftest_completion):
Richard M. Stallman <rms@gnu.org>
parents: 75431
diff changeset
1543 are the possible completions.
688a9d290d4d (Ftry_completion, Fall_completions, Fcompleting_read, Ftest_completion):
Richard M. Stallman <rms@gnu.org>
parents: 75431
diff changeset
1544
688a9d290d4d (Ftry_completion, Fall_completions, Fcompleting_read, Ftest_completion):
Richard M. Stallman <rms@gnu.org>
parents: 75431
diff changeset
1545 COLLECTION can also be a function to do the completion itself.
39966
1c2d486200f3 Put doc strings in comments.
Pavel Janík <Pavel@Janik.cz>
parents: 39838
diff changeset
1546 It receives three arguments: the values STRING, PREDICATE and t.
1c2d486200f3 Put doc strings in comments.
Pavel Janík <Pavel@Janik.cz>
parents: 39838
diff changeset
1547 Whatever it returns becomes the value of `all-completions'.
1c2d486200f3 Put doc strings in comments.
Pavel Janík <Pavel@Janik.cz>
parents: 39838
diff changeset
1548
1c2d486200f3 Put doc strings in comments.
Pavel Janík <Pavel@Janik.cz>
parents: 39838
diff changeset
1549 If optional third argument PREDICATE is non-nil,
1c2d486200f3 Put doc strings in comments.
Pavel Janík <Pavel@Janik.cz>
parents: 39838
diff changeset
1550 it is used to test each possible match.
1c2d486200f3 Put doc strings in comments.
Pavel Janík <Pavel@Janik.cz>
parents: 39838
diff changeset
1551 The match is a candidate only if PREDICATE returns non-nil.
1c2d486200f3 Put doc strings in comments.
Pavel Janík <Pavel@Janik.cz>
parents: 39838
diff changeset
1552 The argument given to PREDICATE is the alist element
75475
688a9d290d4d (Ftry_completion, Fall_completions, Fcompleting_read, Ftest_completion):
Richard M. Stallman <rms@gnu.org>
parents: 75431
diff changeset
1553 or the symbol from the obarray. If COLLECTION is a hash-table,
46224
98786eb38aed (Ftry_completion, Fall_completions, Ftest_completion):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46105
diff changeset
1554 predicate is called with two arguments: the key and the value.
39966
1c2d486200f3 Put doc strings in comments.
Pavel Janík <Pavel@Janik.cz>
parents: 39838
diff changeset
1555 Additionally to this predicate, `completion-regexp-list'
1c2d486200f3 Put doc strings in comments.
Pavel Janík <Pavel@Janik.cz>
parents: 39838
diff changeset
1556 is used to further constrain the set of candidates.
1c2d486200f3 Put doc strings in comments.
Pavel Janík <Pavel@Janik.cz>
parents: 39838
diff changeset
1557
1c2d486200f3 Put doc strings in comments.
Pavel Janík <Pavel@Janik.cz>
parents: 39838
diff changeset
1558 If the optional fourth argument HIDE-SPACES is non-nil,
75475
688a9d290d4d (Ftry_completion, Fall_completions, Fcompleting_read, Ftest_completion):
Richard M. Stallman <rms@gnu.org>
parents: 75431
diff changeset
1559 strings in COLLECTION that start with a space
39989
c652433b7f2f Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents: 39973
diff changeset
1560 are ignored unless STRING itself starts with a space. */)
75475
688a9d290d4d (Ftry_completion, Fall_completions, Fcompleting_read, Ftest_completion):
Richard M. Stallman <rms@gnu.org>
parents: 75431
diff changeset
1561 (string, collection, predicate, hide_spaces)
688a9d290d4d (Ftry_completion, Fall_completions, Fcompleting_read, Ftest_completion):
Richard M. Stallman <rms@gnu.org>
parents: 75431
diff changeset
1562 Lisp_Object string, collection, predicate, hide_spaces;
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1563 {
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1564 Lisp_Object tail, elt, eltstring;
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1565 Lisp_Object allmatches;
75475
688a9d290d4d (Ftry_completion, Fall_completions, Fcompleting_read, Ftest_completion):
Richard M. Stallman <rms@gnu.org>
parents: 75431
diff changeset
1566 int type = HASH_TABLE_P (collection) ? 3
688a9d290d4d (Ftry_completion, Fall_completions, Fcompleting_read, Ftest_completion):
Richard M. Stallman <rms@gnu.org>
parents: 75431
diff changeset
1567 : VECTORP (collection) ? 2
688a9d290d4d (Ftry_completion, Fall_completions, Fcompleting_read, Ftest_completion):
Richard M. Stallman <rms@gnu.org>
parents: 75431
diff changeset
1568 : NILP (collection) || (CONSP (collection)
688a9d290d4d (Ftry_completion, Fall_completions, Fcompleting_read, Ftest_completion):
Richard M. Stallman <rms@gnu.org>
parents: 75431
diff changeset
1569 && (!SYMBOLP (XCAR (collection))
688a9d290d4d (Ftry_completion, Fall_completions, Fcompleting_read, Ftest_completion):
Richard M. Stallman <rms@gnu.org>
parents: 75431
diff changeset
1570 || NILP (XCAR (collection))));
31829
43566b0aec59 Avoid some more compiler warnings.
Gerd Moellmann <gerd@gnu.org>
parents: 31140
diff changeset
1571 int index = 0, obsize = 0;
56167
ce63b548f490 (Ftry_completion, Fall_completions): Do lazy binding
David Kastrup <dak@gnu.org>
parents: 56087
diff changeset
1572 int bindcount = -1;
58908
e1f3effbdccb (Fall_completions): Add var `zero' and use it in loop.
Richard M. Stallman <rms@gnu.org>
parents: 58896
diff changeset
1573 Lisp_Object bucket, tem, zero;
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1574 struct gcpro gcpro1, gcpro2, gcpro3, gcpro4;
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1575
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40403
diff changeset
1576 CHECK_STRING (string);
46224
98786eb38aed (Ftry_completion, Fall_completions, Ftest_completion):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46105
diff changeset
1577 if (type == 0)
75475
688a9d290d4d (Ftry_completion, Fall_completions, Fcompleting_read, Ftest_completion):
Richard M. Stallman <rms@gnu.org>
parents: 75431
diff changeset
1578 return call3 (collection, string, predicate, Qt);
31829
43566b0aec59 Avoid some more compiler warnings.
Gerd Moellmann <gerd@gnu.org>
parents: 31140
diff changeset
1579 allmatches = bucket = Qnil;
58908
e1f3effbdccb (Fall_completions): Add var `zero' and use it in loop.
Richard M. Stallman <rms@gnu.org>
parents: 58896
diff changeset
1580 zero = make_number (0);
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1581
75475
688a9d290d4d (Ftry_completion, Fall_completions, Fcompleting_read, Ftest_completion):
Richard M. Stallman <rms@gnu.org>
parents: 75431
diff changeset
1582 /* If COLLECTION is not a list, set TAIL just for gc pro. */
688a9d290d4d (Ftry_completion, Fall_completions, Fcompleting_read, Ftest_completion):
Richard M. Stallman <rms@gnu.org>
parents: 75431
diff changeset
1583 tail = collection;
46224
98786eb38aed (Ftry_completion, Fall_completions, Ftest_completion):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46105
diff changeset
1584 if (type == 2)
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1585 {
75475
688a9d290d4d (Ftry_completion, Fall_completions, Fcompleting_read, Ftest_completion):
Richard M. Stallman <rms@gnu.org>
parents: 75431
diff changeset
1586 obsize = XVECTOR (collection)->size;
688a9d290d4d (Ftry_completion, Fall_completions, Fcompleting_read, Ftest_completion):
Richard M. Stallman <rms@gnu.org>
parents: 75431
diff changeset
1587 bucket = XVECTOR (collection)->contents[index];
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1588 }
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1589
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1590 while (1)
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1591 {
46224
98786eb38aed (Ftry_completion, Fall_completions, Ftest_completion):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46105
diff changeset
1592 /* Get the next element of the alist, obarray, or hash-table. */
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1593 /* Exit the loop if the elements are all used up. */
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1594 /* elt gets the alist element or symbol.
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1595 eltstring gets the name to check as a completion. */
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1596
46224
98786eb38aed (Ftry_completion, Fall_completions, Ftest_completion):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46105
diff changeset
1597 if (type == 1)
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1598 {
44469
f9a82a50692e (read_minibuf): Use empty_string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43595
diff changeset
1599 if (!CONSP (tail))
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1600 break;
44469
f9a82a50692e (read_minibuf): Use empty_string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43595
diff changeset
1601 elt = XCAR (tail);
f9a82a50692e (read_minibuf): Use empty_string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43595
diff changeset
1602 eltstring = CONSP (elt) ? XCAR (elt) : elt;
f9a82a50692e (read_minibuf): Use empty_string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43595
diff changeset
1603 tail = XCDR (tail);
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1604 }
46224
98786eb38aed (Ftry_completion, Fall_completions, Ftest_completion):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46105
diff changeset
1605 else if (type == 2)
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1606 {
58908
e1f3effbdccb (Fall_completions): Add var `zero' and use it in loop.
Richard M. Stallman <rms@gnu.org>
parents: 58896
diff changeset
1607 if (!EQ (bucket, zero))
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1608 {
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1609 elt = bucket;
60210
469c72af5168 (Ftry_completion, Fall_completions): Allow both string
Kim F. Storm <storm@cua.dk>
parents: 58908
diff changeset
1610 eltstring = elt;
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1611 if (XSYMBOL (bucket)->next)
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1612 XSETSYMBOL (bucket, XSYMBOL (bucket)->next);
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1613 else
9316
5f7cfbdef872 (read_minibuf, get_minibuffer, read_minibuf_unwind, Fread_from_minibuffer,
Karl Heuer <kwzh@gnu.org>
parents: 9183
diff changeset
1614 XSETFASTINT (bucket, 0);
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1615 }
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1616 else if (++index >= obsize)
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1617 break;
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1618 else
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1619 {
75475
688a9d290d4d (Ftry_completion, Fall_completions, Fcompleting_read, Ftest_completion):
Richard M. Stallman <rms@gnu.org>
parents: 75431
diff changeset
1620 bucket = XVECTOR (collection)->contents[index];
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1621 continue;
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1622 }
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1623 }
46224
98786eb38aed (Ftry_completion, Fall_completions, Ftest_completion):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46105
diff changeset
1624 else /* if (type == 3) */
98786eb38aed (Ftry_completion, Fall_completions, Ftest_completion):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46105
diff changeset
1625 {
75475
688a9d290d4d (Ftry_completion, Fall_completions, Fcompleting_read, Ftest_completion):
Richard M. Stallman <rms@gnu.org>
parents: 75431
diff changeset
1626 while (index < HASH_TABLE_SIZE (XHASH_TABLE (collection))
688a9d290d4d (Ftry_completion, Fall_completions, Fcompleting_read, Ftest_completion):
Richard M. Stallman <rms@gnu.org>
parents: 75431
diff changeset
1627 && NILP (HASH_HASH (XHASH_TABLE (collection), index)))
46224
98786eb38aed (Ftry_completion, Fall_completions, Ftest_completion):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46105
diff changeset
1628 index++;
75475
688a9d290d4d (Ftry_completion, Fall_completions, Fcompleting_read, Ftest_completion):
Richard M. Stallman <rms@gnu.org>
parents: 75431
diff changeset
1629 if (index >= HASH_TABLE_SIZE (XHASH_TABLE (collection)))
46224
98786eb38aed (Ftry_completion, Fall_completions, Ftest_completion):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46105
diff changeset
1630 break;
98786eb38aed (Ftry_completion, Fall_completions, Ftest_completion):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46105
diff changeset
1631 else
75475
688a9d290d4d (Ftry_completion, Fall_completions, Fcompleting_read, Ftest_completion):
Richard M. Stallman <rms@gnu.org>
parents: 75431
diff changeset
1632 elt = eltstring = HASH_KEY (XHASH_TABLE (collection), index++);
46224
98786eb38aed (Ftry_completion, Fall_completions, Ftest_completion):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46105
diff changeset
1633 }
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1634
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1635 /* Is this element a possible completion? */
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1636
60210
469c72af5168 (Ftry_completion, Fall_completions): Allow both string
Kim F. Storm <storm@cua.dk>
parents: 58908
diff changeset
1637 if (SYMBOLP (eltstring))
469c72af5168 (Ftry_completion, Fall_completions): Allow both string
Kim F. Storm <storm@cua.dk>
parents: 58908
diff changeset
1638 eltstring = Fsymbol_name (eltstring);
469c72af5168 (Ftry_completion, Fall_completions): Allow both string
Kim F. Storm <storm@cua.dk>
parents: 58908
diff changeset
1639
9120
ed766dfb4efe (read_minibuf, Fread_from_minibuffer, Fread_buffer, Ftry_completion,
Karl Heuer <kwzh@gnu.org>
parents: 9049
diff changeset
1640 if (STRINGP (eltstring)
46370
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 46293
diff changeset
1641 && SCHARS (string) <= SCHARS (eltstring)
10173
6a4f5fc9d3f9 (Fall_completions): New arg hide_spaces.
Richard M. Stallman <rms@gnu.org>
parents: 10086
diff changeset
1642 /* If HIDE_SPACES, reject alternatives that start with space
5369
409c8dd33f42 (Fall_completions): Allow completions that start with space
Richard M. Stallman <rms@gnu.org>
parents: 5238
diff changeset
1643 unless the input starts with space. */
46370
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 46293
diff changeset
1644 && ((SBYTES (string) > 0
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 46293
diff changeset
1645 && SREF (string, 0) == ' ')
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 46293
diff changeset
1646 || SREF (eltstring, 0) != ' '
10173
6a4f5fc9d3f9 (Fall_completions): New arg hide_spaces.
Richard M. Stallman <rms@gnu.org>
parents: 10086
diff changeset
1647 || NILP (hide_spaces))
58908
e1f3effbdccb (Fall_completions): Add var `zero' and use it in loop.
Richard M. Stallman <rms@gnu.org>
parents: 58896
diff changeset
1648 && (tem = Fcompare_strings (eltstring, zero,
46370
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 46293
diff changeset
1649 make_number (SCHARS (string)),
58908
e1f3effbdccb (Fall_completions): Add var `zero' and use it in loop.
Richard M. Stallman <rms@gnu.org>
parents: 58896
diff changeset
1650 string, zero,
46370
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 46293
diff changeset
1651 make_number (SCHARS (string)),
21672
79703e781c0a (Ftry_completion): Use Fcompare_strings.
Richard M. Stallman <rms@gnu.org>
parents: 21529
diff changeset
1652 completion_ignore_case ? Qt : Qnil),
79703e781c0a (Ftry_completion): Use Fcompare_strings.
Richard M. Stallman <rms@gnu.org>
parents: 21529
diff changeset
1653 EQ (Qt, tem)))
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1654 {
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1655 /* Yes. */
6589
764913e8463c (Vcompletion_regexp_list): New var.
Richard M. Stallman <rms@gnu.org>
parents: 6544
diff changeset
1656 Lisp_Object regexps;
764913e8463c (Vcompletion_regexp_list): New var.
Richard M. Stallman <rms@gnu.org>
parents: 6544
diff changeset
1657 Lisp_Object zero;
9316
5f7cfbdef872 (read_minibuf, get_minibuffer, read_minibuf_unwind, Fread_from_minibuffer,
Karl Heuer <kwzh@gnu.org>
parents: 9183
diff changeset
1658 XSETFASTINT (zero, 0);
6589
764913e8463c (Vcompletion_regexp_list): New var.
Richard M. Stallman <rms@gnu.org>
parents: 6544
diff changeset
1659
764913e8463c (Vcompletion_regexp_list): New var.
Richard M. Stallman <rms@gnu.org>
parents: 6544
diff changeset
1660 /* Ignore this element if it fails to match all the regexps. */
56167
ce63b548f490 (Ftry_completion, Fall_completions): Do lazy binding
David Kastrup <dak@gnu.org>
parents: 56087
diff changeset
1661 {
ce63b548f490 (Ftry_completion, Fall_completions): Do lazy binding
David Kastrup <dak@gnu.org>
parents: 56087
diff changeset
1662 for (regexps = Vcompletion_regexp_list; CONSP (regexps);
ce63b548f490 (Ftry_completion, Fall_completions): Do lazy binding
David Kastrup <dak@gnu.org>
parents: 56087
diff changeset
1663 regexps = XCDR (regexps))
ce63b548f490 (Ftry_completion, Fall_completions): Do lazy binding
David Kastrup <dak@gnu.org>
parents: 56087
diff changeset
1664 {
ce63b548f490 (Ftry_completion, Fall_completions): Do lazy binding
David Kastrup <dak@gnu.org>
parents: 56087
diff changeset
1665 if (bindcount < 0) {
ce63b548f490 (Ftry_completion, Fall_completions): Do lazy binding
David Kastrup <dak@gnu.org>
parents: 56087
diff changeset
1666 bindcount = SPECPDL_INDEX ();
ce63b548f490 (Ftry_completion, Fall_completions): Do lazy binding
David Kastrup <dak@gnu.org>
parents: 56087
diff changeset
1667 specbind (Qcase_fold_search,
ce63b548f490 (Ftry_completion, Fall_completions): Do lazy binding
David Kastrup <dak@gnu.org>
parents: 56087
diff changeset
1668 completion_ignore_case ? Qt : Qnil);
56087
3d12da599e18 (Ftry_completion, Fall_completions, Ftest_completion):
Andreas Schwab <schwab@suse.de>
parents: 55924
diff changeset
1669 }
56167
ce63b548f490 (Ftry_completion, Fall_completions): Do lazy binding
David Kastrup <dak@gnu.org>
parents: 56087
diff changeset
1670 tem = Fstring_match (XCAR (regexps), eltstring, zero);
ce63b548f490 (Ftry_completion, Fall_completions): Do lazy binding
David Kastrup <dak@gnu.org>
parents: 56087
diff changeset
1671 if (NILP (tem))
ce63b548f490 (Ftry_completion, Fall_completions): Do lazy binding
David Kastrup <dak@gnu.org>
parents: 56087
diff changeset
1672 break;
ce63b548f490 (Ftry_completion, Fall_completions): Do lazy binding
David Kastrup <dak@gnu.org>
parents: 56087
diff changeset
1673 }
ce63b548f490 (Ftry_completion, Fall_completions): Do lazy binding
David Kastrup <dak@gnu.org>
parents: 56087
diff changeset
1674 if (CONSP (regexps))
ce63b548f490 (Ftry_completion, Fall_completions): Do lazy binding
David Kastrup <dak@gnu.org>
parents: 56087
diff changeset
1675 continue;
ce63b548f490 (Ftry_completion, Fall_completions): Do lazy binding
David Kastrup <dak@gnu.org>
parents: 56087
diff changeset
1676 }
6589
764913e8463c (Vcompletion_regexp_list): New var.
Richard M. Stallman <rms@gnu.org>
parents: 6544
diff changeset
1677
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1678 /* Ignore this element if there is a predicate
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1679 and the predicate doesn't like it. */
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1680
14083
3ac9d27214e4 (Ftry_completion, Fall_completions, Fcompleting_read): Harmonize arguments
Erik Naggum <erik@naggum.no>
parents: 13775
diff changeset
1681 if (!NILP (predicate))
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1682 {
14083
3ac9d27214e4 (Ftry_completion, Fall_completions, Fcompleting_read): Harmonize arguments
Erik Naggum <erik@naggum.no>
parents: 13775
diff changeset
1683 if (EQ (predicate, Qcommandp))
44939
d4ace8c553e4 (Fall_completions, Ftry_completion): New arg to Fcommandp.
Richard M. Stallman <rms@gnu.org>
parents: 44469
diff changeset
1684 tem = Fcommandp (elt, Qnil);
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1685 else
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1686 {
56167
ce63b548f490 (Ftry_completion, Fall_completions): Do lazy binding
David Kastrup <dak@gnu.org>
parents: 56087
diff changeset
1687 if (bindcount >= 0) {
ce63b548f490 (Ftry_completion, Fall_completions): Do lazy binding
David Kastrup <dak@gnu.org>
parents: 56087
diff changeset
1688 unbind_to (bindcount, Qnil);
ce63b548f490 (Ftry_completion, Fall_completions): Do lazy binding
David Kastrup <dak@gnu.org>
parents: 56087
diff changeset
1689 bindcount = -1;
ce63b548f490 (Ftry_completion, Fall_completions): Do lazy binding
David Kastrup <dak@gnu.org>
parents: 56087
diff changeset
1690 }
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1691 GCPRO4 (tail, eltstring, allmatches, string);
46224
98786eb38aed (Ftry_completion, Fall_completions, Ftest_completion):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46105
diff changeset
1692 tem = type == 3
98786eb38aed (Ftry_completion, Fall_completions, Ftest_completion):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46105
diff changeset
1693 ? call2 (predicate, elt,
75475
688a9d290d4d (Ftry_completion, Fall_completions, Fcompleting_read, Ftest_completion):
Richard M. Stallman <rms@gnu.org>
parents: 75431
diff changeset
1694 HASH_VALUE (XHASH_TABLE (collection), index - 1))
46224
98786eb38aed (Ftry_completion, Fall_completions, Ftest_completion):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46105
diff changeset
1695 : call1 (predicate, elt);
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1696 UNGCPRO;
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1697 }
488
4fddd0f0fc33 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 426
diff changeset
1698 if (NILP (tem)) continue;
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1699 }
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1700 /* Ok => put it on the list. */
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1701 allmatches = Fcons (eltstring, allmatches);
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1702 }
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1703 }
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1704
56167
ce63b548f490 (Ftry_completion, Fall_completions): Do lazy binding
David Kastrup <dak@gnu.org>
parents: 56087
diff changeset
1705 if (bindcount >= 0) {
ce63b548f490 (Ftry_completion, Fall_completions): Do lazy binding
David Kastrup <dak@gnu.org>
parents: 56087
diff changeset
1706 unbind_to (bindcount, Qnil);
ce63b548f490 (Ftry_completion, Fall_completions): Do lazy binding
David Kastrup <dak@gnu.org>
parents: 56087
diff changeset
1707 bindcount = -1;
ce63b548f490 (Ftry_completion, Fall_completions): Do lazy binding
David Kastrup <dak@gnu.org>
parents: 56087
diff changeset
1708 }
ce63b548f490 (Ftry_completion, Fall_completions): Do lazy binding
David Kastrup <dak@gnu.org>
parents: 56087
diff changeset
1709
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1710 return Fnreverse (allmatches);
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1711 }
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1712
39966
1c2d486200f3 Put doc strings in comments.
Pavel Janík <Pavel@Janik.cz>
parents: 39838
diff changeset
1713 DEFUN ("completing-read", Fcompleting_read, Scompleting_read, 2, 8, 0,
39989
c652433b7f2f Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents: 39973
diff changeset
1714 doc: /* Read a string in the minibuffer, with completion.
39966
1c2d486200f3 Put doc strings in comments.
Pavel Janík <Pavel@Janik.cz>
parents: 39838
diff changeset
1715 PROMPT is a string to prompt with; normally it ends in a colon and a space.
75475
688a9d290d4d (Ftry_completion, Fall_completions, Fcompleting_read, Ftest_completion):
Richard M. Stallman <rms@gnu.org>
parents: 75431
diff changeset
1716 COLLECTION can be a list of strings, an alist, an obarray or a hash table.
688a9d290d4d (Ftry_completion, Fall_completions, Fcompleting_read, Ftest_completion):
Richard M. Stallman <rms@gnu.org>
parents: 75431
diff changeset
1717 COLLECTION can also be a function to do the completion itself.
688a9d290d4d (Ftry_completion, Fall_completions, Fcompleting_read, Ftest_completion):
Richard M. Stallman <rms@gnu.org>
parents: 75431
diff changeset
1718 PREDICATE limits completion to a subset of COLLECTION.
39966
1c2d486200f3 Put doc strings in comments.
Pavel Janík <Pavel@Janik.cz>
parents: 39838
diff changeset
1719 See `try-completion' and `all-completions' for more details
75475
688a9d290d4d (Ftry_completion, Fall_completions, Fcompleting_read, Ftest_completion):
Richard M. Stallman <rms@gnu.org>
parents: 75431
diff changeset
1720 on completion, COLLECTION, and PREDICATE.
39966
1c2d486200f3 Put doc strings in comments.
Pavel Janík <Pavel@Janik.cz>
parents: 39838
diff changeset
1721
81672
3f6e5ebf9c3b (Fcompleting_read): New value `confirm-only' for `require-match'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 81280
diff changeset
1722 REQUIRE-MATCH can take the following values:
3f6e5ebf9c3b (Fcompleting_read): New value `confirm-only' for `require-match'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 81280
diff changeset
1723 - t means that the user is not allowed to exit unless
3f6e5ebf9c3b (Fcompleting_read): New value `confirm-only' for `require-match'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 81280
diff changeset
1724 the input is (or completes to) an element of COLLECTION or is null.
3f6e5ebf9c3b (Fcompleting_read): New value `confirm-only' for `require-match'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 81280
diff changeset
1725 - nil means that the user can exit with any input.
3f6e5ebf9c3b (Fcompleting_read): New value `confirm-only' for `require-match'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 81280
diff changeset
1726 - `confirm-only' means that the user can exit with any input, but she will
3f6e5ebf9c3b (Fcompleting_read): New value `confirm-only' for `require-match'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 81280
diff changeset
1727 need to confirm her choice if the input is not an element of COLLECTION.
3f6e5ebf9c3b (Fcompleting_read): New value `confirm-only' for `require-match'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 81280
diff changeset
1728 - anything else behaves like t except that typing RET does not exit if it
3f6e5ebf9c3b (Fcompleting_read): New value `confirm-only' for `require-match'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 81280
diff changeset
1729 does non-null completion.
3f6e5ebf9c3b (Fcompleting_read): New value `confirm-only' for `require-match'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 81280
diff changeset
1730
94528
ea7a33f062ae (Fread_from_minibuffer, Fread_string, Fread_command)
Juri Linkov <juri@jurta.org>
parents: 94189
diff changeset
1731 If the input is null, `completing-read' returns DEF, or the first element
ea7a33f062ae (Fread_from_minibuffer, Fread_string, Fread_command)
Juri Linkov <juri@jurta.org>
parents: 94189
diff changeset
1732 of the list of default values, or an empty string if DEF is nil,
ea7a33f062ae (Fread_from_minibuffer, Fread_string, Fread_command)
Juri Linkov <juri@jurta.org>
parents: 94189
diff changeset
1733 regardless of the value of REQUIRE-MATCH.
53827
44d25617bd98 (Fminibufferp, Fread_from_minibuffer)
Luc Teirlinck <teirllm@auburn.edu>
parents: 53364
diff changeset
1734
44d25617bd98 (Fminibufferp, Fread_from_minibuffer)
Luc Teirlinck <teirllm@auburn.edu>
parents: 53364
diff changeset
1735 If INITIAL-INPUT is non-nil, insert it in the minibuffer initially,
44d25617bd98 (Fminibufferp, Fread_from_minibuffer)
Luc Teirlinck <teirllm@auburn.edu>
parents: 53364
diff changeset
1736 with point positioned at the end.
44d25617bd98 (Fminibufferp, Fread_from_minibuffer)
Luc Teirlinck <teirllm@auburn.edu>
parents: 53364
diff changeset
1737 If it is (STRING . POSITION), the initial input is STRING, but point
44d25617bd98 (Fminibufferp, Fread_from_minibuffer)
Luc Teirlinck <teirllm@auburn.edu>
parents: 53364
diff changeset
1738 is placed at _zero-indexed_ position POSITION in STRING. (*Note*
44d25617bd98 (Fminibufferp, Fread_from_minibuffer)
Luc Teirlinck <teirllm@auburn.edu>
parents: 53364
diff changeset
1739 that this is different from `read-from-minibuffer' and related
44d25617bd98 (Fminibufferp, Fread_from_minibuffer)
Luc Teirlinck <teirllm@auburn.edu>
parents: 53364
diff changeset
1740 functions, which use one-indexing for POSITION.) This feature is
44d25617bd98 (Fminibufferp, Fread_from_minibuffer)
Luc Teirlinck <teirllm@auburn.edu>
parents: 53364
diff changeset
1741 deprecated--it is best to pass nil for INITIAL-INPUT and supply the
44d25617bd98 (Fminibufferp, Fread_from_minibuffer)
Luc Teirlinck <teirllm@auburn.edu>
parents: 53364
diff changeset
1742 default value DEF instead. The user can yank the default value into
44d25617bd98 (Fminibufferp, Fread_from_minibuffer)
Luc Teirlinck <teirllm@auburn.edu>
parents: 53364
diff changeset
1743 the minibuffer easily using \\[next-history-element].
44d25617bd98 (Fminibufferp, Fread_from_minibuffer)
Luc Teirlinck <teirllm@auburn.edu>
parents: 53364
diff changeset
1744
44d25617bd98 (Fminibufferp, Fread_from_minibuffer)
Luc Teirlinck <teirllm@auburn.edu>
parents: 53364
diff changeset
1745 HIST, if non-nil, specifies a history list and optionally the initial
44d25617bd98 (Fminibufferp, Fread_from_minibuffer)
Luc Teirlinck <teirllm@auburn.edu>
parents: 53364
diff changeset
1746 position in the list. It can be a symbol, which is the history list
44d25617bd98 (Fminibufferp, Fread_from_minibuffer)
Luc Teirlinck <teirllm@auburn.edu>
parents: 53364
diff changeset
1747 variable to use, or it can be a cons cell (HISTVAR . HISTPOS). In
44d25617bd98 (Fminibufferp, Fread_from_minibuffer)
Luc Teirlinck <teirllm@auburn.edu>
parents: 53364
diff changeset
1748 that case, HISTVAR is the history list variable to use, and HISTPOS
44d25617bd98 (Fminibufferp, Fread_from_minibuffer)
Luc Teirlinck <teirllm@auburn.edu>
parents: 53364
diff changeset
1749 is the initial position (the position in the list used by the
44d25617bd98 (Fminibufferp, Fread_from_minibuffer)
Luc Teirlinck <teirllm@auburn.edu>
parents: 53364
diff changeset
1750 minibuffer history commands). For consistency, you should also
44d25617bd98 (Fminibufferp, Fread_from_minibuffer)
Luc Teirlinck <teirllm@auburn.edu>
parents: 53364
diff changeset
1751 specify that element of the history as the value of
55924
082785bed641 (Fcompleting_read): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 55795
diff changeset
1752 INITIAL-INPUT. (This is the only case in which you should use
53827
44d25617bd98 (Fminibufferp, Fread_from_minibuffer)
Luc Teirlinck <teirllm@auburn.edu>
parents: 53364
diff changeset
1753 INITIAL-INPUT instead of DEF.) Positions are counted starting from
44d25617bd98 (Fminibufferp, Fread_from_minibuffer)
Luc Teirlinck <teirllm@auburn.edu>
parents: 53364
diff changeset
1754 1 at the beginning of the list. The variable `history-length'
44d25617bd98 (Fminibufferp, Fread_from_minibuffer)
Luc Teirlinck <teirllm@auburn.edu>
parents: 53364
diff changeset
1755 controls the maximum length of a history list.
48727
62ad43be82d7 (Fcompleting_read): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 47620
diff changeset
1756
94528
ea7a33f062ae (Fread_from_minibuffer, Fread_string, Fread_command)
Juri Linkov <juri@jurta.org>
parents: 94189
diff changeset
1757 DEF, if non-nil, is the default value or the list of default values.
39966
1c2d486200f3 Put doc strings in comments.
Pavel Janík <Pavel@Janik.cz>
parents: 39838
diff changeset
1758
1c2d486200f3 Put doc strings in comments.
Pavel Janík <Pavel@Janik.cz>
parents: 39838
diff changeset
1759 If INHERIT-INPUT-METHOD is non-nil, the minibuffer inherits
42881
aa810c4a602b (Fminibuffer_contents)
Pavel Janík <Pavel@Janik.cz>
parents: 42168
diff changeset
1760 the current input method and the setting of `enable-multibyte-characters'.
39966
1c2d486200f3 Put doc strings in comments.
Pavel Janík <Pavel@Janik.cz>
parents: 39838
diff changeset
1761
1c2d486200f3 Put doc strings in comments.
Pavel Janík <Pavel@Janik.cz>
parents: 39838
diff changeset
1762 Completion ignores case if the ambient value of
39989
c652433b7f2f Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents: 39973
diff changeset
1763 `completion-ignore-case' is non-nil. */)
75475
688a9d290d4d (Ftry_completion, Fall_completions, Fcompleting_read, Ftest_completion):
Richard M. Stallman <rms@gnu.org>
parents: 75431
diff changeset
1764 (prompt, collection, predicate, require_match, initial_input, hist, def, inherit_input_method)
688a9d290d4d (Ftry_completion, Fall_completions, Fcompleting_read, Ftest_completion):
Richard M. Stallman <rms@gnu.org>
parents: 75431
diff changeset
1765 Lisp_Object prompt, collection, predicate, require_match, initial_input;
26953
def8de0fb500 (Fcompleting_read): Rename arg INIT to INITIAL_INPUT.
Richard M. Stallman <rms@gnu.org>
parents: 26824
diff changeset
1766 Lisp_Object hist, def, inherit_input_method;
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1767 {
53312
93fc4ea3546c (Fcompleting_read): Undo previous change.
Luc Teirlinck <teirllm@auburn.edu>
parents: 53251
diff changeset
1768 Lisp_Object val, histvar, histpos, position;
93fc4ea3546c (Fcompleting_read): Undo previous change.
Luc Teirlinck <teirllm@auburn.edu>
parents: 53251
diff changeset
1769 Lisp_Object init;
93fc4ea3546c (Fcompleting_read): Undo previous change.
Luc Teirlinck <teirllm@auburn.edu>
parents: 53251
diff changeset
1770 int pos = 0;
46293
1fb8f75062c6 Use macro SPECPDL_INDEX.
Juanma Barranquero <lekktu@gmail.com>
parents: 46285
diff changeset
1771 int count = SPECPDL_INDEX ();
18862
2498c062473b (Fcompleting_read): gcpro def.
Richard M. Stallman <rms@gnu.org>
parents: 18740
diff changeset
1772 struct gcpro gcpro1;
2498c062473b (Fcompleting_read): gcpro def.
Richard M. Stallman <rms@gnu.org>
parents: 18740
diff changeset
1773
53312
93fc4ea3546c (Fcompleting_read): Undo previous change.
Luc Teirlinck <teirllm@auburn.edu>
parents: 53251
diff changeset
1774 init = initial_input;
18862
2498c062473b (Fcompleting_read): gcpro def.
Richard M. Stallman <rms@gnu.org>
parents: 18740
diff changeset
1775 GCPRO1 (def);
2498c062473b (Fcompleting_read): gcpro def.
Richard M. Stallman <rms@gnu.org>
parents: 18740
diff changeset
1776
75475
688a9d290d4d (Ftry_completion, Fall_completions, Fcompleting_read, Ftest_completion):
Richard M. Stallman <rms@gnu.org>
parents: 75431
diff changeset
1777 specbind (Qminibuffer_completion_table, collection);
14083
3ac9d27214e4 (Ftry_completion, Fall_completions, Fcompleting_read): Harmonize arguments
Erik Naggum <erik@naggum.no>
parents: 13775
diff changeset
1778 specbind (Qminibuffer_completion_predicate, predicate);
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1779 specbind (Qminibuffer_completion_confirm,
44469
f9a82a50692e (read_minibuf): Use empty_string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43595
diff changeset
1780 EQ (require_match, Qt) ? Qnil : require_match);
864
fe5f6b7c9727 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 765
diff changeset
1781
53312
93fc4ea3546c (Fcompleting_read): Undo previous change.
Luc Teirlinck <teirllm@auburn.edu>
parents: 53251
diff changeset
1782 position = Qnil;
93fc4ea3546c (Fcompleting_read): Undo previous change.
Luc Teirlinck <teirllm@auburn.edu>
parents: 53251
diff changeset
1783 if (!NILP (init))
93fc4ea3546c (Fcompleting_read): Undo previous change.
Luc Teirlinck <teirllm@auburn.edu>
parents: 53251
diff changeset
1784 {
93fc4ea3546c (Fcompleting_read): Undo previous change.
Luc Teirlinck <teirllm@auburn.edu>
parents: 53251
diff changeset
1785 if (CONSP (init))
93fc4ea3546c (Fcompleting_read): Undo previous change.
Luc Teirlinck <teirllm@auburn.edu>
parents: 53251
diff changeset
1786 {
93fc4ea3546c (Fcompleting_read): Undo previous change.
Luc Teirlinck <teirllm@auburn.edu>
parents: 53251
diff changeset
1787 position = Fcdr (init);
93fc4ea3546c (Fcompleting_read): Undo previous change.
Luc Teirlinck <teirllm@auburn.edu>
parents: 53251
diff changeset
1788 init = Fcar (init);
93fc4ea3546c (Fcompleting_read): Undo previous change.
Luc Teirlinck <teirllm@auburn.edu>
parents: 53251
diff changeset
1789 }
93fc4ea3546c (Fcompleting_read): Undo previous change.
Luc Teirlinck <teirllm@auburn.edu>
parents: 53251
diff changeset
1790 CHECK_STRING (init);
93fc4ea3546c (Fcompleting_read): Undo previous change.
Luc Teirlinck <teirllm@auburn.edu>
parents: 53251
diff changeset
1791 if (!NILP (position))
93fc4ea3546c (Fcompleting_read): Undo previous change.
Luc Teirlinck <teirllm@auburn.edu>
parents: 53251
diff changeset
1792 {
93fc4ea3546c (Fcompleting_read): Undo previous change.
Luc Teirlinck <teirllm@auburn.edu>
parents: 53251
diff changeset
1793 CHECK_NUMBER (position);
93fc4ea3546c (Fcompleting_read): Undo previous change.
Luc Teirlinck <teirllm@auburn.edu>
parents: 53251
diff changeset
1794 /* Convert to distance from end of input. */
93fc4ea3546c (Fcompleting_read): Undo previous change.
Luc Teirlinck <teirllm@auburn.edu>
parents: 53251
diff changeset
1795 pos = XINT (position) - SCHARS (init);
93fc4ea3546c (Fcompleting_read): Undo previous change.
Luc Teirlinck <teirllm@auburn.edu>
parents: 53251
diff changeset
1796 }
93fc4ea3546c (Fcompleting_read): Undo previous change.
Luc Teirlinck <teirllm@auburn.edu>
parents: 53251
diff changeset
1797 }
93fc4ea3546c (Fcompleting_read): Undo previous change.
Luc Teirlinck <teirllm@auburn.edu>
parents: 53251
diff changeset
1798
9120
ed766dfb4efe (read_minibuf, Fread_from_minibuffer, Fread_buffer, Ftry_completion,
Karl Heuer <kwzh@gnu.org>
parents: 9049
diff changeset
1799 if (SYMBOLP (hist))
864
fe5f6b7c9727 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 765
diff changeset
1800 {
fe5f6b7c9727 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 765
diff changeset
1801 histvar = hist;
fe5f6b7c9727 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 765
diff changeset
1802 histpos = Qnil;
fe5f6b7c9727 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 765
diff changeset
1803 }
fe5f6b7c9727 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 765
diff changeset
1804 else
fe5f6b7c9727 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 765
diff changeset
1805 {
fe5f6b7c9727 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 765
diff changeset
1806 histvar = Fcar_safe (hist);
fe5f6b7c9727 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 765
diff changeset
1807 histpos = Fcdr_safe (hist);
fe5f6b7c9727 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 765
diff changeset
1808 }
fe5f6b7c9727 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 765
diff changeset
1809 if (NILP (histvar))
fe5f6b7c9727 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 765
diff changeset
1810 histvar = Qminibuffer_history;
fe5f6b7c9727 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 765
diff changeset
1811 if (NILP (histpos))
9316
5f7cfbdef872 (read_minibuf, get_minibuffer, read_minibuf_unwind, Fread_from_minibuffer,
Karl Heuer <kwzh@gnu.org>
parents: 9183
diff changeset
1812 XSETFASTINT (histpos, 0);
864
fe5f6b7c9727 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 765
diff changeset
1813
488
4fddd0f0fc33 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 426
diff changeset
1814 val = read_minibuf (NILP (require_match)
67260
f5d06dd5ca9b (Fcompleting_read): If Vminibuffer_completing_file_name is
Eli Zaretskii <eliz@gnu.org>
parents: 67132
diff changeset
1815 ? (NILP (Vminibuffer_completing_file_name)
75720
d93f8cf55f80 (read_minibuf): Fix 2007-01-30 change.
Kim F. Storm <storm@cua.dk>
parents: 75558
diff changeset
1816 || EQ (Vminibuffer_completing_file_name, Qlambda)
67260
f5d06dd5ca9b (Fcompleting_read): If Vminibuffer_completing_file_name is
Eli Zaretskii <eliz@gnu.org>
parents: 67132
diff changeset
1817 ? Vminibuffer_local_completion_map
f5d06dd5ca9b (Fcompleting_read): If Vminibuffer_completing_file_name is
Eli Zaretskii <eliz@gnu.org>
parents: 67132
diff changeset
1818 : Vminibuffer_local_filename_completion_map)
f5d06dd5ca9b (Fcompleting_read): If Vminibuffer_completing_file_name is
Eli Zaretskii <eliz@gnu.org>
parents: 67132
diff changeset
1819 : (NILP (Vminibuffer_completing_file_name)
75720
d93f8cf55f80 (read_minibuf): Fix 2007-01-30 change.
Kim F. Storm <storm@cua.dk>
parents: 75558
diff changeset
1820 || EQ (Vminibuffer_completing_file_name, Qlambda)
67260
f5d06dd5ca9b (Fcompleting_read): If Vminibuffer_completing_file_name is
Eli Zaretskii <eliz@gnu.org>
parents: 67132
diff changeset
1821 ? Vminibuffer_local_must_match_map
95575
d34a432d5863 * keymap.c (Vminibuffer_local_filename_must_match_map):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 95188
diff changeset
1822 : Vminibuffer_local_filename_must_match_map),
53312
93fc4ea3546c (Fcompleting_read): Undo previous change.
Luc Teirlinck <teirllm@auburn.edu>
parents: 53251
diff changeset
1823 init, prompt, make_number (pos), 0,
19545
a7f1c1acde93 (Qcurrent_input_method, Qactivate_input_method): New
Kenichi Handa <handa@m17n.org>
parents: 19417
diff changeset
1824 histvar, histpos, def, 0,
70930
f3ddca90b6b1 (read_minibuf): Remove arg KEEP_ALL. Callers changed.
Juri Linkov <juri@jurta.org>
parents: 70499
diff changeset
1825 !NILP (inherit_input_method));
20865
7a730831aa0e (read_minibuf): If input is empty, return empty string.
Richard M. Stallman <rms@gnu.org>
parents: 20754
diff changeset
1826
46370
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 46293
diff changeset
1827 if (STRINGP (val) && SCHARS (val) == 0 && ! NILP (def))
85516
6260015b7802 Allow minibuffer default to be a list of default values.
Juri Linkov <juri@jurta.org>
parents: 85372
diff changeset
1828 val = CONSP (def) ? XCAR (def) : def;
20865
7a730831aa0e (read_minibuf): If input is empty, return empty string.
Richard M. Stallman <rms@gnu.org>
parents: 20754
diff changeset
1829
18862
2498c062473b (Fcompleting_read): gcpro def.
Richard M. Stallman <rms@gnu.org>
parents: 18740
diff changeset
1830 RETURN_UNGCPRO (unbind_to (count, val));
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1831 }
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1832
44469
f9a82a50692e (read_minibuf): Use empty_string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43595
diff changeset
1833 Lisp_Object Fassoc_string ();
9398
a8e59db60df6 (test_completion): New function, extracted from do_completion.
Richard M. Stallman <rms@gnu.org>
parents: 9316
diff changeset
1834
a8e59db60df6 (test_completion): New function, extracted from do_completion.
Richard M. Stallman <rms@gnu.org>
parents: 9316
diff changeset
1835 /* Test whether TXT is an exact completion. */
44469
f9a82a50692e (read_minibuf): Use empty_string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43595
diff changeset
1836 DEFUN ("test-completion", Ftest_completion, Stest_completion, 2, 3, 0,
f9a82a50692e (read_minibuf): Use empty_string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43595
diff changeset
1837 doc: /* Return non-nil if STRING is a valid completion.
f9a82a50692e (read_minibuf): Use empty_string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43595
diff changeset
1838 Takes the same arguments as `all-completions' and `try-completion'.
75475
688a9d290d4d (Ftry_completion, Fall_completions, Fcompleting_read, Ftest_completion):
Richard M. Stallman <rms@gnu.org>
parents: 75431
diff changeset
1839 If COLLECTION is a function, it is called with three arguments:
44469
f9a82a50692e (read_minibuf): Use empty_string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43595
diff changeset
1840 the values STRING, PREDICATE and `lambda'. */)
75475
688a9d290d4d (Ftry_completion, Fall_completions, Fcompleting_read, Ftest_completion):
Richard M. Stallman <rms@gnu.org>
parents: 75431
diff changeset
1841 (string, collection, predicate)
688a9d290d4d (Ftry_completion, Fall_completions, Fcompleting_read, Ftest_completion):
Richard M. Stallman <rms@gnu.org>
parents: 75431
diff changeset
1842 Lisp_Object string, collection, predicate;
9398
a8e59db60df6 (test_completion): New function, extracted from do_completion.
Richard M. Stallman <rms@gnu.org>
parents: 9316
diff changeset
1843 {
53251
9bb418538a0f (read_minibuf): Allow INITIAL to be a cons of a string and an integer.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
1844 Lisp_Object regexps, tail, tem = Qnil;
46224
98786eb38aed (Ftry_completion, Fall_completions, Ftest_completion):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46105
diff changeset
1845 int i = 0;
44469
f9a82a50692e (read_minibuf): Use empty_string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43595
diff changeset
1846
f9a82a50692e (read_minibuf): Use empty_string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43595
diff changeset
1847 CHECK_STRING (string);
9398
a8e59db60df6 (test_completion): New function, extracted from do_completion.
Richard M. Stallman <rms@gnu.org>
parents: 9316
diff changeset
1848
75475
688a9d290d4d (Ftry_completion, Fall_completions, Fcompleting_read, Ftest_completion):
Richard M. Stallman <rms@gnu.org>
parents: 75431
diff changeset
1849 if ((CONSP (collection)
688a9d290d4d (Ftry_completion, Fall_completions, Fcompleting_read, Ftest_completion):
Richard M. Stallman <rms@gnu.org>
parents: 75431
diff changeset
1850 && (!SYMBOLP (XCAR (collection)) || NILP (XCAR (collection))))
688a9d290d4d (Ftry_completion, Fall_completions, Fcompleting_read, Ftest_completion):
Richard M. Stallman <rms@gnu.org>
parents: 75431
diff changeset
1851 || NILP (collection))
9398
a8e59db60df6 (test_completion): New function, extracted from do_completion.
Richard M. Stallman <rms@gnu.org>
parents: 9316
diff changeset
1852 {
75475
688a9d290d4d (Ftry_completion, Fall_completions, Fcompleting_read, Ftest_completion):
Richard M. Stallman <rms@gnu.org>
parents: 75431
diff changeset
1853 tem = Fassoc_string (string, collection, completion_ignore_case ? Qt : Qnil);
64467
39ca630ac332 (Ftest_completion): Fix odd syntax in test.
Ken Raeburn <raeburn@raeburn.org>
parents: 64084
diff changeset
1854 if (NILP (tem))
44469
f9a82a50692e (read_minibuf): Use empty_string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43595
diff changeset
1855 return Qnil;
f9a82a50692e (read_minibuf): Use empty_string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43595
diff changeset
1856 }
75475
688a9d290d4d (Ftry_completion, Fall_completions, Fcompleting_read, Ftest_completion):
Richard M. Stallman <rms@gnu.org>
parents: 75431
diff changeset
1857 else if (VECTORP (collection))
44469
f9a82a50692e (read_minibuf): Use empty_string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43595
diff changeset
1858 {
f9a82a50692e (read_minibuf): Use empty_string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43595
diff changeset
1859 /* Bypass intern-soft as that loses for nil. */
75475
688a9d290d4d (Ftry_completion, Fall_completions, Fcompleting_read, Ftest_completion):
Richard M. Stallman <rms@gnu.org>
parents: 75431
diff changeset
1860 tem = oblookup (collection,
46370
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 46293
diff changeset
1861 SDATA (string),
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 46293
diff changeset
1862 SCHARS (string),
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 46293
diff changeset
1863 SBYTES (string));
9460
9f5fef5890c9 (test_completion): Fix reversed condition.
Karl Heuer <kwzh@gnu.org>
parents: 9398
diff changeset
1864 if (!SYMBOLP (tem))
22034
430908755560 (assoc_for_completion): Use Fcompare_strings.
Richard M. Stallman <rms@gnu.org>
parents: 22010
diff changeset
1865 {
44469
f9a82a50692e (read_minibuf): Use empty_string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43595
diff changeset
1866 if (STRING_MULTIBYTE (string))
f9a82a50692e (read_minibuf): Use empty_string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43595
diff changeset
1867 string = Fstring_make_unibyte (string);
22034
430908755560 (assoc_for_completion): Use Fcompare_strings.
Richard M. Stallman <rms@gnu.org>
parents: 22010
diff changeset
1868 else
44469
f9a82a50692e (read_minibuf): Use empty_string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43595
diff changeset
1869 string = Fstring_make_multibyte (string);
22034
430908755560 (assoc_for_completion): Use Fcompare_strings.
Richard M. Stallman <rms@gnu.org>
parents: 22010
diff changeset
1870
75475
688a9d290d4d (Ftry_completion, Fall_completions, Fcompleting_read, Ftest_completion):
Richard M. Stallman <rms@gnu.org>
parents: 75431
diff changeset
1871 tem = oblookup (collection,
46370
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 46293
diff changeset
1872 SDATA (string),
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 46293
diff changeset
1873 SCHARS (string),
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 46293
diff changeset
1874 SBYTES (string));
22034
430908755560 (assoc_for_completion): Use Fcompare_strings.
Richard M. Stallman <rms@gnu.org>
parents: 22010
diff changeset
1875 }
53251
9bb418538a0f (read_minibuf): Allow INITIAL to be a cons of a string and an integer.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
1876
9bb418538a0f (read_minibuf): Allow INITIAL to be a cons of a string and an integer.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
1877 if (completion_ignore_case && !SYMBOLP (tem))
9bb418538a0f (read_minibuf): Allow INITIAL to be a cons of a string and an integer.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
1878 {
75475
688a9d290d4d (Ftry_completion, Fall_completions, Fcompleting_read, Ftest_completion):
Richard M. Stallman <rms@gnu.org>
parents: 75431
diff changeset
1879 for (i = XVECTOR (collection)->size - 1; i >= 0; i--)
53251
9bb418538a0f (read_minibuf): Allow INITIAL to be a cons of a string and an integer.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
1880 {
75475
688a9d290d4d (Ftry_completion, Fall_completions, Fcompleting_read, Ftest_completion):
Richard M. Stallman <rms@gnu.org>
parents: 75431
diff changeset
1881 tail = XVECTOR (collection)->contents[i];
53251
9bb418538a0f (read_minibuf): Allow INITIAL to be a cons of a string and an integer.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
1882 if (SYMBOLP (tail))
9bb418538a0f (read_minibuf): Allow INITIAL to be a cons of a string and an integer.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
1883 while (1)
9bb418538a0f (read_minibuf): Allow INITIAL to be a cons of a string and an integer.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
1884 {
9bb418538a0f (read_minibuf): Allow INITIAL to be a cons of a string and an integer.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
1885 if (EQ((Fcompare_strings (string, make_number (0), Qnil,
9bb418538a0f (read_minibuf): Allow INITIAL to be a cons of a string and an integer.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
1886 Fsymbol_name (tail),
9bb418538a0f (read_minibuf): Allow INITIAL to be a cons of a string and an integer.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
1887 make_number (0) , Qnil, Qt)),
9bb418538a0f (read_minibuf): Allow INITIAL to be a cons of a string and an integer.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
1888 Qt))
9bb418538a0f (read_minibuf): Allow INITIAL to be a cons of a string and an integer.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
1889 {
9bb418538a0f (read_minibuf): Allow INITIAL to be a cons of a string and an integer.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
1890 tem = tail;
9bb418538a0f (read_minibuf): Allow INITIAL to be a cons of a string and an integer.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
1891 break;
9bb418538a0f (read_minibuf): Allow INITIAL to be a cons of a string and an integer.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
1892 }
9bb418538a0f (read_minibuf): Allow INITIAL to be a cons of a string and an integer.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
1893 if (XSYMBOL (tail)->next == 0)
9bb418538a0f (read_minibuf): Allow INITIAL to be a cons of a string and an integer.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
1894 break;
9bb418538a0f (read_minibuf): Allow INITIAL to be a cons of a string and an integer.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
1895 XSETSYMBOL (tail, XSYMBOL (tail)->next);
9bb418538a0f (read_minibuf): Allow INITIAL to be a cons of a string and an integer.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
1896 }
9bb418538a0f (read_minibuf): Allow INITIAL to be a cons of a string and an integer.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
1897 }
9bb418538a0f (read_minibuf): Allow INITIAL to be a cons of a string and an integer.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
1898 }
9bb418538a0f (read_minibuf): Allow INITIAL to be a cons of a string and an integer.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
1899
9bb418538a0f (read_minibuf): Allow INITIAL to be a cons of a string and an integer.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
1900 if (!SYMBOLP (tem))
9bb418538a0f (read_minibuf): Allow INITIAL to be a cons of a string and an integer.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
1901 return Qnil;
9398
a8e59db60df6 (test_completion): New function, extracted from do_completion.
Richard M. Stallman <rms@gnu.org>
parents: 9316
diff changeset
1902 }
75475
688a9d290d4d (Ftry_completion, Fall_completions, Fcompleting_read, Ftest_completion):
Richard M. Stallman <rms@gnu.org>
parents: 75431
diff changeset
1903 else if (HASH_TABLE_P (collection))
46224
98786eb38aed (Ftry_completion, Fall_completions, Ftest_completion):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46105
diff changeset
1904 {
75475
688a9d290d4d (Ftry_completion, Fall_completions, Fcompleting_read, Ftest_completion):
Richard M. Stallman <rms@gnu.org>
parents: 75431
diff changeset
1905 struct Lisp_Hash_Table *h = XHASH_TABLE (collection);
53251
9bb418538a0f (read_minibuf): Allow INITIAL to be a cons of a string and an integer.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
1906 i = hash_lookup (h, string, NULL);
46224
98786eb38aed (Ftry_completion, Fall_completions, Ftest_completion):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46105
diff changeset
1907 if (i >= 0)
53251
9bb418538a0f (read_minibuf): Allow INITIAL to be a cons of a string and an integer.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
1908 tem = HASH_KEY (h, i);
46224
98786eb38aed (Ftry_completion, Fall_completions, Ftest_completion):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46105
diff changeset
1909 else
53251
9bb418538a0f (read_minibuf): Allow INITIAL to be a cons of a string and an integer.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
1910 for (i = 0; i < HASH_TABLE_SIZE (h); ++i)
9bb418538a0f (read_minibuf): Allow INITIAL to be a cons of a string and an integer.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
1911 if (!NILP (HASH_HASH (h, i)) &&
9bb418538a0f (read_minibuf): Allow INITIAL to be a cons of a string and an integer.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
1912 EQ (Fcompare_strings (string, make_number (0), Qnil,
9bb418538a0f (read_minibuf): Allow INITIAL to be a cons of a string and an integer.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
1913 HASH_KEY (h, i), make_number (0) , Qnil,
9bb418538a0f (read_minibuf): Allow INITIAL to be a cons of a string and an integer.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
1914 completion_ignore_case ? Qt : Qnil),
9bb418538a0f (read_minibuf): Allow INITIAL to be a cons of a string and an integer.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
1915 Qt))
9bb418538a0f (read_minibuf): Allow INITIAL to be a cons of a string and an integer.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
1916 {
9bb418538a0f (read_minibuf): Allow INITIAL to be a cons of a string and an integer.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
1917 tem = HASH_KEY (h, i);
9bb418538a0f (read_minibuf): Allow INITIAL to be a cons of a string and an integer.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
1918 break;
9bb418538a0f (read_minibuf): Allow INITIAL to be a cons of a string and an integer.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
1919 }
9bb418538a0f (read_minibuf): Allow INITIAL to be a cons of a string and an integer.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
1920 if (!STRINGP (tem))
46224
98786eb38aed (Ftry_completion, Fall_completions, Ftest_completion):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46105
diff changeset
1921 return Qnil;
98786eb38aed (Ftry_completion, Fall_completions, Ftest_completion):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46105
diff changeset
1922 }
9398
a8e59db60df6 (test_completion): New function, extracted from do_completion.
Richard M. Stallman <rms@gnu.org>
parents: 9316
diff changeset
1923 else
75475
688a9d290d4d (Ftry_completion, Fall_completions, Fcompleting_read, Ftest_completion):
Richard M. Stallman <rms@gnu.org>
parents: 75431
diff changeset
1924 return call3 (collection, string, predicate, Qlambda);
44469
f9a82a50692e (read_minibuf): Use empty_string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43595
diff changeset
1925
f9a82a50692e (read_minibuf): Use empty_string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43595
diff changeset
1926 /* Reject this element if it fails to match all the regexps. */
56087
3d12da599e18 (Ftry_completion, Fall_completions, Ftest_completion):
Andreas Schwab <schwab@suse.de>
parents: 55924
diff changeset
1927 if (CONSP (Vcompletion_regexp_list))
3d12da599e18 (Ftry_completion, Fall_completions, Ftest_completion):
Andreas Schwab <schwab@suse.de>
parents: 55924
diff changeset
1928 {
3d12da599e18 (Ftry_completion, Fall_completions, Ftest_completion):
Andreas Schwab <schwab@suse.de>
parents: 55924
diff changeset
1929 int count = SPECPDL_INDEX ();
3d12da599e18 (Ftry_completion, Fall_completions, Ftest_completion):
Andreas Schwab <schwab@suse.de>
parents: 55924
diff changeset
1930 specbind (Qcase_fold_search, completion_ignore_case ? Qt : Qnil);
3d12da599e18 (Ftry_completion, Fall_completions, Ftest_completion):
Andreas Schwab <schwab@suse.de>
parents: 55924
diff changeset
1931 for (regexps = Vcompletion_regexp_list; CONSP (regexps);
3d12da599e18 (Ftry_completion, Fall_completions, Ftest_completion):
Andreas Schwab <schwab@suse.de>
parents: 55924
diff changeset
1932 regexps = XCDR (regexps))
3d12da599e18 (Ftry_completion, Fall_completions, Ftest_completion):
Andreas Schwab <schwab@suse.de>
parents: 55924
diff changeset
1933 {
3d12da599e18 (Ftry_completion, Fall_completions, Ftest_completion):
Andreas Schwab <schwab@suse.de>
parents: 55924
diff changeset
1934 if (NILP (Fstring_match (XCAR (regexps),
3d12da599e18 (Ftry_completion, Fall_completions, Ftest_completion):
Andreas Schwab <schwab@suse.de>
parents: 55924
diff changeset
1935 SYMBOLP (tem) ? string : tem,
3d12da599e18 (Ftry_completion, Fall_completions, Ftest_completion):
Andreas Schwab <schwab@suse.de>
parents: 55924
diff changeset
1936 Qnil)))
3d12da599e18 (Ftry_completion, Fall_completions, Ftest_completion):
Andreas Schwab <schwab@suse.de>
parents: 55924
diff changeset
1937 return unbind_to (count, Qnil);
3d12da599e18 (Ftry_completion, Fall_completions, Ftest_completion):
Andreas Schwab <schwab@suse.de>
parents: 55924
diff changeset
1938 }
3d12da599e18 (Ftry_completion, Fall_completions, Ftest_completion):
Andreas Schwab <schwab@suse.de>
parents: 55924
diff changeset
1939 unbind_to (count, Qnil);
3d12da599e18 (Ftry_completion, Fall_completions, Ftest_completion):
Andreas Schwab <schwab@suse.de>
parents: 55924
diff changeset
1940 }
44469
f9a82a50692e (read_minibuf): Use empty_string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43595
diff changeset
1941
f9a82a50692e (read_minibuf): Use empty_string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43595
diff changeset
1942 /* Finally, check the predicate. */
f9a82a50692e (read_minibuf): Use empty_string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43595
diff changeset
1943 if (!NILP (predicate))
53827
44d25617bd98 (Fminibufferp, Fread_from_minibuffer)
Luc Teirlinck <teirllm@auburn.edu>
parents: 53364
diff changeset
1944 {
75475
688a9d290d4d (Ftry_completion, Fall_completions, Fcompleting_read, Ftest_completion):
Richard M. Stallman <rms@gnu.org>
parents: 75431
diff changeset
1945 return HASH_TABLE_P (collection)
688a9d290d4d (Ftry_completion, Fall_completions, Fcompleting_read, Ftest_completion):
Richard M. Stallman <rms@gnu.org>
parents: 75431
diff changeset
1946 ? call2 (predicate, tem, HASH_VALUE (XHASH_TABLE (collection), i))
53827
44d25617bd98 (Fminibufferp, Fread_from_minibuffer)
Luc Teirlinck <teirllm@auburn.edu>
parents: 53364
diff changeset
1947 : call1 (predicate, tem);
44d25617bd98 (Fminibufferp, Fread_from_minibuffer)
Luc Teirlinck <teirllm@auburn.edu>
parents: 53364
diff changeset
1948 }
44469
f9a82a50692e (read_minibuf): Use empty_string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43595
diff changeset
1949 else
f9a82a50692e (read_minibuf): Use empty_string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43595
diff changeset
1950 return Qt;
9398
a8e59db60df6 (test_completion): New function, extracted from do_completion.
Richard M. Stallman <rms@gnu.org>
parents: 9316
diff changeset
1951 }
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1952
72613
760e84d650e1 * minibuf.c (Finternal_complete_buffer): Move after DEFUN:s it calls
Jan Djärv <jan.h.d@swipnet.se>
parents: 72606
diff changeset
1953 DEFUN ("internal-complete-buffer", Finternal_complete_buffer, Sinternal_complete_buffer, 3, 3, 0,
760e84d650e1 * minibuf.c (Finternal_complete_buffer): Move after DEFUN:s it calls
Jan Djärv <jan.h.d@swipnet.se>
parents: 72606
diff changeset
1954 doc: /* Perform completion on buffer names.
760e84d650e1 * minibuf.c (Finternal_complete_buffer): Move after DEFUN:s it calls
Jan Djärv <jan.h.d@swipnet.se>
parents: 72606
diff changeset
1955 If the argument FLAG is nil, invoke `try-completion', if it's t, invoke
760e84d650e1 * minibuf.c (Finternal_complete_buffer): Move after DEFUN:s it calls
Jan Djärv <jan.h.d@swipnet.se>
parents: 72606
diff changeset
1956 `all-completions', otherwise invoke `test-completion'.
760e84d650e1 * minibuf.c (Finternal_complete_buffer): Move after DEFUN:s it calls
Jan Djärv <jan.h.d@swipnet.se>
parents: 72606
diff changeset
1957
73083
fcfd01b24e1e (Finternal_complete_buffer, Fread_minibuffer, Fdisplay_completion_list):
Juanma Barranquero <lekktu@gmail.com>
parents: 72613
diff changeset
1958 The arguments STRING and PREDICATE are as in `try-completion',
72613
760e84d650e1 * minibuf.c (Finternal_complete_buffer): Move after DEFUN:s it calls
Jan Djärv <jan.h.d@swipnet.se>
parents: 72606
diff changeset
1959 `all-completions', and `test-completion'. */)
760e84d650e1 * minibuf.c (Finternal_complete_buffer): Move after DEFUN:s it calls
Jan Djärv <jan.h.d@swipnet.se>
parents: 72606
diff changeset
1960 (string, predicate, flag)
760e84d650e1 * minibuf.c (Finternal_complete_buffer): Move after DEFUN:s it calls
Jan Djärv <jan.h.d@swipnet.se>
parents: 72606
diff changeset
1961 Lisp_Object string, predicate, flag;
760e84d650e1 * minibuf.c (Finternal_complete_buffer): Move after DEFUN:s it calls
Jan Djärv <jan.h.d@swipnet.se>
parents: 72606
diff changeset
1962 {
760e84d650e1 * minibuf.c (Finternal_complete_buffer): Move after DEFUN:s it calls
Jan Djärv <jan.h.d@swipnet.se>
parents: 72606
diff changeset
1963 if (NILP (flag))
760e84d650e1 * minibuf.c (Finternal_complete_buffer): Move after DEFUN:s it calls
Jan Djärv <jan.h.d@swipnet.se>
parents: 72606
diff changeset
1964 return Ftry_completion (string, Vbuffer_alist, predicate);
760e84d650e1 * minibuf.c (Finternal_complete_buffer): Move after DEFUN:s it calls
Jan Djärv <jan.h.d@swipnet.se>
parents: 72606
diff changeset
1965 else if (EQ (flag, Qt))
95107
ab4a75e53461 (Finternal_complete_buffer): Only strip out hidden buffers
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94963
diff changeset
1966 {
95108
2f0a4ded2809 (Finternal_complete_buffer): Typo.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 95107
diff changeset
1967 Lisp_Object res = Fall_completions (string, Vbuffer_alist, predicate, Qnil);
95107
ab4a75e53461 (Finternal_complete_buffer): Only strip out hidden buffers
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94963
diff changeset
1968 if (SCHARS (string) > 0)
ab4a75e53461 (Finternal_complete_buffer): Only strip out hidden buffers
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94963
diff changeset
1969 return res;
ab4a75e53461 (Finternal_complete_buffer): Only strip out hidden buffers
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94963
diff changeset
1970 else
ab4a75e53461 (Finternal_complete_buffer): Only strip out hidden buffers
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94963
diff changeset
1971 { /* Strip out internal buffers. */
ab4a75e53461 (Finternal_complete_buffer): Only strip out hidden buffers
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94963
diff changeset
1972 Lisp_Object bufs = res;
ab4a75e53461 (Finternal_complete_buffer): Only strip out hidden buffers
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94963
diff changeset
1973 /* First, look for a non-internal buffer in `res'. */
ab4a75e53461 (Finternal_complete_buffer): Only strip out hidden buffers
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94963
diff changeset
1974 while (CONSP (bufs) && SREF (XCAR (bufs), 0) == ' ')
ab4a75e53461 (Finternal_complete_buffer): Only strip out hidden buffers
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94963
diff changeset
1975 bufs = XCDR (bufs);
ab4a75e53461 (Finternal_complete_buffer): Only strip out hidden buffers
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94963
diff changeset
1976 if (NILP (bufs))
ab4a75e53461 (Finternal_complete_buffer): Only strip out hidden buffers
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94963
diff changeset
1977 /* All bufs in `res' are internal, so don't trip them out. */
ab4a75e53461 (Finternal_complete_buffer): Only strip out hidden buffers
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94963
diff changeset
1978 return res;
ab4a75e53461 (Finternal_complete_buffer): Only strip out hidden buffers
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94963
diff changeset
1979 res = bufs;
ab4a75e53461 (Finternal_complete_buffer): Only strip out hidden buffers
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94963
diff changeset
1980 while (CONSP (XCDR (bufs)))
ab4a75e53461 (Finternal_complete_buffer): Only strip out hidden buffers
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94963
diff changeset
1981 if (SREF (XCAR (XCDR (bufs)), 0) == ' ')
ab4a75e53461 (Finternal_complete_buffer): Only strip out hidden buffers
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94963
diff changeset
1982 XSETCDR (bufs, XCDR (XCDR (bufs)));
ab4a75e53461 (Finternal_complete_buffer): Only strip out hidden buffers
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94963
diff changeset
1983 else
ab4a75e53461 (Finternal_complete_buffer): Only strip out hidden buffers
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94963
diff changeset
1984 bufs = XCDR (bufs);
ab4a75e53461 (Finternal_complete_buffer): Only strip out hidden buffers
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94963
diff changeset
1985 return res;
ab4a75e53461 (Finternal_complete_buffer): Only strip out hidden buffers
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94963
diff changeset
1986 }
ab4a75e53461 (Finternal_complete_buffer): Only strip out hidden buffers
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94963
diff changeset
1987 }
72613
760e84d650e1 * minibuf.c (Finternal_complete_buffer): Move after DEFUN:s it calls
Jan Djärv <jan.h.d@swipnet.se>
parents: 72606
diff changeset
1988 else /* assume `lambda' */
760e84d650e1 * minibuf.c (Finternal_complete_buffer): Move after DEFUN:s it calls
Jan Djärv <jan.h.d@swipnet.se>
parents: 72606
diff changeset
1989 return Ftest_completion (string, Vbuffer_alist, predicate);
760e84d650e1 * minibuf.c (Finternal_complete_buffer): Move after DEFUN:s it calls
Jan Djärv <jan.h.d@swipnet.se>
parents: 72606
diff changeset
1990 }
760e84d650e1 * minibuf.c (Finternal_complete_buffer): Move after DEFUN:s it calls
Jan Djärv <jan.h.d@swipnet.se>
parents: 72606
diff changeset
1991
330
9b1e9b496441 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 284
diff changeset
1992 /* Like assoc but assumes KEY is a string, and ignores case if appropriate. */
9b1e9b496441 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 284
diff changeset
1993
44469
f9a82a50692e (read_minibuf): Use empty_string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43595
diff changeset
1994 DEFUN ("assoc-string", Fassoc_string, Sassoc_string, 2, 3, 0,
76042
c76aa2fa987a (Fassoc_string): Doc fix. Allow symbol for KEY too.
Kim F. Storm <storm@cua.dk>
parents: 76027
diff changeset
1995 doc: /* Like `assoc' but specifically for strings (and symbols).
93745
e8f312e6ec32 (Fassoc_string): Tweak docstring.
Chong Yidong <cyd@stupidchicken.com>
parents: 93074
diff changeset
1996
e8f312e6ec32 (Fassoc_string): Tweak docstring.
Chong Yidong <cyd@stupidchicken.com>
parents: 93074
diff changeset
1997 This returns the first element of LIST whose car matches the string or
e8f312e6ec32 (Fassoc_string): Tweak docstring.
Chong Yidong <cyd@stupidchicken.com>
parents: 93074
diff changeset
1998 symbol KEY, or nil if no match exists. When performing the
e8f312e6ec32 (Fassoc_string): Tweak docstring.
Chong Yidong <cyd@stupidchicken.com>
parents: 93074
diff changeset
1999 comparison, symbols are first converted to strings, and unibyte
e8f312e6ec32 (Fassoc_string): Tweak docstring.
Chong Yidong <cyd@stupidchicken.com>
parents: 93074
diff changeset
2000 strings to multibyte. If the optional arg CASE-FOLD is non-nil, case
e8f312e6ec32 (Fassoc_string): Tweak docstring.
Chong Yidong <cyd@stupidchicken.com>
parents: 93074
diff changeset
2001 is ignored.
e8f312e6ec32 (Fassoc_string): Tweak docstring.
Chong Yidong <cyd@stupidchicken.com>
parents: 93074
diff changeset
2002
e8f312e6ec32 (Fassoc_string): Tweak docstring.
Chong Yidong <cyd@stupidchicken.com>
parents: 93074
diff changeset
2003 Unlike `assoc', KEY can also match an entry in LIST consisting of a
e8f312e6ec32 (Fassoc_string): Tweak docstring.
Chong Yidong <cyd@stupidchicken.com>
parents: 93074
diff changeset
2004 single string, rather than a cons cell whose car is a string. */)
44469
f9a82a50692e (read_minibuf): Use empty_string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43595
diff changeset
2005 (key, list, case_fold)
330
9b1e9b496441 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 284
diff changeset
2006 register Lisp_Object key;
44469
f9a82a50692e (read_minibuf): Use empty_string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43595
diff changeset
2007 Lisp_Object list, case_fold;
330
9b1e9b496441 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 284
diff changeset
2008 {
9b1e9b496441 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 284
diff changeset
2009 register Lisp_Object tail;
9b1e9b496441 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 284
diff changeset
2010
76042
c76aa2fa987a (Fassoc_string): Doc fix. Allow symbol for KEY too.
Kim F. Storm <storm@cua.dk>
parents: 76027
diff changeset
2011 if (SYMBOLP (key))
c76aa2fa987a (Fassoc_string): Doc fix. Allow symbol for KEY too.
Kim F. Storm <storm@cua.dk>
parents: 76027
diff changeset
2012 key = Fsymbol_name (key);
c76aa2fa987a (Fassoc_string): Doc fix. Allow symbol for KEY too.
Kim F. Storm <storm@cua.dk>
parents: 76027
diff changeset
2013
85372
f7d19cfed7da * xselect.c (x_own_selection, x_handle_selection_clear)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85333
diff changeset
2014 for (tail = list; CONSP (tail); tail = XCDR (tail))
330
9b1e9b496441 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 284
diff changeset
2015 {
9b1e9b496441 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 284
diff changeset
2016 register Lisp_Object elt, tem, thiscar;
85372
f7d19cfed7da * xselect.c (x_own_selection, x_handle_selection_clear)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85333
diff changeset
2017 elt = XCAR (tail);
44469
f9a82a50692e (read_minibuf): Use empty_string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43595
diff changeset
2018 thiscar = CONSP (elt) ? XCAR (elt) : elt;
76027
c0a1f896395c (Fassoc_string): Allow symbols as keys.
Kim F. Storm <storm@cua.dk>
parents: 75725
diff changeset
2019 if (SYMBOLP (thiscar))
c0a1f896395c (Fassoc_string): Allow symbols as keys.
Kim F. Storm <storm@cua.dk>
parents: 75725
diff changeset
2020 thiscar = Fsymbol_name (thiscar);
c0a1f896395c (Fassoc_string): Allow symbols as keys.
Kim F. Storm <storm@cua.dk>
parents: 75725
diff changeset
2021 else if (!STRINGP (thiscar))
330
9b1e9b496441 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 284
diff changeset
2022 continue;
22034
430908755560 (assoc_for_completion): Use Fcompare_strings.
Richard M. Stallman <rms@gnu.org>
parents: 22010
diff changeset
2023 tem = Fcompare_strings (thiscar, make_number (0), Qnil,
430908755560 (assoc_for_completion): Use Fcompare_strings.
Richard M. Stallman <rms@gnu.org>
parents: 22010
diff changeset
2024 key, make_number (0), Qnil,
44469
f9a82a50692e (read_minibuf): Use empty_string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43595
diff changeset
2025 case_fold);
22034
430908755560 (assoc_for_completion): Use Fcompare_strings.
Richard M. Stallman <rms@gnu.org>
parents: 22010
diff changeset
2026 if (EQ (tem, Qt))
430908755560 (assoc_for_completion): Use Fcompare_strings.
Richard M. Stallman <rms@gnu.org>
parents: 22010
diff changeset
2027 return elt;
330
9b1e9b496441 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 284
diff changeset
2028 QUIT;
9b1e9b496441 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 284
diff changeset
2029 }
9b1e9b496441 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 284
diff changeset
2030 return Qnil;
9b1e9b496441 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 284
diff changeset
2031 }
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2032
10086
77b5eb8fc9e3 (Fminibuffer_complete_and_exit): Catch errors in do_completion.
Richard M. Stallman <rms@gnu.org>
parents: 9903
diff changeset
2033
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2034 DEFUN ("minibuffer-depth", Fminibuffer_depth, Sminibuffer_depth, 0, 0, 0,
39989
c652433b7f2f Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents: 39973
diff changeset
2035 doc: /* Return current depth of activations of minibuffer, a nonnegative integer. */)
c652433b7f2f Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents: 39973
diff changeset
2036 ()
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2037 {
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2038 return make_number (minibuf_level);
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2039 }
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2040
6590
2c66255e9469 (Fminibuffer_prompt, Fminibuffer_prompt_width): New funcs.
Karl Heuer <kwzh@gnu.org>
parents: 6589
diff changeset
2041 DEFUN ("minibuffer-prompt", Fminibuffer_prompt, Sminibuffer_prompt, 0, 0, 0,
39989
c652433b7f2f Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents: 39973
diff changeset
2042 doc: /* Return the prompt string of the currently-active minibuffer.
c652433b7f2f Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents: 39973
diff changeset
2043 If no minibuffer is active, return nil. */)
c652433b7f2f Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents: 39973
diff changeset
2044 ()
6590
2c66255e9469 (Fminibuffer_prompt, Fminibuffer_prompt_width): New funcs.
Karl Heuer <kwzh@gnu.org>
parents: 6589
diff changeset
2045 {
7952
9e2e0fdd1710 (minibuf_save_list): New variable, replaces minibuf_save_vector.
Karl Heuer <kwzh@gnu.org>
parents: 7836
diff changeset
2046 return Fcopy_sequence (minibuf_prompt);
6590
2c66255e9469 (Fminibuffer_prompt, Fminibuffer_prompt_width): New funcs.
Karl Heuer <kwzh@gnu.org>
parents: 6589
diff changeset
2047 }
2c66255e9469 (Fminibuffer_prompt, Fminibuffer_prompt_width): New funcs.
Karl Heuer <kwzh@gnu.org>
parents: 6589
diff changeset
2048
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2049
20302
5b3bc7f24d51 (read_minibuf_unwind): Fix return type and return nil.
Andreas Schwab <schwab@suse.de>
parents: 20075
diff changeset
2050 void
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2051 init_minibuf_once ()
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2052 {
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2053 Vminibuffer_list = Qnil;
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2054 staticpro (&Vminibuffer_list);
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2055 }
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2056
20302
5b3bc7f24d51 (read_minibuf_unwind): Fix return type and return nil.
Andreas Schwab <schwab@suse.de>
parents: 20075
diff changeset
2057 void
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2058 syms_of_minibuf ()
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2059 {
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2060 minibuf_level = 0;
7952
9e2e0fdd1710 (minibuf_save_list): New variable, replaces minibuf_save_vector.
Karl Heuer <kwzh@gnu.org>
parents: 7836
diff changeset
2061 minibuf_prompt = Qnil;
9e2e0fdd1710 (minibuf_save_list): New variable, replaces minibuf_save_vector.
Karl Heuer <kwzh@gnu.org>
parents: 7836
diff changeset
2062 staticpro (&minibuf_prompt);
9e2e0fdd1710 (minibuf_save_list): New variable, replaces minibuf_save_vector.
Karl Heuer <kwzh@gnu.org>
parents: 7836
diff changeset
2063
9e2e0fdd1710 (minibuf_save_list): New variable, replaces minibuf_save_vector.
Karl Heuer <kwzh@gnu.org>
parents: 7836
diff changeset
2064 minibuf_save_list = Qnil;
9e2e0fdd1710 (minibuf_save_list): New variable, replaces minibuf_save_vector.
Karl Heuer <kwzh@gnu.org>
parents: 7836
diff changeset
2065 staticpro (&minibuf_save_list);
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2066
79108
f197bd049c23 (Qcompletion_ignore_case): New Lisp_Object.
Glenn Morris <rgm@gnu.org>
parents: 78260
diff changeset
2067 Qcompletion_ignore_case = intern ("completion-ignore-case");
f197bd049c23 (Qcompletion_ignore_case): New Lisp_Object.
Glenn Morris <rgm@gnu.org>
parents: 78260
diff changeset
2068 staticpro (&Qcompletion_ignore_case);
f197bd049c23 (Qcompletion_ignore_case): New Lisp_Object.
Glenn Morris <rgm@gnu.org>
parents: 78260
diff changeset
2069
4641
9b8e20b21a66 (Qread_file_name_internal): New var.
Richard M. Stallman <rms@gnu.org>
parents: 4550
diff changeset
2070 Qread_file_name_internal = intern ("read-file-name-internal");
9b8e20b21a66 (Qread_file_name_internal): New var.
Richard M. Stallman <rms@gnu.org>
parents: 4550
diff changeset
2071 staticpro (&Qread_file_name_internal);
9b8e20b21a66 (Qread_file_name_internal): New var.
Richard M. Stallman <rms@gnu.org>
parents: 4550
diff changeset
2072
17737
f79f2d6b119b (Fread_command): New optional arg DEFAULT-VALUE. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 17387
diff changeset
2073 Qminibuffer_default = intern ("minibuffer-default");
f79f2d6b119b (Fread_command): New optional arg DEFAULT-VALUE. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 17387
diff changeset
2074 staticpro (&Qminibuffer_default);
f79f2d6b119b (Fread_command): New optional arg DEFAULT-VALUE. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 17387
diff changeset
2075 Fset (Qminibuffer_default, Qnil);
f79f2d6b119b (Fread_command): New optional arg DEFAULT-VALUE. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 17387
diff changeset
2076
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2077 Qminibuffer_completion_table = intern ("minibuffer-completion-table");
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2078 staticpro (&Qminibuffer_completion_table);
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2079
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2080 Qminibuffer_completion_confirm = intern ("minibuffer-completion-confirm");
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2081 staticpro (&Qminibuffer_completion_confirm);
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2082
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2083 Qminibuffer_completion_predicate = intern ("minibuffer-completion-predicate");
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2084 staticpro (&Qminibuffer_completion_predicate);
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2085
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2086 staticpro (&last_minibuf_string);
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2087 last_minibuf_string = Qnil;
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2088
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2089 Quser_variable_p = intern ("user-variable-p");
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2090 staticpro (&Quser_variable_p);
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2091
864
fe5f6b7c9727 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 765
diff changeset
2092 Qminibuffer_history = intern ("minibuffer-history");
fe5f6b7c9727 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 765
diff changeset
2093 staticpro (&Qminibuffer_history);
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2094
22010
547e4c0a42c0 (Qbuffer_name_history): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 21854
diff changeset
2095 Qbuffer_name_history = intern ("buffer-name-history");
547e4c0a42c0 (Qbuffer_name_history): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 21854
diff changeset
2096 staticpro (&Qbuffer_name_history);
22509
a57016ec7f14 (syms_of_minibuf): Initialize buffer-name-history.
Karl Heuer <kwzh@gnu.org>
parents: 22479
diff changeset
2097 Fset (Qbuffer_name_history, Qnil);
22010
547e4c0a42c0 (Qbuffer_name_history): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 21854
diff changeset
2098
4550
f189820e7ea7 (Qminibuffer_setup_hook, Vminibuffer_setup_hook): New vars.
Richard M. Stallman <rms@gnu.org>
parents: 4102
diff changeset
2099 Qminibuffer_setup_hook = intern ("minibuffer-setup-hook");
f189820e7ea7 (Qminibuffer_setup_hook, Vminibuffer_setup_hook): New vars.
Richard M. Stallman <rms@gnu.org>
parents: 4102
diff changeset
2100 staticpro (&Qminibuffer_setup_hook);
f189820e7ea7 (Qminibuffer_setup_hook, Vminibuffer_setup_hook): New vars.
Richard M. Stallman <rms@gnu.org>
parents: 4102
diff changeset
2101
6742
ef62a96ce830 (Vminibuffer_exit_hook): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 6720
diff changeset
2102 Qminibuffer_exit_hook = intern ("minibuffer-exit-hook");
ef62a96ce830 (Vminibuffer_exit_hook): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 6720
diff changeset
2103 staticpro (&Qminibuffer_exit_hook);
ef62a96ce830 (Vminibuffer_exit_hook): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 6720
diff changeset
2104
15967
b791ab74ff30 (Vhistory_length, Qhistory_length): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 15835
diff changeset
2105 Qhistory_length = intern ("history-length");
b791ab74ff30 (Vhistory_length, Qhistory_length): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 15835
diff changeset
2106 staticpro (&Qhistory_length);
b791ab74ff30 (Vhistory_length, Qhistory_length): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 15835
diff changeset
2107
19545
a7f1c1acde93 (Qcurrent_input_method, Qactivate_input_method): New
Kenichi Handa <handa@m17n.org>
parents: 19417
diff changeset
2108 Qcurrent_input_method = intern ("current-input-method");
a7f1c1acde93 (Qcurrent_input_method, Qactivate_input_method): New
Kenichi Handa <handa@m17n.org>
parents: 19417
diff changeset
2109 staticpro (&Qcurrent_input_method);
a7f1c1acde93 (Qcurrent_input_method, Qactivate_input_method): New
Kenichi Handa <handa@m17n.org>
parents: 19417
diff changeset
2110
a7f1c1acde93 (Qcurrent_input_method, Qactivate_input_method): New
Kenichi Handa <handa@m17n.org>
parents: 19417
diff changeset
2111 Qactivate_input_method = intern ("activate-input-method");
a7f1c1acde93 (Qcurrent_input_method, Qactivate_input_method): New
Kenichi Handa <handa@m17n.org>
parents: 19417
diff changeset
2112 staticpro (&Qactivate_input_method);
a7f1c1acde93 (Qcurrent_input_method, Qactivate_input_method): New
Kenichi Handa <handa@m17n.org>
parents: 19417
diff changeset
2113
53827
44d25617bd98 (Fminibufferp, Fread_from_minibuffer)
Luc Teirlinck <teirllm@auburn.edu>
parents: 53364
diff changeset
2114 Qcase_fold_search = intern ("case-fold-search");
44d25617bd98 (Fminibufferp, Fread_from_minibuffer)
Luc Teirlinck <teirllm@auburn.edu>
parents: 53364
diff changeset
2115 staticpro (&Qcase_fold_search);
44d25617bd98 (Fminibufferp, Fread_from_minibuffer)
Luc Teirlinck <teirllm@auburn.edu>
parents: 53364
diff changeset
2116
73450
726825bcce52 (Vread_expression_map): Define here.
Richard M. Stallman <rms@gnu.org>
parents: 73318
diff changeset
2117 Qread_expression_history = intern ("read-expression-history");
726825bcce52 (Vread_expression_map): Define here.
Richard M. Stallman <rms@gnu.org>
parents: 73318
diff changeset
2118 staticpro (&Qread_expression_history);
726825bcce52 (Vread_expression_map): Define here.
Richard M. Stallman <rms@gnu.org>
parents: 73318
diff changeset
2119
39989
c652433b7f2f Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents: 39973
diff changeset
2120 DEFVAR_LISP ("read-buffer-function", &Vread_buffer_function,
c652433b7f2f Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents: 39973
diff changeset
2121 doc: /* If this is non-nil, `read-buffer' does its work by calling this function. */);
20468
2fbad61cd5d0 (Vread_buffer_function): New var.
Karl Heuer <kwzh@gnu.org>
parents: 20302
diff changeset
2122 Vread_buffer_function = Qnil;
2fbad61cd5d0 (Vread_buffer_function): New var.
Karl Heuer <kwzh@gnu.org>
parents: 20302
diff changeset
2123
97121
dd58348427b8 (read_buffer_completion_ignore_case): New var.
Chong Yidong <cyd@stupidchicken.com>
parents: 95781
diff changeset
2124 DEFVAR_BOOL ("read-buffer-completion-ignore-case",
dd58348427b8 (read_buffer_completion_ignore_case): New var.
Chong Yidong <cyd@stupidchicken.com>
parents: 95781
diff changeset
2125 &read_buffer_completion_ignore_case,
dd58348427b8 (read_buffer_completion_ignore_case): New var.
Chong Yidong <cyd@stupidchicken.com>
parents: 95781
diff changeset
2126 doc: /* *Non-nil means completion ignores case when reading a buffer name. */);
dd58348427b8 (read_buffer_completion_ignore_case): New var.
Chong Yidong <cyd@stupidchicken.com>
parents: 95781
diff changeset
2127 read_buffer_completion_ignore_case = 0;
dd58348427b8 (read_buffer_completion_ignore_case): New var.
Chong Yidong <cyd@stupidchicken.com>
parents: 95781
diff changeset
2128
39989
c652433b7f2f Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents: 39973
diff changeset
2129 DEFVAR_LISP ("minibuffer-setup-hook", &Vminibuffer_setup_hook,
c652433b7f2f Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents: 39973
diff changeset
2130 doc: /* Normal hook run just after entry to minibuffer. */);
4550
f189820e7ea7 (Qminibuffer_setup_hook, Vminibuffer_setup_hook): New vars.
Richard M. Stallman <rms@gnu.org>
parents: 4102
diff changeset
2131 Vminibuffer_setup_hook = Qnil;
f189820e7ea7 (Qminibuffer_setup_hook, Vminibuffer_setup_hook): New vars.
Richard M. Stallman <rms@gnu.org>
parents: 4102
diff changeset
2132
39989
c652433b7f2f Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents: 39973
diff changeset
2133 DEFVAR_LISP ("minibuffer-exit-hook", &Vminibuffer_exit_hook,
c652433b7f2f Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents: 39973
diff changeset
2134 doc: /* Normal hook run just after exit from minibuffer. */);
6742
ef62a96ce830 (Vminibuffer_exit_hook): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 6720
diff changeset
2135 Vminibuffer_exit_hook = Qnil;
ef62a96ce830 (Vminibuffer_exit_hook): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 6720
diff changeset
2136
39989
c652433b7f2f Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents: 39973
diff changeset
2137 DEFVAR_LISP ("history-length", &Vhistory_length,
c652433b7f2f Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents: 39973
diff changeset
2138 doc: /* *Maximum length for history lists before truncation takes place.
39966
1c2d486200f3 Put doc strings in comments.
Pavel Janík <Pavel@Janik.cz>
parents: 39838
diff changeset
2139 A number means that length; t means infinite. Truncation takes place
70499
088b163bf6e8 syms_of_minibuf) <history-length>: Fix typo in doc.
Juanma Barranquero <lekktu@gmail.com>
parents: 70353
diff changeset
2140 just after a new element is inserted. Setting the `history-length'
39966
1c2d486200f3 Put doc strings in comments.
Pavel Janík <Pavel@Janik.cz>
parents: 39838
diff changeset
2141 property of a history variable overrides this default. */);
15967
b791ab74ff30 (Vhistory_length, Qhistory_length): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 15835
diff changeset
2142 XSETFASTINT (Vhistory_length, 30);
b791ab74ff30 (Vhistory_length, Qhistory_length): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 15835
diff changeset
2143
57016
eda556d106c6 (history_delete_duplicates): New variable.
Juri Linkov <juri@jurta.org>
parents: 56666
diff changeset
2144 DEFVAR_BOOL ("history-delete-duplicates", &history_delete_duplicates,
eda556d106c6 (history_delete_duplicates): New variable.
Juri Linkov <juri@jurta.org>
parents: 56666
diff changeset
2145 doc: /* *Non-nil means to delete duplicates in history.
eda556d106c6 (history_delete_duplicates): New variable.
Juri Linkov <juri@jurta.org>
parents: 56666
diff changeset
2146 If set to t when adding a new history element, all previous identical
71120
3c66cf4b4ded (Vhistory_add_new_input): New variable.
Juri Linkov <juri@jurta.org>
parents: 70930
diff changeset
2147 elements are deleted from the history list. */);
57016
eda556d106c6 (history_delete_duplicates): New variable.
Juri Linkov <juri@jurta.org>
parents: 56666
diff changeset
2148 history_delete_duplicates = 0;
eda556d106c6 (history_delete_duplicates): New variable.
Juri Linkov <juri@jurta.org>
parents: 56666
diff changeset
2149
71120
3c66cf4b4ded (Vhistory_add_new_input): New variable.
Juri Linkov <juri@jurta.org>
parents: 70930
diff changeset
2150 DEFVAR_LISP ("history-add-new-input", &Vhistory_add_new_input,
3c66cf4b4ded (Vhistory_add_new_input): New variable.
Juri Linkov <juri@jurta.org>
parents: 70930
diff changeset
2151 doc: /* *Non-nil means to add new elements in history.
3c66cf4b4ded (Vhistory_add_new_input): New variable.
Juri Linkov <juri@jurta.org>
parents: 70930
diff changeset
2152 If set to nil, minibuffer reading functions don't add new elements to the
3c66cf4b4ded (Vhistory_add_new_input): New variable.
Juri Linkov <juri@jurta.org>
parents: 70930
diff changeset
2153 history list, so it is possible to do this afterwards by calling
3c66cf4b4ded (Vhistory_add_new_input): New variable.
Juri Linkov <juri@jurta.org>
parents: 70930
diff changeset
2154 `add-to-history' explicitly. */);
3c66cf4b4ded (Vhistory_add_new_input): New variable.
Juri Linkov <juri@jurta.org>
parents: 70930
diff changeset
2155 Vhistory_add_new_input = Qt;
3c66cf4b4ded (Vhistory_add_new_input): New variable.
Juri Linkov <juri@jurta.org>
parents: 70930
diff changeset
2156
39989
c652433b7f2f Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents: 39973
diff changeset
2157 DEFVAR_BOOL ("completion-ignore-case", &completion_ignore_case,
56666
b676f8f12ae1 (syms_of_minibuf) <completion-ignore-case>: Doc fix.
John Paul Wallington <jpw@pobox.com>
parents: 56167
diff changeset
2158 doc: /* Non-nil means don't consider case significant in completion.
97126
be7f6252008c (Vread_buffer_function): Doc fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 97121
diff changeset
2159 For file-name completion, `read-file-name-completion-ignore-case'
be7f6252008c (Vread_buffer_function): Doc fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 97121
diff changeset
2160 controls the behavior, rather than this variable.
be7f6252008c (Vread_buffer_function): Doc fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 97121
diff changeset
2161 For buffer name completion, `read-buffer-completion-ignore-case'
58207
4410b7cd84c4 (syms_of_minibuf) <completion-ignore-case>: Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 57016
diff changeset
2162 controls the behavior, rather than this variable. */);
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2163 completion_ignore_case = 0;
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2164
39989
c652433b7f2f Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents: 39973
diff changeset
2165 DEFVAR_BOOL ("enable-recursive-minibuffers", &enable_recursive_minibuffers,
c652433b7f2f Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents: 39973
diff changeset
2166 doc: /* *Non-nil means to allow minibuffer commands while in the minibuffer.
39966
1c2d486200f3 Put doc strings in comments.
Pavel Janík <Pavel@Janik.cz>
parents: 39838
diff changeset
2167 This variable makes a difference whenever the minibuffer window is active. */);
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2168 enable_recursive_minibuffers = 0;
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2169
39989
c652433b7f2f Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents: 39973
diff changeset
2170 DEFVAR_LISP ("minibuffer-completion-table", &Vminibuffer_completion_table,
c652433b7f2f Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents: 39973
diff changeset
2171 doc: /* Alist or obarray used for completion in the minibuffer.
53827
44d25617bd98 (Fminibufferp, Fread_from_minibuffer)
Luc Teirlinck <teirllm@auburn.edu>
parents: 53364
diff changeset
2172 This becomes the ALIST argument to `try-completion' and `all-completions'.
44d25617bd98 (Fminibufferp, Fread_from_minibuffer)
Luc Teirlinck <teirllm@auburn.edu>
parents: 53364
diff changeset
2173 The value can also be a list of strings or a hash table.
39966
1c2d486200f3 Put doc strings in comments.
Pavel Janík <Pavel@Janik.cz>
parents: 39838
diff changeset
2174
1c2d486200f3 Put doc strings in comments.
Pavel Janík <Pavel@Janik.cz>
parents: 39838
diff changeset
2175 The value may alternatively be a function, which is given three arguments:
1c2d486200f3 Put doc strings in comments.
Pavel Janík <Pavel@Janik.cz>
parents: 39838
diff changeset
2176 STRING, the current buffer contents;
1c2d486200f3 Put doc strings in comments.
Pavel Janík <Pavel@Janik.cz>
parents: 39838
diff changeset
2177 PREDICATE, the predicate for filtering possible matches;
1c2d486200f3 Put doc strings in comments.
Pavel Janík <Pavel@Janik.cz>
parents: 39838
diff changeset
2178 CODE, which says what kind of things to do.
74569
6d7e4ace438f (syms_of_minibuf) <minibuffer-completion-table>: Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents: 74006
diff changeset
2179 CODE can be nil, t or `lambda':
6d7e4ace438f (syms_of_minibuf) <minibuffer-completion-table>: Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents: 74006
diff changeset
2180 nil -- return the best completion of STRING, or nil if there is none.
6d7e4ace438f (syms_of_minibuf) <minibuffer-completion-table>: Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents: 74006
diff changeset
2181 t -- return a list of all possible completions of STRING.
6d7e4ace438f (syms_of_minibuf) <minibuffer-completion-table>: Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents: 74006
diff changeset
2182 lambda -- return t if STRING is a valid completion as it stands. */);
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2183 Vminibuffer_completion_table = Qnil;
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2184
39989
c652433b7f2f Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents: 39973
diff changeset
2185 DEFVAR_LISP ("minibuffer-completion-predicate", &Vminibuffer_completion_predicate,
c652433b7f2f Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents: 39973
diff changeset
2186 doc: /* Within call to `completing-read', this holds the PREDICATE argument. */);
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2187 Vminibuffer_completion_predicate = Qnil;
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2188
39989
c652433b7f2f Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents: 39973
diff changeset
2189 DEFVAR_LISP ("minibuffer-completion-confirm", &Vminibuffer_completion_confirm,
43000
c16f32068114 (Fread_from_minibuffer, Fread_command, Fread_function)
Pavel Janík <Pavel@Janik.cz>
parents: 42881
diff changeset
2190 doc: /* Non-nil means to demand confirmation of completion before exiting minibuffer. */);
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2191 Vminibuffer_completion_confirm = Qnil;
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2192
22657
d19cd2986f18 (Vminibuffer_completing_file_name): New var.
Richard M. Stallman <rms@gnu.org>
parents: 22509
diff changeset
2193 DEFVAR_LISP ("minibuffer-completing-file-name",
39989
c652433b7f2f Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents: 39973
diff changeset
2194 &Vminibuffer_completing_file_name,
94189
c1b4e330f616 (syms_of_minibuf) <minibuffer-completing-file-name>: Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 93937
diff changeset
2195 doc: /* Non-nil means completing file names. */);
22657
d19cd2986f18 (Vminibuffer_completing_file_name): New var.
Richard M. Stallman <rms@gnu.org>
parents: 22509
diff changeset
2196 Vminibuffer_completing_file_name = Qnil;
d19cd2986f18 (Vminibuffer_completing_file_name): New var.
Richard M. Stallman <rms@gnu.org>
parents: 22509
diff changeset
2197
39989
c652433b7f2f Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents: 39973
diff changeset
2198 DEFVAR_LISP ("minibuffer-help-form", &Vminibuffer_help_form,
c652433b7f2f Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents: 39973
diff changeset
2199 doc: /* Value that `help-form' takes on inside the minibuffer. */);
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2200 Vminibuffer_help_form = Qnil;
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2201
39989
c652433b7f2f Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents: 39973
diff changeset
2202 DEFVAR_LISP ("minibuffer-history-variable", &Vminibuffer_history_variable,
c652433b7f2f Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents: 39973
diff changeset
2203 doc: /* History list symbol to add minibuffer values to.
39966
1c2d486200f3 Put doc strings in comments.
Pavel Janík <Pavel@Janik.cz>
parents: 39838
diff changeset
2204 Each string of minibuffer input, as it appears on exit from the minibuffer,
1c2d486200f3 Put doc strings in comments.
Pavel Janík <Pavel@Janik.cz>
parents: 39838
diff changeset
2205 is added with
1c2d486200f3 Put doc strings in comments.
Pavel Janík <Pavel@Janik.cz>
parents: 39838
diff changeset
2206 (set minibuffer-history-variable
1c2d486200f3 Put doc strings in comments.
Pavel Janík <Pavel@Janik.cz>
parents: 39838
diff changeset
2207 (cons STRING (symbol-value minibuffer-history-variable))) */);
9316
5f7cfbdef872 (read_minibuf, get_minibuffer, read_minibuf_unwind, Fread_from_minibuffer,
Karl Heuer <kwzh@gnu.org>
parents: 9183
diff changeset
2208 XSETFASTINT (Vminibuffer_history_variable, 0);
864
fe5f6b7c9727 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 765
diff changeset
2209
39989
c652433b7f2f Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents: 39973
diff changeset
2210 DEFVAR_LISP ("minibuffer-history-position", &Vminibuffer_history_position,
c652433b7f2f Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents: 39973
diff changeset
2211 doc: /* Current position of redoing in the history list. */);
864
fe5f6b7c9727 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 765
diff changeset
2212 Vminibuffer_history_position = Qnil;
fe5f6b7c9727 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 765
diff changeset
2213
39989
c652433b7f2f Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents: 39973
diff changeset
2214 DEFVAR_BOOL ("minibuffer-auto-raise", &minibuffer_auto_raise,
c652433b7f2f Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents: 39973
diff changeset
2215 doc: /* *Non-nil means entering the minibuffer raises the minibuffer's frame.
39966
1c2d486200f3 Put doc strings in comments.
Pavel Janík <Pavel@Janik.cz>
parents: 39838
diff changeset
2216 Some uses of the echo area also raise that frame (since they use it too). */);
5238
63932e111cc5 (minibuffer_auto_raise): Really define it.
Richard M. Stallman <rms@gnu.org>
parents: 5069
diff changeset
2217 minibuffer_auto_raise = 0;
63932e111cc5 (minibuffer_auto_raise): Really define it.
Richard M. Stallman <rms@gnu.org>
parents: 5069
diff changeset
2218
39989
c652433b7f2f Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents: 39973
diff changeset
2219 DEFVAR_LISP ("completion-regexp-list", &Vcompletion_regexp_list,
53827
44d25617bd98 (Fminibufferp, Fread_from_minibuffer)
Luc Teirlinck <teirllm@auburn.edu>
parents: 53364
diff changeset
2220 doc: /* List of regexps that should restrict possible completions.
44d25617bd98 (Fminibufferp, Fread_from_minibuffer)
Luc Teirlinck <teirllm@auburn.edu>
parents: 53364
diff changeset
2221 The basic completion functions only consider a completion acceptable
44d25617bd98 (Fminibufferp, Fread_from_minibuffer)
Luc Teirlinck <teirllm@auburn.edu>
parents: 53364
diff changeset
2222 if it matches all regular expressions in this list, with
44d25617bd98 (Fminibufferp, Fread_from_minibuffer)
Luc Teirlinck <teirllm@auburn.edu>
parents: 53364
diff changeset
2223 `case-fold-search' bound to the value of `completion-ignore-case'.
44d25617bd98 (Fminibufferp, Fread_from_minibuffer)
Luc Teirlinck <teirllm@auburn.edu>
parents: 53364
diff changeset
2224 See Info node `(elisp)Basic Completion', for a description of these
44d25617bd98 (Fminibufferp, Fread_from_minibuffer)
Luc Teirlinck <teirllm@auburn.edu>
parents: 53364
diff changeset
2225 functions. */);
6589
764913e8463c (Vcompletion_regexp_list): New var.
Richard M. Stallman <rms@gnu.org>
parents: 6544
diff changeset
2226 Vcompletion_regexp_list = Qnil;
764913e8463c (Vcompletion_regexp_list): New var.
Richard M. Stallman <rms@gnu.org>
parents: 6544
diff changeset
2227
18444
825ff9e2e44e (read_minibuf): New arg allow_props.
Richard M. Stallman <rms@gnu.org>
parents: 17805
diff changeset
2228 DEFVAR_BOOL ("minibuffer-allow-text-properties",
39989
c652433b7f2f Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents: 39973
diff changeset
2229 &minibuffer_allow_text_properties,
c652433b7f2f Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents: 39973
diff changeset
2230 doc: /* Non-nil means `read-from-minibuffer' should not discard text properties.
39966
1c2d486200f3 Put doc strings in comments.
Pavel Janík <Pavel@Janik.cz>
parents: 39838
diff changeset
2231 This also affects `read-string', but it does not affect `read-minibuffer',
1c2d486200f3 Put doc strings in comments.
Pavel Janík <Pavel@Janik.cz>
parents: 39838
diff changeset
2232 `read-no-blanks-input', or any of the functions that do minibuffer input
1c2d486200f3 Put doc strings in comments.
Pavel Janík <Pavel@Janik.cz>
parents: 39838
diff changeset
2233 with completion; they always discard text properties. */);
18444
825ff9e2e44e (read_minibuf): New arg allow_props.
Richard M. Stallman <rms@gnu.org>
parents: 17805
diff changeset
2234 minibuffer_allow_text_properties = 0;
825ff9e2e44e (read_minibuf): New arg allow_props.
Richard M. Stallman <rms@gnu.org>
parents: 17805
diff changeset
2235
39989
c652433b7f2f Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents: 39973
diff changeset
2236 DEFVAR_LISP ("minibuffer-prompt-properties", &Vminibuffer_prompt_properties,
c652433b7f2f Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents: 39973
diff changeset
2237 doc: /* Text properties that are added to minibuffer prompts.
39966
1c2d486200f3 Put doc strings in comments.
Pavel Janík <Pavel@Janik.cz>
parents: 39838
diff changeset
2238 These are in addition to the basic `field' property, and stickiness
1c2d486200f3 Put doc strings in comments.
Pavel Janík <Pavel@Janik.cz>
parents: 39838
diff changeset
2239 properties. */);
33682
ec99a5f4085e (Vminibuffer_prompt_properties): New variable.
Miles Bader <miles@gnu.org>
parents: 33088
diff changeset
2240 /* We use `intern' here instead of Qread_only to avoid
ec99a5f4085e (Vminibuffer_prompt_properties): New variable.
Miles Bader <miles@gnu.org>
parents: 33088
diff changeset
2241 initialization-order problems. */
ec99a5f4085e (Vminibuffer_prompt_properties): New variable.
Miles Bader <miles@gnu.org>
parents: 33088
diff changeset
2242 Vminibuffer_prompt_properties
ec99a5f4085e (Vminibuffer_prompt_properties): New variable.
Miles Bader <miles@gnu.org>
parents: 33088
diff changeset
2243 = Fcons (intern ("read-only"), Fcons (Qt, Qnil));
ec99a5f4085e (Vminibuffer_prompt_properties): New variable.
Miles Bader <miles@gnu.org>
parents: 33088
diff changeset
2244
73450
726825bcce52 (Vread_expression_map): Define here.
Richard M. Stallman <rms@gnu.org>
parents: 73318
diff changeset
2245 DEFVAR_LISP ("read-expression-map", &Vread_expression_map,
726825bcce52 (Vread_expression_map): Define here.
Richard M. Stallman <rms@gnu.org>
parents: 73318
diff changeset
2246 doc: /* Minibuffer keymap used for reading Lisp expressions. */);
726825bcce52 (Vread_expression_map): Define here.
Richard M. Stallman <rms@gnu.org>
parents: 73318
diff changeset
2247 Vread_expression_map = Qnil;
726825bcce52 (Vread_expression_map): Define here.
Richard M. Stallman <rms@gnu.org>
parents: 73318
diff changeset
2248
14435
4f2ec5d39f00 (Fset_minibuffer_window): New function.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
2249 defsubr (&Sset_minibuffer_window);
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2250 defsubr (&Sread_from_minibuffer);
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2251 defsubr (&Seval_minibuffer);
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2252 defsubr (&Sread_minibuffer);
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2253 defsubr (&Sread_string);
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2254 defsubr (&Sread_command);
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2255 defsubr (&Sread_variable);
72606
18e29ef6d5d7 (Finternal_complete_buffer): New function.
Eli Zaretskii <eliz@gnu.org>
parents: 71797
diff changeset
2256 defsubr (&Sinternal_complete_buffer);
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2257 defsubr (&Sread_buffer);
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2258 defsubr (&Sread_no_blanks_input);
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2259 defsubr (&Sminibuffer_depth);
6590
2c66255e9469 (Fminibuffer_prompt, Fminibuffer_prompt_width): New funcs.
Karl Heuer <kwzh@gnu.org>
parents: 6589
diff changeset
2260 defsubr (&Sminibuffer_prompt);
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2261
46877
2ff0df63c873 (Fminibufferp): New function.
Richard M. Stallman <rms@gnu.org>
parents: 46473
diff changeset
2262 defsubr (&Sminibufferp);
39595
d184cf4318ee (Fminibuffer_prompt_end, Fminibuffer_contents)
Miles Bader <miles@gnu.org>
parents: 39581
diff changeset
2263 defsubr (&Sminibuffer_prompt_end);
d184cf4318ee (Fminibuffer_prompt_end, Fminibuffer_contents)
Miles Bader <miles@gnu.org>
parents: 39581
diff changeset
2264 defsubr (&Sminibuffer_contents);
d184cf4318ee (Fminibuffer_prompt_end, Fminibuffer_contents)
Miles Bader <miles@gnu.org>
parents: 39581
diff changeset
2265 defsubr (&Sminibuffer_contents_no_properties);
67618
40cdd21343f8 (Fminibuffer_completion_contents): New Lisp function
Juri Linkov <juri@jurta.org>
parents: 67498
diff changeset
2266 defsubr (&Sminibuffer_completion_contents);
39595
d184cf4318ee (Fminibuffer_prompt_end, Fminibuffer_contents)
Miles Bader <miles@gnu.org>
parents: 39581
diff changeset
2267
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2268 defsubr (&Stry_completion);
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2269 defsubr (&Sall_completions);
44469
f9a82a50692e (read_minibuf): Use empty_string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43595
diff changeset
2270 defsubr (&Stest_completion);
f9a82a50692e (read_minibuf): Use empty_string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43595
diff changeset
2271 defsubr (&Sassoc_string);
284
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2272 defsubr (&Scompleting_read);
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2273 }
03e467a3d92a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2274
52401
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 52014
diff changeset
2275 /* arch-tag: 8f69b601-fba3-484c-a6dd-ceaee54a7a73
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 52014
diff changeset
2276 (do not change this comment) */