annotate src/callint.c @ 49645:4e94855c037e

Change dates for the entries concerning the 2.0.29 Tramp commit such that they all reflect the commit date, instead of the date of the individual changes. This is deemed better than keeping the original change date because it makes sure that the ChangeLog dates have more or less sequential order.
author Kai Großjohann <kgrossjo@eu.uu.net>
date Fri, 07 Feb 2003 17:53:05 +0000
parents 23a1cea22d13
children 2f5cdffaaa04 d7ddb3e565de
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
1 /* Call a Lisp function interactively.
44405
0ed69545b5f3 (Fcall_interactively): Use INTEGERP instead of
Gerd Moellmann <gerd@gnu.org>
parents: 43039
diff changeset
2 Copyright (C) 1985, 86, 93, 94, 95, 1997, 2000, 2002
34799
c04a8de55245 (Fcall_interactively): Prevent a compiler warning.
Gerd Moellmann <gerd@gnu.org>
parents: 31336
diff changeset
3 Free Software Foundation, Inc.
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
4
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
5 This file is part of GNU Emacs.
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
6
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
7 GNU Emacs is free software; you can redistribute it and/or modify
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
8 it under the terms of the GNU General Public License as published by
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1693
diff changeset
9 the Free Software Foundation; either version 2, or (at your option)
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
10 any later version.
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
11
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
12 GNU Emacs is distributed in the hope that it will be useful,
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
15 GNU General Public License for more details.
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
16
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
17 You should have received a copy of the GNU General Public License
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
18 along with GNU Emacs; see the file COPYING. If not, write to
14186
ee40177f6c68 Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents: 14062
diff changeset
19 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
ee40177f6c68 Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents: 14062
diff changeset
20 Boston, MA 02111-1307, USA. */
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
21
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
22
4696
1fc792473491 Include <config.h> instead of "config.h".
Roland McGrath <roland@gnu.org>
parents: 4046
diff changeset
23 #include <config.h>
40103
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
24
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
25 #include "lisp.h"
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
26 #include "buffer.h"
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
27 #include "commands.h"
516
ccadad491483 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 485
diff changeset
28 #include "keyboard.h"
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
29 #include "window.h"
39697
0b986bb45526 Include keymap.h.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 34799
diff changeset
30 #include "keymap.h"
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
31
31336
3ecef4a7b3cd Remove includes of
Gerd Moellmann <gerd@gnu.org>
parents: 31225
diff changeset
32 #ifdef HAVE_INDEX
3ecef4a7b3cd Remove includes of
Gerd Moellmann <gerd@gnu.org>
parents: 31225
diff changeset
33 extern char *index P_ ((const char *, int));
31225
7930c46bb365 (toplevel) [HAVE_STRING_H]: Include string.h.
Gerd Moellmann <gerd@gnu.org>
parents: 29371
diff changeset
34 #endif
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
35
16363
4097c59143f8 (Fcall_interactively): Bind cursor-in-echo-area to t for `k' and `K'.
Richard M. Stallman <rms@gnu.org>
parents: 16039
diff changeset
36 extern Lisp_Object Qcursor_in_echo_area;
45546
ce01a38706ee (Fcall_interactively) <"D">: Supply Qfile_directory_p
Kim F. Storm <storm@cua.dk>
parents: 45394
diff changeset
37 extern Lisp_Object Qfile_directory_p;
16363
4097c59143f8 (Fcall_interactively): Bind cursor-in-echo-area to t for `k' and `K'.
Richard M. Stallman <rms@gnu.org>
parents: 16039
diff changeset
38
12117
3fa5b6e7ad4b (current_prefix_partial): Deleted.
Karl Heuer <kwzh@gnu.org>
parents: 11911
diff changeset
39 Lisp_Object Vcurrent_prefix_arg, Qminus, Qplus;
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
40 Lisp_Object Qcall_interactively;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
41 Lisp_Object Vcommand_history;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
42
21721
46ffb5302c40 (Fcall_interactively): Truncate command-history here.
Richard M. Stallman <rms@gnu.org>
parents: 21514
diff changeset
43 extern Lisp_Object Vhistory_length;
46ffb5302c40 (Fcall_interactively): Truncate command-history here.
Richard M. Stallman <rms@gnu.org>
parents: 21514
diff changeset
44
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
45 Lisp_Object Vcommand_debug_status, Qcommand_debug_status;
873
0abaf590e0ca entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 863
diff changeset
46 Lisp_Object Qenable_recursive_minibuffers;
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
47
3975
718280a1ba74 (Vmark_even_if_inactive): New var, with Lisp variable.
Richard M. Stallman <rms@gnu.org>
parents: 2048
diff changeset
48 /* Non-nil means treat the mark as active
718280a1ba74 (Vmark_even_if_inactive): New var, with Lisp variable.
Richard M. Stallman <rms@gnu.org>
parents: 2048
diff changeset
49 even if mark_active is 0. */
718280a1ba74 (Vmark_even_if_inactive): New var, with Lisp variable.
Richard M. Stallman <rms@gnu.org>
parents: 2048
diff changeset
50 Lisp_Object Vmark_even_if_inactive;
718280a1ba74 (Vmark_even_if_inactive): New var, with Lisp variable.
Richard M. Stallman <rms@gnu.org>
parents: 2048
diff changeset
51
10279
89cf458ed188 (Vmouse_leave_buffer_hook, Qmouse_leave_buffer_hook): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 9342
diff changeset
52 Lisp_Object Vmouse_leave_buffer_hook, Qmouse_leave_buffer_hook;
89cf458ed188 (Vmouse_leave_buffer_hook, Qmouse_leave_buffer_hook): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 9342
diff changeset
53
48150
2b5f7e1254d1 (Fcall_interactively): New local filter_specs.
Richard M. Stallman <rms@gnu.org>
parents: 46370
diff changeset
54 Lisp_Object Qlist, Qlet, Qletx, Qsave_excursion, Qprogn;
10803
b8c4a1b7d484 (Fcall_interactively): Use markers temporarily in
Richard M. Stallman <rms@gnu.org>
parents: 10756
diff changeset
55 static Lisp_Object preserved_fns;
b8c4a1b7d484 (Fcall_interactively): Use markers temporarily in
Richard M. Stallman <rms@gnu.org>
parents: 10756
diff changeset
56
b8c4a1b7d484 (Fcall_interactively): Use markers temporarily in
Richard M. Stallman <rms@gnu.org>
parents: 10756
diff changeset
57 /* Marker used within call-interactively to refer to point. */
b8c4a1b7d484 (Fcall_interactively): Use markers temporarily in
Richard M. Stallman <rms@gnu.org>
parents: 10756
diff changeset
58 static Lisp_Object point_marker;
1498
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
59
13142
297a0e21501a (callint_message, callint_message_size): New vars.
Richard M. Stallman <rms@gnu.org>
parents: 12582
diff changeset
60 /* Buffer for the prompt text used in Fcall_interactively. */
297a0e21501a (callint_message, callint_message_size): New vars.
Richard M. Stallman <rms@gnu.org>
parents: 12582
diff changeset
61 static char *callint_message;
297a0e21501a (callint_message, callint_message_size): New vars.
Richard M. Stallman <rms@gnu.org>
parents: 12582
diff changeset
62
297a0e21501a (callint_message, callint_message_size): New vars.
Richard M. Stallman <rms@gnu.org>
parents: 12582
diff changeset
63 /* Allocated length of that buffer. */
297a0e21501a (callint_message, callint_message_size): New vars.
Richard M. Stallman <rms@gnu.org>
parents: 12582
diff changeset
64 static int callint_message_size;
10940
40a1812dcbad (current_prefix_partial): New var.
Karl Heuer <kwzh@gnu.org>
parents: 10917
diff changeset
65
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
66 /* ARGSUSED */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
67 DEFUN ("interactive", Finteractive, Sinteractive, 0, UNEVALLED, 0,
40103
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
68 doc: /* Specify a way of parsing arguments for interactive use of a function.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
69 For example, write
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
70 (defun foo (arg) "Doc string" (interactive "p") ...use arg...)
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
71 to make ARG be the prefix argument when `foo' is called as a command.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
72 The "call" to `interactive' is actually a declaration rather than a function;
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
73 it tells `call-interactively' how to read arguments
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
74 to pass to the function.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
75 When actually called, `interactive' just returns nil.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
76
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
77 The argument of `interactive' is usually a string containing a code letter
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
78 followed by a prompt. (Some code letters do not use I/O to get
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
79 the argument and do not need prompts.) To prompt for multiple arguments,
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
80 give a code letter, its prompt, a newline, and another code letter, etc.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
81 Prompts are passed to format, and may use % escapes to print the
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
82 arguments that have already been read.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
83 If the argument is not a string, it is evaluated to get a list of
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
84 arguments to pass to the function.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
85 Just `(interactive)' means pass no args when calling interactively.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
86
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
87 Code letters available are:
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
88 a -- Function name: symbol with a function definition.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
89 b -- Name of existing buffer.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
90 B -- Name of buffer, possibly nonexistent.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
91 c -- Character (no input method is used).
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
92 C -- Command name: symbol with interactive function definition.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
93 d -- Value of point as number. Does not do I/O.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
94 D -- Directory name.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
95 e -- Parametrized event (i.e., one that's a list) that invoked this command.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
96 If used more than once, the Nth `e' returns the Nth parameterized event.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
97 This skips events that are integers or symbols.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
98 f -- Existing file name.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
99 F -- Possibly nonexistent file name.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
100 i -- Ignored, i.e. always nil. Does not do I/O.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
101 k -- Key sequence (downcase the last event if needed to get a definition).
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
102 K -- Key sequence to be redefined (do not downcase the last event).
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
103 m -- Value of mark as number. Does not do I/O.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
104 M -- Any string. Inherits the current input method.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
105 n -- Number read using minibuffer.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
106 N -- Raw prefix arg, or if none, do like code `n'.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
107 p -- Prefix arg converted to number. Does not do I/O.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
108 P -- Prefix arg in raw form. Does not do I/O.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
109 r -- Region: point and mark as 2 numeric args, smallest first. Does no I/O.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
110 s -- Any string. Does not inherit the current input method.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
111 S -- Any symbol.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
112 v -- Variable name: symbol that is user-variable-p.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
113 x -- Lisp expression read but not evaluated.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
114 X -- Lisp expression read and evaluated.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
115 z -- Coding system.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
116 Z -- Coding system, nil if no prefix arg.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
117 In addition, if the string begins with `*'
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
118 then an error is signaled if the buffer is read-only.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
119 This happens before reading any arguments.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
120 If the string begins with `@', then Emacs searches the key sequence
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
121 which invoked the command for its first mouse click (or any other
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
122 event which specifies a window), and selects that window before
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
123 reading any arguments. You may use both `@' and `*'; they are
40643
184e0d756547 (Finteractive): Add usage to doc-string.
Pavel Janík <Pavel@Janik.cz>
parents: 40103
diff changeset
124 processed in the order that they appear.
184e0d756547 (Finteractive): Add usage to doc-string.
Pavel Janík <Pavel@Janik.cz>
parents: 40103
diff changeset
125 usage: (interactive ARGS) */)
40103
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
126 (args)
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
127 Lisp_Object args;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
128 {
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
129 return Qnil;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
130 }
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
131
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
132 /* Quotify EXP: if EXP is constant, return it.
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
133 If EXP is not constant, return (quote EXP). */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
134 Lisp_Object
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
135 quotify_arg (exp)
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
136 register Lisp_Object exp;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
137 {
9145
dda75a4dbbfb (quotify_arg, Fcall_interactively, Fprefix_numeric_value): Use type test
Karl Heuer <kwzh@gnu.org>
parents: 9100
diff changeset
138 if (!INTEGERP (exp) && !STRINGP (exp)
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 438
diff changeset
139 && !NILP (exp) && !EQ (exp, Qt))
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
140 return Fcons (Qquote, Fcons (exp, Qnil));
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
141
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
142 return exp;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
143 }
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
144
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
145 /* Modify EXP by quotifying each element (except the first). */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
146 Lisp_Object
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
147 quotify_args (exp)
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
148 Lisp_Object exp;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
149 {
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
150 register Lisp_Object tail;
26164
d39ec0a27081 more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents: 25645
diff changeset
151 Lisp_Object next;
d39ec0a27081 more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents: 25645
diff changeset
152 for (tail = exp; CONSP (tail); tail = next)
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
153 {
26164
d39ec0a27081 more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents: 25645
diff changeset
154 next = XCDR (tail);
39973
579177964efa Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting
Ken Raeburn <raeburn@raeburn.org>
parents: 39945
diff changeset
155 XSETCAR (tail, quotify_arg (XCAR (tail)));
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
156 }
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
157 return exp;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
158 }
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
159
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
160 char *callint_argfuns[]
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
161 = {"", "point", "mark", "region-beginning", "region-end"};
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
162
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
163 static void
43039
531bd3a9e67a (check_mark): New arg to specify clearer error message.
Richard M. Stallman <rms@gnu.org>
parents: 42272
diff changeset
164 check_mark (for_region)
531bd3a9e67a (check_mark): New arg to specify clearer error message.
Richard M. Stallman <rms@gnu.org>
parents: 42272
diff changeset
165 int for_region;
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
166 {
6494
00475922df29 (check_mark, Fcall_interactively): Use assignment, not initialization.
Karl Heuer <kwzh@gnu.org>
parents: 6271
diff changeset
167 Lisp_Object tem;
00475922df29 (check_mark, Fcall_interactively): Use assignment, not initialization.
Karl Heuer <kwzh@gnu.org>
parents: 6271
diff changeset
168 tem = Fmarker_buffer (current_buffer->mark);
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 438
diff changeset
169 if (NILP (tem) || (XBUFFER (tem) != current_buffer))
43039
531bd3a9e67a (check_mark): New arg to specify clearer error message.
Richard M. Stallman <rms@gnu.org>
parents: 42272
diff changeset
170 error (for_region ? "The mark is not set now, so there is no region"
531bd3a9e67a (check_mark): New arg to specify clearer error message.
Richard M. Stallman <rms@gnu.org>
parents: 42272
diff changeset
171 : "The mark is not set now");
4039
77cb08d1c4a5 (check_mark): Don't check mark-active unless in transient-mark-mode.
Roland McGrath <roland@gnu.org>
parents: 3975
diff changeset
172 if (!NILP (Vtransient_mark_mode) && NILP (Vmark_even_if_inactive)
77cb08d1c4a5 (check_mark): Don't check mark-active unless in transient-mark-mode.
Roland McGrath <roland@gnu.org>
parents: 3975
diff changeset
173 && NILP (current_buffer->mark_active))
77cb08d1c4a5 (check_mark): Don't check mark-active unless in transient-mark-mode.
Roland McGrath <roland@gnu.org>
parents: 3975
diff changeset
174 Fsignal (Qmark_inactive, Qnil);
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
175 }
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
176
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
177
13308
99457b67e20c (Fcall_interactively): New arg KEYS.
Richard M. Stallman <rms@gnu.org>
parents: 13142
diff changeset
178 DEFUN ("call-interactively", Fcall_interactively, Scall_interactively, 1, 3, 0,
40103
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
179 doc: /* Call FUNCTION, reading args according to its interactive calling specs.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
180 Return the value FUNCTION returns.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
181 The function contains a specification of how to do the argument reading.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
182 In the case of user-defined functions, this is specified by placing a call
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
183 to the function `interactive' at the top level of the function body.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
184 See `interactive'.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
185
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
186 Optional second arg RECORD-FLAG non-nil
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
187 means unconditionally put this command in the command-history.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
188 Otherwise, this is done only if an arg is read using the minibuffer.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
189 Optional third arg KEYS, if given, specifies the sequence of events to
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
190 supply if the command inquires which events were used to invoke it. */)
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
191 (function, record_flag, keys)
14062
16a05061fee3 (Fcall_interactively, Fprefix_numeric_value): Harmonize arguments with
Erik Naggum <erik@naggum.no>
parents: 13843
diff changeset
192 Lisp_Object function, record_flag, keys;
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
193 {
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
194 Lisp_Object *args, *visargs;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
195 unsigned char **argstrings;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
196 Lisp_Object fun;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
197 Lisp_Object funcar;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
198 Lisp_Object specs;
48150
2b5f7e1254d1 (Fcall_interactively): New local filter_specs.
Richard M. Stallman <rms@gnu.org>
parents: 46370
diff changeset
199 Lisp_Object filter_specs;
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
200 Lisp_Object teml;
873
0abaf590e0ca entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 863
diff changeset
201 Lisp_Object enable;
46293
1fb8f75062c6 Use macro SPECPDL_INDEX.
Juanma Barranquero <lekktu@gmail.com>
parents: 46006
diff changeset
202 int speccount = SPECPDL_INDEX ();
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
203
1383
54028d2538a4 * callint.c (Fcall_interactively): Allow multiple 'e' specs.
Jim Blandy <jimb@redhat.com>
parents: 1347
diff changeset
204 /* The index of the next element of this_command_keys to examine for
54028d2538a4 * callint.c (Fcall_interactively): Allow multiple 'e' specs.
Jim Blandy <jimb@redhat.com>
parents: 1347
diff changeset
205 the 'e' interactive code. */
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1693
diff changeset
206 int next_event;
1383
54028d2538a4 * callint.c (Fcall_interactively): Allow multiple 'e' specs.
Jim Blandy <jimb@redhat.com>
parents: 1347
diff changeset
207
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
208 Lisp_Object prefix_arg;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
209 unsigned char *string;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
210 unsigned char *tem;
438
8b54ee2c82d6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 407
diff changeset
211
8b54ee2c82d6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 407
diff changeset
212 /* If varies[i] > 0, the i'th argument shouldn't just have its value
8b54ee2c82d6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 407
diff changeset
213 in this call quoted in the command history. It should be
8b54ee2c82d6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 407
diff changeset
214 recorded as a call to the function named callint_argfuns[varies[i]]. */
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
215 int *varies;
438
8b54ee2c82d6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 407
diff changeset
216
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
217 register int i, j;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
218 int count, foo;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
219 char prompt1[100];
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
220 char *tem1;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
221 int arg_from_tty = 0;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
222 struct gcpro gcpro1, gcpro2, gcpro3, gcpro4;
13308
99457b67e20c (Fcall_interactively): New arg KEYS.
Richard M. Stallman <rms@gnu.org>
parents: 13142
diff changeset
223 int key_count;
48527
ba7cb9f8dfc3 (Fcall_interactively): If a command fails because
Richard M. Stallman <rms@gnu.org>
parents: 48150
diff changeset
224 int record_then_fail = 0;
13308
99457b67e20c (Fcall_interactively): New arg KEYS.
Richard M. Stallman <rms@gnu.org>
parents: 13142
diff changeset
225
99457b67e20c (Fcall_interactively): New arg KEYS.
Richard M. Stallman <rms@gnu.org>
parents: 13142
diff changeset
226 if (NILP (keys))
99457b67e20c (Fcall_interactively): New arg KEYS.
Richard M. Stallman <rms@gnu.org>
parents: 13142
diff changeset
227 keys = this_command_keys, key_count = this_command_key_count;
99457b67e20c (Fcall_interactively): New arg KEYS.
Richard M. Stallman <rms@gnu.org>
parents: 13142
diff changeset
228 else
99457b67e20c (Fcall_interactively): New arg KEYS.
Richard M. Stallman <rms@gnu.org>
parents: 13142
diff changeset
229 {
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40643
diff changeset
230 CHECK_VECTOR (keys);
13308
99457b67e20c (Fcall_interactively): New arg KEYS.
Richard M. Stallman <rms@gnu.org>
parents: 13142
diff changeset
231 key_count = XVECTOR (keys)->size;
99457b67e20c (Fcall_interactively): New arg KEYS.
Richard M. Stallman <rms@gnu.org>
parents: 13142
diff changeset
232 }
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
233
732
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 648
diff changeset
234 /* Save this now, since use of minibuffer will clobber it. */
10857
2b9faff73319 (Fcall_interactively, syms_of_callint, Vprefix_arg, Vcurrent_prefix_arg): Undo
Karl Heuer <kwzh@gnu.org>
parents: 10846
diff changeset
235 prefix_arg = Vcurrent_prefix_arg;
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
236
617
cde1f15848c6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 516
diff changeset
237 retry:
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
238
9145
dda75a4dbbfb (quotify_arg, Fcall_interactively, Fprefix_numeric_value): Use type test
Karl Heuer <kwzh@gnu.org>
parents: 9100
diff changeset
239 if (SYMBOLP (function))
1115
eb7f1ab33a9d * callint.c (Fcall_interactively): Remove the 'K' interactive
Jim Blandy <jimb@redhat.com>
parents: 1084
diff changeset
240 enable = Fget (function, Qenable_recursive_minibuffers);
34799
c04a8de55245 (Fcall_interactively): Prevent a compiler warning.
Gerd Moellmann <gerd@gnu.org>
parents: 31336
diff changeset
241 else
c04a8de55245 (Fcall_interactively): Prevent a compiler warning.
Gerd Moellmann <gerd@gnu.org>
parents: 31336
diff changeset
242 enable = Qnil;
873
0abaf590e0ca entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 863
diff changeset
243
648
70b112526394 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 644
diff changeset
244 fun = indirect_function (function);
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
245
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
246 specs = Qnil;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
247 string = 0;
48150
2b5f7e1254d1 (Fcall_interactively): New local filter_specs.
Richard M. Stallman <rms@gnu.org>
parents: 46370
diff changeset
248 /* The idea of FILTER_SPECS is to provide away to
2b5f7e1254d1 (Fcall_interactively): New local filter_specs.
Richard M. Stallman <rms@gnu.org>
parents: 46370
diff changeset
249 specify how to represent the arguments in command history.
2b5f7e1254d1 (Fcall_interactively): New local filter_specs.
Richard M. Stallman <rms@gnu.org>
parents: 46370
diff changeset
250 The feature is not fully implemented. */
2b5f7e1254d1 (Fcall_interactively): New local filter_specs.
Richard M. Stallman <rms@gnu.org>
parents: 46370
diff changeset
251 filter_specs = Qnil;
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
252
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
253 /* Decode the kind of function. Either handle it and return,
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
254 or go to `lose' if not interactive, or go to `retry'
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
255 to specify a different function, or set either STRING or SPECS. */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
256
9145
dda75a4dbbfb (quotify_arg, Fcall_interactively, Fprefix_numeric_value): Use type test
Karl Heuer <kwzh@gnu.org>
parents: 9100
diff changeset
257 if (SUBRP (fun))
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
258 {
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
259 string = (unsigned char *) XSUBR (fun)->prompt;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
260 if (!string)
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
261 {
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
262 lose:
1926
952f2a18f83d * callint.c (Fcall_interactively): Pass the correct number of
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
263 function = wrong_type_argument (Qcommandp, function);
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
264 goto retry;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
265 }
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
266 }
9145
dda75a4dbbfb (quotify_arg, Fcall_interactively, Fprefix_numeric_value): Use type test
Karl Heuer <kwzh@gnu.org>
parents: 9100
diff changeset
267 else if (COMPILEDP (fun))
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
268 {
10345
9952a5ab70d1 Fix typo in last change.
Roland McGrath <roland@gnu.org>
parents: 10343
diff changeset
269 if ((XVECTOR (fun)->size & PSEUDOVECTOR_SIZE_MASK) <= COMPILED_INTERACTIVE)
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
270 goto lose;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
271 specs = XVECTOR (fun)->contents[COMPILED_INTERACTIVE];
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
272 }
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
273 else if (!CONSP (fun))
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
274 goto lose;
39813
638b60fd98d0 (Fcall_interactively): Remove unused code. Use XCAR/XCDR.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39697
diff changeset
275 else if (funcar = XCAR (fun), EQ (funcar, Qautoload))
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
276 {
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
277 GCPRO2 (function, prefix_arg);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
278 do_autoload (fun, function);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
279 UNGCPRO;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
280 goto retry;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
281 }
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
282 else if (EQ (funcar, Qlambda))
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
283 {
39813
638b60fd98d0 (Fcall_interactively): Remove unused code. Use XCAR/XCDR.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39697
diff changeset
284 specs = Fassq (Qinteractive, Fcdr (XCDR (fun)));
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 438
diff changeset
285 if (NILP (specs))
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
286 goto lose;
48150
2b5f7e1254d1 (Fcall_interactively): New local filter_specs.
Richard M. Stallman <rms@gnu.org>
parents: 46370
diff changeset
287 filter_specs = Fnth (make_number (1), specs);
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
288 specs = Fcar (Fcdr (specs));
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
289 }
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
290 else
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
291 goto lose;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
292
48527
ba7cb9f8dfc3 (Fcall_interactively): If a command fails because
Richard M. Stallman <rms@gnu.org>
parents: 48150
diff changeset
293 /* If either SPECS or STRING is set to a string, use it. */
9145
dda75a4dbbfb (quotify_arg, Fcall_interactively, Fprefix_numeric_value): Use type test
Karl Heuer <kwzh@gnu.org>
parents: 9100
diff changeset
294 if (STRINGP (specs))
617
cde1f15848c6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 516
diff changeset
295 {
cde1f15848c6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 516
diff changeset
296 /* Make a copy of string so that if a GC relocates specs,
cde1f15848c6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 516
diff changeset
297 `string' will still be valid. */
46370
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 46293
diff changeset
298 string = (unsigned char *) alloca (SBYTES (specs) + 1);
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 46293
diff changeset
299 bcopy (SDATA (specs), string,
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 46293
diff changeset
300 SBYTES (specs) + 1);
617
cde1f15848c6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 516
diff changeset
301 }
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
302 else if (string == 0)
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
303 {
1498
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
304 Lisp_Object input;
17876
6e27f660a0be (Fcall_interactively): Use num_input_events.
Richard M. Stallman <rms@gnu.org>
parents: 17806
diff changeset
305 i = num_input_events;
1498
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
306 input = specs;
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
307 /* Compute the arg values using the user's expression. */
48150
2b5f7e1254d1 (Fcall_interactively): New local filter_specs.
Richard M. Stallman <rms@gnu.org>
parents: 46370
diff changeset
308 GCPRO2 (input, filter_specs);
13843
f5bd72a6fe48 (Fcall_interactively): Undo previous change.
Richard M. Stallman <rms@gnu.org>
parents: 13764
diff changeset
309 specs = Feval (specs);
48150
2b5f7e1254d1 (Fcall_interactively): New local filter_specs.
Richard M. Stallman <rms@gnu.org>
parents: 46370
diff changeset
310 UNGCPRO;
17876
6e27f660a0be (Fcall_interactively): Use num_input_events.
Richard M. Stallman <rms@gnu.org>
parents: 17806
diff changeset
311 if (i != num_input_events || !NILP (record_flag))
1498
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
312 {
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
313 /* We should record this command on the command history. */
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
314 Lisp_Object values, car;
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
315 /* Make a copy of the list of values, for the command history,
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
316 and turn them into things we can eval. */
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
317 values = quotify_args (Fcopy_sequence (specs));
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
318 /* If the list of args was produced with an explicit call to `list',
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
319 look for elements that were computed with (region-beginning)
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
320 or (region-end), and put those expressions into VALUES
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
321 instead of the present values. */
13447
8c89b569cfa9 (syms_of_callint): Set up Qlet, Qletx, Qsave_excursion.
Richard M. Stallman <rms@gnu.org>
parents: 13308
diff changeset
322 if (CONSP (input))
1498
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
323 {
25645
a14111a2a100 Use XCAR, XCDR, XFLOAT_DATA instead of explicit member access.
Ken Raeburn <raeburn@raeburn.org>
parents: 24911
diff changeset
324 car = XCAR (input);
13447
8c89b569cfa9 (syms_of_callint): Set up Qlet, Qletx, Qsave_excursion.
Richard M. Stallman <rms@gnu.org>
parents: 13308
diff changeset
325 /* Skip through certain special forms. */
8c89b569cfa9 (syms_of_callint): Set up Qlet, Qletx, Qsave_excursion.
Richard M. Stallman <rms@gnu.org>
parents: 13308
diff changeset
326 while (EQ (car, Qlet) || EQ (car, Qletx)
48150
2b5f7e1254d1 (Fcall_interactively): New local filter_specs.
Richard M. Stallman <rms@gnu.org>
parents: 46370
diff changeset
327 || EQ (car, Qsave_excursion)
2b5f7e1254d1 (Fcall_interactively): New local filter_specs.
Richard M. Stallman <rms@gnu.org>
parents: 46370
diff changeset
328 || EQ (car, Qprogn))
1498
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
329 {
25645
a14111a2a100 Use XCAR, XCDR, XFLOAT_DATA instead of explicit member access.
Ken Raeburn <raeburn@raeburn.org>
parents: 24911
diff changeset
330 while (CONSP (XCDR (input)))
a14111a2a100 Use XCAR, XCDR, XFLOAT_DATA instead of explicit member access.
Ken Raeburn <raeburn@raeburn.org>
parents: 24911
diff changeset
331 input = XCDR (input);
a14111a2a100 Use XCAR, XCDR, XFLOAT_DATA instead of explicit member access.
Ken Raeburn <raeburn@raeburn.org>
parents: 24911
diff changeset
332 input = XCAR (input);
13447
8c89b569cfa9 (syms_of_callint): Set up Qlet, Qletx, Qsave_excursion.
Richard M. Stallman <rms@gnu.org>
parents: 13308
diff changeset
333 if (!CONSP (input))
8c89b569cfa9 (syms_of_callint): Set up Qlet, Qletx, Qsave_excursion.
Richard M. Stallman <rms@gnu.org>
parents: 13308
diff changeset
334 break;
25645
a14111a2a100 Use XCAR, XCDR, XFLOAT_DATA instead of explicit member access.
Ken Raeburn <raeburn@raeburn.org>
parents: 24911
diff changeset
335 car = XCAR (input);
13447
8c89b569cfa9 (syms_of_callint): Set up Qlet, Qletx, Qsave_excursion.
Richard M. Stallman <rms@gnu.org>
parents: 13308
diff changeset
336 }
8c89b569cfa9 (syms_of_callint): Set up Qlet, Qletx, Qsave_excursion.
Richard M. Stallman <rms@gnu.org>
parents: 13308
diff changeset
337 if (EQ (car, Qlist))
8c89b569cfa9 (syms_of_callint): Set up Qlet, Qletx, Qsave_excursion.
Richard M. Stallman <rms@gnu.org>
parents: 13308
diff changeset
338 {
8c89b569cfa9 (syms_of_callint): Set up Qlet, Qletx, Qsave_excursion.
Richard M. Stallman <rms@gnu.org>
parents: 13308
diff changeset
339 Lisp_Object intail, valtail;
8c89b569cfa9 (syms_of_callint): Set up Qlet, Qletx, Qsave_excursion.
Richard M. Stallman <rms@gnu.org>
parents: 13308
diff changeset
340 for (intail = Fcdr (input), valtail = values;
8c89b569cfa9 (syms_of_callint): Set up Qlet, Qletx, Qsave_excursion.
Richard M. Stallman <rms@gnu.org>
parents: 13308
diff changeset
341 CONSP (valtail);
8c89b569cfa9 (syms_of_callint): Set up Qlet, Qletx, Qsave_excursion.
Richard M. Stallman <rms@gnu.org>
parents: 13308
diff changeset
342 intail = Fcdr (intail), valtail = Fcdr (valtail))
1498
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
343 {
13447
8c89b569cfa9 (syms_of_callint): Set up Qlet, Qletx, Qsave_excursion.
Richard M. Stallman <rms@gnu.org>
parents: 13308
diff changeset
344 Lisp_Object elt;
8c89b569cfa9 (syms_of_callint): Set up Qlet, Qletx, Qsave_excursion.
Richard M. Stallman <rms@gnu.org>
parents: 13308
diff changeset
345 elt = Fcar (intail);
8c89b569cfa9 (syms_of_callint): Set up Qlet, Qletx, Qsave_excursion.
Richard M. Stallman <rms@gnu.org>
parents: 13308
diff changeset
346 if (CONSP (elt))
8c89b569cfa9 (syms_of_callint): Set up Qlet, Qletx, Qsave_excursion.
Richard M. Stallman <rms@gnu.org>
parents: 13308
diff changeset
347 {
8c89b569cfa9 (syms_of_callint): Set up Qlet, Qletx, Qsave_excursion.
Richard M. Stallman <rms@gnu.org>
parents: 13308
diff changeset
348 Lisp_Object presflag;
8c89b569cfa9 (syms_of_callint): Set up Qlet, Qletx, Qsave_excursion.
Richard M. Stallman <rms@gnu.org>
parents: 13308
diff changeset
349 presflag = Fmemq (Fcar (elt), preserved_fns);
8c89b569cfa9 (syms_of_callint): Set up Qlet, Qletx, Qsave_excursion.
Richard M. Stallman <rms@gnu.org>
parents: 13308
diff changeset
350 if (!NILP (presflag))
8c89b569cfa9 (syms_of_callint): Set up Qlet, Qletx, Qsave_excursion.
Richard M. Stallman <rms@gnu.org>
parents: 13308
diff changeset
351 Fsetcar (valtail, Fcar (intail));
8c89b569cfa9 (syms_of_callint): Set up Qlet, Qletx, Qsave_excursion.
Richard M. Stallman <rms@gnu.org>
parents: 13308
diff changeset
352 }
1498
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
353 }
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
354 }
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
355 }
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
356 Vcommand_history
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
357 = Fcons (Fcons (function, values), Vcommand_history);
21721
46ffb5302c40 (Fcall_interactively): Truncate command-history here.
Richard M. Stallman <rms@gnu.org>
parents: 21514
diff changeset
358
46ffb5302c40 (Fcall_interactively): Truncate command-history here.
Richard M. Stallman <rms@gnu.org>
parents: 21514
diff changeset
359 /* Don't keep command history around forever. */
44405
0ed69545b5f3 (Fcall_interactively): Use INTEGERP instead of
Gerd Moellmann <gerd@gnu.org>
parents: 43039
diff changeset
360 if (INTEGERP (Vhistory_length) && XINT (Vhistory_length) > 0)
21721
46ffb5302c40 (Fcall_interactively): Truncate command-history here.
Richard M. Stallman <rms@gnu.org>
parents: 21514
diff changeset
361 {
46ffb5302c40 (Fcall_interactively): Truncate command-history here.
Richard M. Stallman <rms@gnu.org>
parents: 21514
diff changeset
362 teml = Fnthcdr (Vhistory_length, Vcommand_history);
46ffb5302c40 (Fcall_interactively): Truncate command-history here.
Richard M. Stallman <rms@gnu.org>
parents: 21514
diff changeset
363 if (CONSP (teml))
39973
579177964efa Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting
Ken Raeburn <raeburn@raeburn.org>
parents: 39945
diff changeset
364 XSETCDR (teml, Qnil);
21721
46ffb5302c40 (Fcall_interactively): Truncate command-history here.
Richard M. Stallman <rms@gnu.org>
parents: 21514
diff changeset
365 }
1498
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
366 }
11345
c4adea8f7543 (Fcall_interactively): Call single_kboard_state
Richard M. Stallman <rms@gnu.org>
parents: 11280
diff changeset
367 single_kboard_state ();
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
368 return apply1 (function, specs);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
369 }
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
370
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
371 /* Here if function specifies a string to control parsing the defaults */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
372
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1693
diff changeset
373 /* Set next_event to point to the first event with parameters. */
13308
99457b67e20c (Fcall_interactively): New arg KEYS.
Richard M. Stallman <rms@gnu.org>
parents: 13142
diff changeset
374 for (next_event = 0; next_event < key_count; next_event++)
99457b67e20c (Fcall_interactively): New arg KEYS.
Richard M. Stallman <rms@gnu.org>
parents: 13142
diff changeset
375 if (EVENT_HAS_PARAMETERS (XVECTOR (keys)->contents[next_event]))
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1693
diff changeset
376 break;
48527
ba7cb9f8dfc3 (Fcall_interactively): If a command fails because
Richard M. Stallman <rms@gnu.org>
parents: 48150
diff changeset
377
7912
f87185e63bbc (Fcall_interactively): Ignore `-' in string.
Richard M. Stallman <rms@gnu.org>
parents: 7307
diff changeset
378 /* Handle special starting chars `*' and `@'. Also `-'. */
11278
25b2219c415c (Fcall_interactively): `+' is reserved for user changes.
Richard M. Stallman <rms@gnu.org>
parents: 11009
diff changeset
379 /* Note that `+' is reserved for user extensions. */
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
380 while (1)
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
381 {
11280
5146fba1f75d (Fcall_interactively): Fix previous change.
Karl Heuer <kwzh@gnu.org>
parents: 11278
diff changeset
382 if (*string == '+')
11278
25b2219c415c (Fcall_interactively): `+' is reserved for user changes.
Richard M. Stallman <rms@gnu.org>
parents: 11009
diff changeset
383 error ("`+' is not used in `interactive' for ordinary commands");
25b2219c415c (Fcall_interactively): `+' is reserved for user changes.
Richard M. Stallman <rms@gnu.org>
parents: 11009
diff changeset
384 else if (*string == '*')
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
385 {
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
386 string++;
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 438
diff changeset
387 if (!NILP (current_buffer->read_only))
48527
ba7cb9f8dfc3 (Fcall_interactively): If a command fails because
Richard M. Stallman <rms@gnu.org>
parents: 48150
diff changeset
388 {
ba7cb9f8dfc3 (Fcall_interactively): If a command fails because
Richard M. Stallman <rms@gnu.org>
parents: 48150
diff changeset
389 if (!NILP (record_flag))
ba7cb9f8dfc3 (Fcall_interactively): If a command fails because
Richard M. Stallman <rms@gnu.org>
parents: 48150
diff changeset
390 {
ba7cb9f8dfc3 (Fcall_interactively): If a command fails because
Richard M. Stallman <rms@gnu.org>
parents: 48150
diff changeset
391 unsigned char *p = string;
ba7cb9f8dfc3 (Fcall_interactively): If a command fails because
Richard M. Stallman <rms@gnu.org>
parents: 48150
diff changeset
392 while (*p)
ba7cb9f8dfc3 (Fcall_interactively): If a command fails because
Richard M. Stallman <rms@gnu.org>
parents: 48150
diff changeset
393 {
ba7cb9f8dfc3 (Fcall_interactively): If a command fails because
Richard M. Stallman <rms@gnu.org>
parents: 48150
diff changeset
394 if (! (*p == 'r' || *p == 'p' || *p == 'P'
ba7cb9f8dfc3 (Fcall_interactively): If a command fails because
Richard M. Stallman <rms@gnu.org>
parents: 48150
diff changeset
395 || *p == '\n'))
ba7cb9f8dfc3 (Fcall_interactively): If a command fails because
Richard M. Stallman <rms@gnu.org>
parents: 48150
diff changeset
396 Fbarf_if_buffer_read_only ();
ba7cb9f8dfc3 (Fcall_interactively): If a command fails because
Richard M. Stallman <rms@gnu.org>
parents: 48150
diff changeset
397 p++;
ba7cb9f8dfc3 (Fcall_interactively): If a command fails because
Richard M. Stallman <rms@gnu.org>
parents: 48150
diff changeset
398 }
ba7cb9f8dfc3 (Fcall_interactively): If a command fails because
Richard M. Stallman <rms@gnu.org>
parents: 48150
diff changeset
399 record_then_fail = 1;
ba7cb9f8dfc3 (Fcall_interactively): If a command fails because
Richard M. Stallman <rms@gnu.org>
parents: 48150
diff changeset
400 }
ba7cb9f8dfc3 (Fcall_interactively): If a command fails because
Richard M. Stallman <rms@gnu.org>
parents: 48150
diff changeset
401 else
ba7cb9f8dfc3 (Fcall_interactively): If a command fails because
Richard M. Stallman <rms@gnu.org>
parents: 48150
diff changeset
402 Fbarf_if_buffer_read_only ();
ba7cb9f8dfc3 (Fcall_interactively): If a command fails because
Richard M. Stallman <rms@gnu.org>
parents: 48150
diff changeset
403 }
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
404 }
7912
f87185e63bbc (Fcall_interactively): Ignore `-' in string.
Richard M. Stallman <rms@gnu.org>
parents: 7307
diff changeset
405 /* Ignore this for semi-compatibility with Lucid. */
f87185e63bbc (Fcall_interactively): Ignore `-' in string.
Richard M. Stallman <rms@gnu.org>
parents: 7307
diff changeset
406 else if (*string == '-')
f87185e63bbc (Fcall_interactively): Ignore `-' in string.
Richard M. Stallman <rms@gnu.org>
parents: 7307
diff changeset
407 string++;
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
408 else if (*string == '@')
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
409 {
6494
00475922df29 (check_mark, Fcall_interactively): Use assignment, not initialization.
Karl Heuer <kwzh@gnu.org>
parents: 6271
diff changeset
410 Lisp_Object event;
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1693
diff changeset
411
48630
edd0dd275f1f (Fcall_interactively): Use next_event only if less
Andreas Schwab <schwab@suse.de>
parents: 48527
diff changeset
412 event = (next_event < key_count
edd0dd275f1f (Fcall_interactively): Use next_event only if less
Andreas Schwab <schwab@suse.de>
parents: 48527
diff changeset
413 ? XVECTOR (keys)->contents[next_event]
edd0dd275f1f (Fcall_interactively): Use next_event only if less
Andreas Schwab <schwab@suse.de>
parents: 48527
diff changeset
414 : Qnil);
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1693
diff changeset
415 if (EVENT_HAS_PARAMETERS (event)
25645
a14111a2a100 Use XCAR, XCDR, XFLOAT_DATA instead of explicit member access.
Ken Raeburn <raeburn@raeburn.org>
parents: 24911
diff changeset
416 && (event = XCDR (event), CONSP (event))
a14111a2a100 Use XCAR, XCDR, XFLOAT_DATA instead of explicit member access.
Ken Raeburn <raeburn@raeburn.org>
parents: 24911
diff changeset
417 && (event = XCAR (event), CONSP (event))
a14111a2a100 Use XCAR, XCDR, XFLOAT_DATA instead of explicit member access.
Ken Raeburn <raeburn@raeburn.org>
parents: 24911
diff changeset
418 && (event = XCAR (event), WINDOWP (event)))
6270
853b88dd9945 (Fcall_interactively): Don't select an active minibuffer.
Karl Heuer <kwzh@gnu.org>
parents: 4696
diff changeset
419 {
6271
264f353c5b00 Fix typo in previous change.
Karl Heuer <kwzh@gnu.org>
parents: 6270
diff changeset
420 if (MINI_WINDOW_P (XWINDOW (event))
7912
f87185e63bbc (Fcall_interactively): Ignore `-' in string.
Richard M. Stallman <rms@gnu.org>
parents: 7307
diff changeset
421 && ! (minibuf_level > 0 && EQ (event, minibuf_window)))
6270
853b88dd9945 (Fcall_interactively): Don't select an active minibuffer.
Karl Heuer <kwzh@gnu.org>
parents: 4696
diff changeset
422 error ("Attempt to select inactive minibuffer window");
10279
89cf458ed188 (Vmouse_leave_buffer_hook, Qmouse_leave_buffer_hook): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 9342
diff changeset
423
89cf458ed188 (Vmouse_leave_buffer_hook, Qmouse_leave_buffer_hook): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 9342
diff changeset
424 /* If the current buffer wants to clean up, let it. */
89cf458ed188 (Vmouse_leave_buffer_hook, Qmouse_leave_buffer_hook): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 9342
diff changeset
425 if (!NILP (Vmouse_leave_buffer_hook))
89cf458ed188 (Vmouse_leave_buffer_hook, Qmouse_leave_buffer_hook): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 9342
diff changeset
426 call1 (Vrun_hooks, Qmouse_leave_buffer_hook);
89cf458ed188 (Vmouse_leave_buffer_hook, Qmouse_leave_buffer_hook): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 9342
diff changeset
427
6270
853b88dd9945 (Fcall_interactively): Don't select an active minibuffer.
Karl Heuer <kwzh@gnu.org>
parents: 4696
diff changeset
428 Fselect_window (event);
853b88dd9945 (Fcall_interactively): Don't select an active minibuffer.
Karl Heuer <kwzh@gnu.org>
parents: 4696
diff changeset
429 }
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
430 string++;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
431 }
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
432 else break;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
433 }
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
434
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
435 /* Count the number of arguments the interactive spec would have
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
436 us give to the function. */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
437 tem = string;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
438 for (j = 0; *tem; j++)
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
439 {
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
440 /* 'r' specifications ("point and mark as 2 numeric args")
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
441 produce *two* arguments. */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
442 if (*tem == 'r') j++;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
443 tem = (unsigned char *) index (tem, '\n');
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
444 if (tem)
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
445 tem++;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
446 else
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
447 tem = (unsigned char *) "";
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
448 }
13843
f5bd72a6fe48 (Fcall_interactively): Undo previous change.
Richard M. Stallman <rms@gnu.org>
parents: 13764
diff changeset
449 count = j;
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
450
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
451 args = (Lisp_Object *) alloca ((count + 1) * sizeof (Lisp_Object));
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
452 visargs = (Lisp_Object *) alloca ((count + 1) * sizeof (Lisp_Object));
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
453 argstrings = (unsigned char **) alloca ((count + 1) * sizeof (char *));
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
454 varies = (int *) alloca ((count + 1) * sizeof (int));
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
455
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
456 for (i = 0; i < (count + 1); i++)
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
457 {
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
458 args[i] = Qnil;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
459 visargs[i] = Qnil;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
460 varies[i] = 0;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
461 }
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
462
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
463 GCPRO4 (prefix_arg, function, *args, *visargs);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
464 gcpro3.nvars = (count + 1);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
465 gcpro4.nvars = (count + 1);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
466
873
0abaf590e0ca entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 863
diff changeset
467 if (!NILP (enable))
0abaf590e0ca entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 863
diff changeset
468 specbind (Qenable_recursive_minibuffers, Qt);
0abaf590e0ca entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 863
diff changeset
469
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
470 tem = string;
13843
f5bd72a6fe48 (Fcall_interactively): Undo previous change.
Richard M. Stallman <rms@gnu.org>
parents: 13764
diff changeset
471 for (i = 1; *tem; i++)
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
472 {
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
473 strncpy (prompt1, tem + 1, sizeof prompt1 - 1);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
474 prompt1[sizeof prompt1 - 1] = 0;
31225
7930c46bb365 (toplevel) [HAVE_STRING_H]: Include string.h.
Gerd Moellmann <gerd@gnu.org>
parents: 29371
diff changeset
475 tem1 = (char *) index (prompt1, '\n');
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
476 if (tem1) *tem1 = 0;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
477 /* Fill argstrings with a vector of C strings
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
478 corresponding to the Lisp strings in visargs. */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
479 for (j = 1; j < i; j++)
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
480 argstrings[j]
20552
1a0cb8cd5615 (Fcall_interactively) <'d', 'r'>: Use set_marker_both.
Richard M. Stallman <rms@gnu.org>
parents: 19759
diff changeset
481 = (EQ (visargs[j], Qnil)
1a0cb8cd5615 (Fcall_interactively) <'d', 'r'>: Use set_marker_both.
Richard M. Stallman <rms@gnu.org>
parents: 19759
diff changeset
482 ? (unsigned char *) ""
46370
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 46293
diff changeset
483 : SDATA (visargs[j]));
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
484
13142
297a0e21501a (callint_message, callint_message_size): New vars.
Richard M. Stallman <rms@gnu.org>
parents: 12582
diff changeset
485 /* Process the format-string in prompt1, putting the output
297a0e21501a (callint_message, callint_message_size): New vars.
Richard M. Stallman <rms@gnu.org>
parents: 12582
diff changeset
486 into callint_message. Make callint_message bigger if necessary.
297a0e21501a (callint_message, callint_message_size): New vars.
Richard M. Stallman <rms@gnu.org>
parents: 12582
diff changeset
487 We don't use a buffer on the stack, because the contents
297a0e21501a (callint_message, callint_message_size): New vars.
Richard M. Stallman <rms@gnu.org>
parents: 12582
diff changeset
488 need to stay stable for a while. */
297a0e21501a (callint_message, callint_message_size): New vars.
Richard M. Stallman <rms@gnu.org>
parents: 12582
diff changeset
489 while (1)
297a0e21501a (callint_message, callint_message_size): New vars.
Richard M. Stallman <rms@gnu.org>
parents: 12582
diff changeset
490 {
297a0e21501a (callint_message, callint_message_size): New vars.
Richard M. Stallman <rms@gnu.org>
parents: 12582
diff changeset
491 int nchars = doprnt (callint_message, callint_message_size,
297a0e21501a (callint_message, callint_message_size): New vars.
Richard M. Stallman <rms@gnu.org>
parents: 12582
diff changeset
492 prompt1, (char *)0,
20552
1a0cb8cd5615 (Fcall_interactively) <'d', 'r'>: Use set_marker_both.
Richard M. Stallman <rms@gnu.org>
parents: 19759
diff changeset
493 j - 1, (char **) argstrings + 1);
46006
6d5d3dd50de6 (Fcall_interactively): When checking to see if doprnt hit
Miles Bader <miles@gnu.org>
parents: 45546
diff changeset
494 if (nchars < callint_message_size - 1)
13142
297a0e21501a (callint_message, callint_message_size): New vars.
Richard M. Stallman <rms@gnu.org>
parents: 12582
diff changeset
495 break;
297a0e21501a (callint_message, callint_message_size): New vars.
Richard M. Stallman <rms@gnu.org>
parents: 12582
diff changeset
496 callint_message_size *= 2;
297a0e21501a (callint_message, callint_message_size): New vars.
Richard M. Stallman <rms@gnu.org>
parents: 12582
diff changeset
497 callint_message
297a0e21501a (callint_message, callint_message_size): New vars.
Richard M. Stallman <rms@gnu.org>
parents: 12582
diff changeset
498 = (char *) xrealloc (callint_message, callint_message_size);
297a0e21501a (callint_message, callint_message_size): New vars.
Richard M. Stallman <rms@gnu.org>
parents: 12582
diff changeset
499 }
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
500
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
501 switch (*tem)
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
502 {
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
503 case 'a': /* Symbol defined as a function */
13142
297a0e21501a (callint_message, callint_message_size): New vars.
Richard M. Stallman <rms@gnu.org>
parents: 12582
diff changeset
504 visargs[i] = Fcompleting_read (build_string (callint_message),
17736
8b30ef18c480 (Fcall_interactively): Pass new arg to
Richard M. Stallman <rms@gnu.org>
parents: 17024
diff changeset
505 Vobarray, Qfboundp, Qt,
19548
b275154db0cb (Finteractive): Document the code letter `M'.
Kenichi Handa <handa@m17n.org>
parents: 17958
diff changeset
506 Qnil, Qnil, Qnil, Qnil);
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
507 /* Passing args[i] directly stimulates compiler bug */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
508 teml = visargs[i];
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
509 args[i] = Fintern (teml, Qnil);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
510 break;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
511
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
512 case 'b': /* Name of existing buffer */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
513 args[i] = Fcurrent_buffer ();
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
514 if (EQ (selected_window, minibuf_window))
22244
41c88b9489c3 (Fcall_interactively): Pass new arg to Fother_buffer.
Richard M. Stallman <rms@gnu.org>
parents: 21721
diff changeset
515 args[i] = Fother_buffer (args[i], Qnil, Qnil);
13142
297a0e21501a (callint_message, callint_message_size): New vars.
Richard M. Stallman <rms@gnu.org>
parents: 12582
diff changeset
516 args[i] = Fread_buffer (build_string (callint_message), args[i], Qt);
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
517 break;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
518
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
519 case 'B': /* Name of buffer, possibly nonexistent */
13142
297a0e21501a (callint_message, callint_message_size): New vars.
Richard M. Stallman <rms@gnu.org>
parents: 12582
diff changeset
520 args[i] = Fread_buffer (build_string (callint_message),
22244
41c88b9489c3 (Fcall_interactively): Pass new arg to Fother_buffer.
Richard M. Stallman <rms@gnu.org>
parents: 21721
diff changeset
521 Fother_buffer (Fcurrent_buffer (), Qnil, Qnil),
1347
ac3a893b9bb9 (Fcall_interactively): Pass 2nd arg to Fother_buffer.
Richard M. Stallman <rms@gnu.org>
parents: 1115
diff changeset
522 Qnil);
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
523 break;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
524
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
525 case 'c': /* Character */
23934
93f40b344070 (Fcall_interactively) <'C'>: Give Fread_char Qnil
Kenichi Handa <handa@m17n.org>
parents: 23301
diff changeset
526 args[i] = Fread_char (build_string (callint_message), Qnil);
13754
8310d6085087 (Fcall_interactively): Don't log prompt strings.
Karl Heuer <kwzh@gnu.org>
parents: 13664
diff changeset
527 message1_nolog ((char *) 0);
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
528 /* Passing args[i] directly stimulates compiler bug */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
529 teml = args[i];
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
530 visargs[i] = Fchar_to_string (teml);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
531 break;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
532
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
533 case 'C': /* Command: symbol with interactive function */
13142
297a0e21501a (callint_message, callint_message_size): New vars.
Richard M. Stallman <rms@gnu.org>
parents: 12582
diff changeset
534 visargs[i] = Fcompleting_read (build_string (callint_message),
17736
8b30ef18c480 (Fcall_interactively): Pass new arg to
Richard M. Stallman <rms@gnu.org>
parents: 17024
diff changeset
535 Vobarray, Qcommandp,
19548
b275154db0cb (Finteractive): Document the code letter `M'.
Kenichi Handa <handa@m17n.org>
parents: 17958
diff changeset
536 Qt, Qnil, Qnil, Qnil, Qnil);
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
537 /* Passing args[i] directly stimulates compiler bug */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
538 teml = visargs[i];
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
539 args[i] = Fintern (teml, Qnil);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
540 break;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
541
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
542 case 'd': /* Value of point. Does not do I/O. */
20552
1a0cb8cd5615 (Fcall_interactively) <'d', 'r'>: Use set_marker_both.
Richard M. Stallman <rms@gnu.org>
parents: 19759
diff changeset
543 set_marker_both (point_marker, Qnil, PT, PT_BYTE);
10803
b8c4a1b7d484 (Fcall_interactively): Use markers temporarily in
Richard M. Stallman <rms@gnu.org>
parents: 10756
diff changeset
544 args[i] = point_marker;
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
545 /* visargs[i] = Qnil; */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
546 varies[i] = 1;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
547 break;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
548
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
549 case 'D': /* Directory name. */
13142
297a0e21501a (callint_message, callint_message_size): New vars.
Richard M. Stallman <rms@gnu.org>
parents: 12582
diff changeset
550 args[i] = Fread_file_name (build_string (callint_message), Qnil,
45546
ce01a38706ee (Fcall_interactively) <"D">: Supply Qfile_directory_p
Kim F. Storm <storm@cua.dk>
parents: 45394
diff changeset
551 current_buffer->directory, Qlambda, Qnil,
ce01a38706ee (Fcall_interactively) <"D">: Supply Qfile_directory_p
Kim F. Storm <storm@cua.dk>
parents: 45394
diff changeset
552 Qfile_directory_p);
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
553 break;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
554
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
555 case 'f': /* Existing file name. */
13142
297a0e21501a (callint_message, callint_message_size): New vars.
Richard M. Stallman <rms@gnu.org>
parents: 12582
diff changeset
556 args[i] = Fread_file_name (build_string (callint_message),
45546
ce01a38706ee (Fcall_interactively) <"D">: Supply Qfile_directory_p
Kim F. Storm <storm@cua.dk>
parents: 45394
diff changeset
557 Qnil, Qnil, Qlambda, Qnil, Qnil);
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
558 break;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
559
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
560 case 'F': /* Possibly nonexistent file name. */
13142
297a0e21501a (callint_message, callint_message_size): New vars.
Richard M. Stallman <rms@gnu.org>
parents: 12582
diff changeset
561 args[i] = Fread_file_name (build_string (callint_message),
45546
ce01a38706ee (Fcall_interactively) <"D">: Supply Qfile_directory_p
Kim F. Storm <storm@cua.dk>
parents: 45394
diff changeset
562 Qnil, Qnil, Qnil, Qnil, Qnil);
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
563 break;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
564
17024
6cfba7f41dca (doc-string of `interactive'): Describe new code
Karl Heuer <kwzh@gnu.org>
parents: 16363
diff changeset
565 case 'i': /* Ignore an argument -- Does not do I/O */
6cfba7f41dca (doc-string of `interactive'): Describe new code
Karl Heuer <kwzh@gnu.org>
parents: 16363
diff changeset
566 varies[i] = -1;
6cfba7f41dca (doc-string of `interactive'): Describe new code
Karl Heuer <kwzh@gnu.org>
parents: 16363
diff changeset
567 break;
6cfba7f41dca (doc-string of `interactive'): Describe new code
Karl Heuer <kwzh@gnu.org>
parents: 16363
diff changeset
568
10540
161014ddd3c5 (Fcall_interactively): Define K mostly like k.
Richard M. Stallman <rms@gnu.org>
parents: 10345
diff changeset
569 case 'k': /* Key sequence. */
16363
4097c59143f8 (Fcall_interactively): Bind cursor-in-echo-area to t for `k' and `K'.
Richard M. Stallman <rms@gnu.org>
parents: 16039
diff changeset
570 {
46293
1fb8f75062c6 Use macro SPECPDL_INDEX.
Juanma Barranquero <lekktu@gmail.com>
parents: 46006
diff changeset
571 int speccount1 = SPECPDL_INDEX ();
16363
4097c59143f8 (Fcall_interactively): Bind cursor-in-echo-area to t for `k' and `K'.
Richard M. Stallman <rms@gnu.org>
parents: 16039
diff changeset
572 specbind (Qcursor_in_echo_area, Qt);
4097c59143f8 (Fcall_interactively): Bind cursor-in-echo-area to t for `k' and `K'.
Richard M. Stallman <rms@gnu.org>
parents: 16039
diff changeset
573 args[i] = Fread_key_sequence (build_string (callint_message),
22932
0e0275920715 (Fcall_interactively): Pass new arg to Fread_key_sequence.
Richard M. Stallman <rms@gnu.org>
parents: 22485
diff changeset
574 Qnil, Qnil, Qnil, Qnil);
16363
4097c59143f8 (Fcall_interactively): Bind cursor-in-echo-area to t for `k' and `K'.
Richard M. Stallman <rms@gnu.org>
parents: 16039
diff changeset
575 unbind_to (speccount1, Qnil);
4097c59143f8 (Fcall_interactively): Bind cursor-in-echo-area to t for `k' and `K'.
Richard M. Stallman <rms@gnu.org>
parents: 16039
diff changeset
576 teml = args[i];
4097c59143f8 (Fcall_interactively): Bind cursor-in-echo-area to t for `k' and `K'.
Richard M. Stallman <rms@gnu.org>
parents: 16039
diff changeset
577 visargs[i] = Fkey_description (teml);
22485
b469abbc9984 (Fcall_interactively) <k, K>: If sequence ends in a down
Richard M. Stallman <rms@gnu.org>
parents: 22383
diff changeset
578
b469abbc9984 (Fcall_interactively) <k, K>: If sequence ends in a down
Richard M. Stallman <rms@gnu.org>
parents: 22383
diff changeset
579 /* If the key sequence ends with a down-event,
b469abbc9984 (Fcall_interactively) <k, K>: If sequence ends in a down
Richard M. Stallman <rms@gnu.org>
parents: 22383
diff changeset
580 discard the following up-event. */
b469abbc9984 (Fcall_interactively) <k, K>: If sequence ends in a down
Richard M. Stallman <rms@gnu.org>
parents: 22383
diff changeset
581 teml = Faref (args[i], make_number (XINT (Flength (args[i])) - 1));
b469abbc9984 (Fcall_interactively) <k, K>: If sequence ends in a down
Richard M. Stallman <rms@gnu.org>
parents: 22383
diff changeset
582 if (CONSP (teml))
25645
a14111a2a100 Use XCAR, XCDR, XFLOAT_DATA instead of explicit member access.
Ken Raeburn <raeburn@raeburn.org>
parents: 24911
diff changeset
583 teml = XCAR (teml);
22485
b469abbc9984 (Fcall_interactively) <k, K>: If sequence ends in a down
Richard M. Stallman <rms@gnu.org>
parents: 22383
diff changeset
584 if (SYMBOLP (teml))
b469abbc9984 (Fcall_interactively) <k, K>: If sequence ends in a down
Richard M. Stallman <rms@gnu.org>
parents: 22383
diff changeset
585 {
b469abbc9984 (Fcall_interactively) <k, K>: If sequence ends in a down
Richard M. Stallman <rms@gnu.org>
parents: 22383
diff changeset
586 Lisp_Object tem2;
b469abbc9984 (Fcall_interactively) <k, K>: If sequence ends in a down
Richard M. Stallman <rms@gnu.org>
parents: 22383
diff changeset
587
b469abbc9984 (Fcall_interactively) <k, K>: If sequence ends in a down
Richard M. Stallman <rms@gnu.org>
parents: 22383
diff changeset
588 teml = Fget (teml, intern ("event-symbol-elements"));
24911
f477c5bb74c6 (Fcall_interactively): Ignore first element of
Andreas Schwab <schwab@suse.de>
parents: 23934
diff changeset
589 /* Ignore first element, which is the base key. */
f477c5bb74c6 (Fcall_interactively): Ignore first element of
Andreas Schwab <schwab@suse.de>
parents: 23934
diff changeset
590 tem2 = Fmemq (intern ("down"), Fcdr (teml));
22485
b469abbc9984 (Fcall_interactively) <k, K>: If sequence ends in a down
Richard M. Stallman <rms@gnu.org>
parents: 22383
diff changeset
591 if (! NILP (tem2))
23064
32a7b4dc421e (Fcall_interactively): Pass new args to Fread_event
Richard M. Stallman <rms@gnu.org>
parents: 22932
diff changeset
592 Fread_event (Qnil, Qnil);
22485
b469abbc9984 (Fcall_interactively) <k, K>: If sequence ends in a down
Richard M. Stallman <rms@gnu.org>
parents: 22383
diff changeset
593 }
16363
4097c59143f8 (Fcall_interactively): Bind cursor-in-echo-area to t for `k' and `K'.
Richard M. Stallman <rms@gnu.org>
parents: 16039
diff changeset
594 }
10540
161014ddd3c5 (Fcall_interactively): Define K mostly like k.
Richard M. Stallman <rms@gnu.org>
parents: 10345
diff changeset
595 break;
161014ddd3c5 (Fcall_interactively): Define K mostly like k.
Richard M. Stallman <rms@gnu.org>
parents: 10345
diff changeset
596
161014ddd3c5 (Fcall_interactively): Define K mostly like k.
Richard M. Stallman <rms@gnu.org>
parents: 10345
diff changeset
597 case 'K': /* Key sequence to be defined. */
16363
4097c59143f8 (Fcall_interactively): Bind cursor-in-echo-area to t for `k' and `K'.
Richard M. Stallman <rms@gnu.org>
parents: 16039
diff changeset
598 {
46293
1fb8f75062c6 Use macro SPECPDL_INDEX.
Juanma Barranquero <lekktu@gmail.com>
parents: 46006
diff changeset
599 int speccount1 = SPECPDL_INDEX ();
16363
4097c59143f8 (Fcall_interactively): Bind cursor-in-echo-area to t for `k' and `K'.
Richard M. Stallman <rms@gnu.org>
parents: 16039
diff changeset
600 specbind (Qcursor_in_echo_area, Qt);
4097c59143f8 (Fcall_interactively): Bind cursor-in-echo-area to t for `k' and `K'.
Richard M. Stallman <rms@gnu.org>
parents: 16039
diff changeset
601 args[i] = Fread_key_sequence (build_string (callint_message),
22932
0e0275920715 (Fcall_interactively): Pass new arg to Fread_key_sequence.
Richard M. Stallman <rms@gnu.org>
parents: 22485
diff changeset
602 Qnil, Qt, Qnil, Qnil);
16363
4097c59143f8 (Fcall_interactively): Bind cursor-in-echo-area to t for `k' and `K'.
Richard M. Stallman <rms@gnu.org>
parents: 16039
diff changeset
603 teml = args[i];
4097c59143f8 (Fcall_interactively): Bind cursor-in-echo-area to t for `k' and `K'.
Richard M. Stallman <rms@gnu.org>
parents: 16039
diff changeset
604 visargs[i] = Fkey_description (teml);
4097c59143f8 (Fcall_interactively): Bind cursor-in-echo-area to t for `k' and `K'.
Richard M. Stallman <rms@gnu.org>
parents: 16039
diff changeset
605 unbind_to (speccount1, Qnil);
22485
b469abbc9984 (Fcall_interactively) <k, K>: If sequence ends in a down
Richard M. Stallman <rms@gnu.org>
parents: 22383
diff changeset
606
b469abbc9984 (Fcall_interactively) <k, K>: If sequence ends in a down
Richard M. Stallman <rms@gnu.org>
parents: 22383
diff changeset
607 /* If the key sequence ends with a down-event,
b469abbc9984 (Fcall_interactively) <k, K>: If sequence ends in a down
Richard M. Stallman <rms@gnu.org>
parents: 22383
diff changeset
608 discard the following up-event. */
b469abbc9984 (Fcall_interactively) <k, K>: If sequence ends in a down
Richard M. Stallman <rms@gnu.org>
parents: 22383
diff changeset
609 teml = Faref (args[i], make_number (XINT (Flength (args[i])) - 1));
b469abbc9984 (Fcall_interactively) <k, K>: If sequence ends in a down
Richard M. Stallman <rms@gnu.org>
parents: 22383
diff changeset
610 if (CONSP (teml))
25645
a14111a2a100 Use XCAR, XCDR, XFLOAT_DATA instead of explicit member access.
Ken Raeburn <raeburn@raeburn.org>
parents: 24911
diff changeset
611 teml = XCAR (teml);
22485
b469abbc9984 (Fcall_interactively) <k, K>: If sequence ends in a down
Richard M. Stallman <rms@gnu.org>
parents: 22383
diff changeset
612 if (SYMBOLP (teml))
b469abbc9984 (Fcall_interactively) <k, K>: If sequence ends in a down
Richard M. Stallman <rms@gnu.org>
parents: 22383
diff changeset
613 {
b469abbc9984 (Fcall_interactively) <k, K>: If sequence ends in a down
Richard M. Stallman <rms@gnu.org>
parents: 22383
diff changeset
614 Lisp_Object tem2;
b469abbc9984 (Fcall_interactively) <k, K>: If sequence ends in a down
Richard M. Stallman <rms@gnu.org>
parents: 22383
diff changeset
615
b469abbc9984 (Fcall_interactively) <k, K>: If sequence ends in a down
Richard M. Stallman <rms@gnu.org>
parents: 22383
diff changeset
616 teml = Fget (teml, intern ("event-symbol-elements"));
24911
f477c5bb74c6 (Fcall_interactively): Ignore first element of
Andreas Schwab <schwab@suse.de>
parents: 23934
diff changeset
617 /* Ignore first element, which is the base key. */
f477c5bb74c6 (Fcall_interactively): Ignore first element of
Andreas Schwab <schwab@suse.de>
parents: 23934
diff changeset
618 tem2 = Fmemq (intern ("down"), Fcdr (teml));
22485
b469abbc9984 (Fcall_interactively) <k, K>: If sequence ends in a down
Richard M. Stallman <rms@gnu.org>
parents: 22383
diff changeset
619 if (! NILP (tem2))
23064
32a7b4dc421e (Fcall_interactively): Pass new args to Fread_event
Richard M. Stallman <rms@gnu.org>
parents: 22932
diff changeset
620 Fread_event (Qnil, Qnil);
22485
b469abbc9984 (Fcall_interactively) <k, K>: If sequence ends in a down
Richard M. Stallman <rms@gnu.org>
parents: 22383
diff changeset
621 }
16363
4097c59143f8 (Fcall_interactively): Bind cursor-in-echo-area to t for `k' and `K'.
Richard M. Stallman <rms@gnu.org>
parents: 16039
diff changeset
622 }
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
623 break;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
624
1383
54028d2538a4 * callint.c (Fcall_interactively): Allow multiple 'e' specs.
Jim Blandy <jimb@redhat.com>
parents: 1347
diff changeset
625 case 'e': /* The invoking event. */
13308
99457b67e20c (Fcall_interactively): New arg KEYS.
Richard M. Stallman <rms@gnu.org>
parents: 13142
diff changeset
626 if (next_event >= key_count)
1383
54028d2538a4 * callint.c (Fcall_interactively): Allow multiple 'e' specs.
Jim Blandy <jimb@redhat.com>
parents: 1347
diff changeset
627 error ("%s must be bound to an event with parameters",
9145
dda75a4dbbfb (quotify_arg, Fcall_interactively, Fprefix_numeric_value): Use type test
Karl Heuer <kwzh@gnu.org>
parents: 9100
diff changeset
628 (SYMBOLP (function)
46370
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 46293
diff changeset
629 ? (char *) SDATA (SYMBOL_NAME (function))
1383
54028d2538a4 * callint.c (Fcall_interactively): Allow multiple 'e' specs.
Jim Blandy <jimb@redhat.com>
parents: 1347
diff changeset
630 : "command"));
13308
99457b67e20c (Fcall_interactively): New arg KEYS.
Richard M. Stallman <rms@gnu.org>
parents: 13142
diff changeset
631 args[i] = XVECTOR (keys)->contents[next_event++];
732
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 648
diff changeset
632 varies[i] = -1;
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1693
diff changeset
633
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1693
diff changeset
634 /* Find the next parameterized event. */
13308
99457b67e20c (Fcall_interactively): New arg KEYS.
Richard M. Stallman <rms@gnu.org>
parents: 13142
diff changeset
635 while (next_event < key_count
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1693
diff changeset
636 && ! (EVENT_HAS_PARAMETERS
13308
99457b67e20c (Fcall_interactively): New arg KEYS.
Richard M. Stallman <rms@gnu.org>
parents: 13142
diff changeset
637 (XVECTOR (keys)->contents[next_event])))
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1693
diff changeset
638 next_event++;
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1693
diff changeset
639
438
8b54ee2c82d6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 407
diff changeset
640 break;
8b54ee2c82d6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 407
diff changeset
641
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
642 case 'm': /* Value of mark. Does not do I/O. */
43039
531bd3a9e67a (check_mark): New arg to specify clearer error message.
Richard M. Stallman <rms@gnu.org>
parents: 42272
diff changeset
643 check_mark (0);
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
644 /* visargs[i] = Qnil; */
10803
b8c4a1b7d484 (Fcall_interactively): Use markers temporarily in
Richard M. Stallman <rms@gnu.org>
parents: 10756
diff changeset
645 args[i] = current_buffer->mark;
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
646 varies[i] = 2;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
647 break;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
648
19548
b275154db0cb (Finteractive): Document the code letter `M'.
Kenichi Handa <handa@m17n.org>
parents: 17958
diff changeset
649 case 'M': /* String read via minibuffer with
b275154db0cb (Finteractive): Document the code letter `M'.
Kenichi Handa <handa@m17n.org>
parents: 17958
diff changeset
650 inheriting the current input method. */
b275154db0cb (Finteractive): Document the code letter `M'.
Kenichi Handa <handa@m17n.org>
parents: 17958
diff changeset
651 args[i] = Fread_string (build_string (callint_message),
b275154db0cb (Finteractive): Document the code letter `M'.
Kenichi Handa <handa@m17n.org>
parents: 17958
diff changeset
652 Qnil, Qnil, Qnil, Qt);
b275154db0cb (Finteractive): Document the code letter `M'.
Kenichi Handa <handa@m17n.org>
parents: 17958
diff changeset
653 break;
b275154db0cb (Finteractive): Document the code letter `M'.
Kenichi Handa <handa@m17n.org>
parents: 17958
diff changeset
654
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
655 case 'N': /* Prefix arg, else number from minibuffer */
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 438
diff changeset
656 if (!NILP (prefix_arg))
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
657 goto have_prefix_arg;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
658 case 'n': /* Read number from minibuffer. */
15961
e26f5c2b75a6 (Fcall_interactively): For `N' and `n',
Richard M. Stallman <rms@gnu.org>
parents: 14847
diff changeset
659 {
e26f5c2b75a6 (Fcall_interactively): For `N' and `n',
Richard M. Stallman <rms@gnu.org>
parents: 14847
diff changeset
660 int first = 1;
e26f5c2b75a6 (Fcall_interactively): For `N' and `n',
Richard M. Stallman <rms@gnu.org>
parents: 14847
diff changeset
661 do
e26f5c2b75a6 (Fcall_interactively): For `N' and `n',
Richard M. Stallman <rms@gnu.org>
parents: 14847
diff changeset
662 {
e26f5c2b75a6 (Fcall_interactively): For `N' and `n',
Richard M. Stallman <rms@gnu.org>
parents: 14847
diff changeset
663 Lisp_Object tem;
e26f5c2b75a6 (Fcall_interactively): For `N' and `n',
Richard M. Stallman <rms@gnu.org>
parents: 14847
diff changeset
664 if (! first)
e26f5c2b75a6 (Fcall_interactively): For `N' and `n',
Richard M. Stallman <rms@gnu.org>
parents: 14847
diff changeset
665 {
e26f5c2b75a6 (Fcall_interactively): For `N' and `n',
Richard M. Stallman <rms@gnu.org>
parents: 14847
diff changeset
666 message ("Please enter a number.");
17958
31bda055d8fe (Fcall_interactively): Pass new arg to sit_for.
Richard M. Stallman <rms@gnu.org>
parents: 17876
diff changeset
667 sit_for (1, 0, 0, 0, 0);
15961
e26f5c2b75a6 (Fcall_interactively): For `N' and `n',
Richard M. Stallman <rms@gnu.org>
parents: 14847
diff changeset
668 }
e26f5c2b75a6 (Fcall_interactively): For `N' and `n',
Richard M. Stallman <rms@gnu.org>
parents: 14847
diff changeset
669 first = 0;
e26f5c2b75a6 (Fcall_interactively): For `N' and `n',
Richard M. Stallman <rms@gnu.org>
parents: 14847
diff changeset
670
e26f5c2b75a6 (Fcall_interactively): For `N' and `n',
Richard M. Stallman <rms@gnu.org>
parents: 14847
diff changeset
671 tem = Fread_from_minibuffer (build_string (callint_message),
19548
b275154db0cb (Finteractive): Document the code letter `M'.
Kenichi Handa <handa@m17n.org>
parents: 17958
diff changeset
672 Qnil, Qnil, Qnil, Qnil, Qnil,
b275154db0cb (Finteractive): Document the code letter `M'.
Kenichi Handa <handa@m17n.org>
parents: 17958
diff changeset
673 Qnil);
46370
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 46293
diff changeset
674 if (! STRINGP (tem) || SCHARS (tem) == 0)
15961
e26f5c2b75a6 (Fcall_interactively): For `N' and `n',
Richard M. Stallman <rms@gnu.org>
parents: 14847
diff changeset
675 args[i] = Qnil;
e26f5c2b75a6 (Fcall_interactively): For `N' and `n',
Richard M. Stallman <rms@gnu.org>
parents: 14847
diff changeset
676 else
e26f5c2b75a6 (Fcall_interactively): For `N' and `n',
Richard M. Stallman <rms@gnu.org>
parents: 14847
diff changeset
677 args[i] = Fread (tem);
e26f5c2b75a6 (Fcall_interactively): For `N' and `n',
Richard M. Stallman <rms@gnu.org>
parents: 14847
diff changeset
678 }
e26f5c2b75a6 (Fcall_interactively): For `N' and `n',
Richard M. Stallman <rms@gnu.org>
parents: 14847
diff changeset
679 while (! NUMBERP (args[i]));
e26f5c2b75a6 (Fcall_interactively): For `N' and `n',
Richard M. Stallman <rms@gnu.org>
parents: 14847
diff changeset
680 }
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
681 visargs[i] = last_minibuf_string;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
682 break;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
683
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
684 case 'P': /* Prefix arg in raw form. Does no I/O. */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
685 args[i] = prefix_arg;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
686 /* visargs[i] = Qnil; */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
687 varies[i] = -1;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
688 break;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
689
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
690 case 'p': /* Prefix arg converted to number. No I/O. */
13764
db7fb833ba03 (Fcall_interactively): Handle an arg of form (FCN ARGS...).
Karl Heuer <kwzh@gnu.org>
parents: 13754
diff changeset
691 have_prefix_arg:
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
692 args[i] = Fprefix_numeric_value (prefix_arg);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
693 /* visargs[i] = Qnil; */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
694 varies[i] = -1;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
695 break;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
696
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
697 case 'r': /* Region, point and mark as 2 args. */
43039
531bd3a9e67a (check_mark): New arg to specify clearer error message.
Richard M. Stallman <rms@gnu.org>
parents: 42272
diff changeset
698 check_mark (1);
20552
1a0cb8cd5615 (Fcall_interactively) <'d', 'r'>: Use set_marker_both.
Richard M. Stallman <rms@gnu.org>
parents: 19759
diff changeset
699 set_marker_both (point_marker, Qnil, PT, PT_BYTE);
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
700 /* visargs[i+1] = Qnil; */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
701 foo = marker_position (current_buffer->mark);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
702 /* visargs[i] = Qnil; */
16039
855c8d8ba0f0 Change all references from point to PT.
Karl Heuer <kwzh@gnu.org>
parents: 15961
diff changeset
703 args[i] = PT < foo ? point_marker : current_buffer->mark;
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
704 varies[i] = 3;
16039
855c8d8ba0f0 Change all references from point to PT.
Karl Heuer <kwzh@gnu.org>
parents: 15961
diff changeset
705 args[++i] = PT > foo ? point_marker : current_buffer->mark;
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
706 varies[i] = 4;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
707 break;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
708
19548
b275154db0cb (Finteractive): Document the code letter `M'.
Kenichi Handa <handa@m17n.org>
parents: 17958
diff changeset
709 case 's': /* String read via minibuffer without
b275154db0cb (Finteractive): Document the code letter `M'.
Kenichi Handa <handa@m17n.org>
parents: 17958
diff changeset
710 inheriting the current input method. */
17806
96eb40f791e4 (Fcall_interactively): Pass extra arg to Fread_string.
Richard M. Stallman <rms@gnu.org>
parents: 17736
diff changeset
711 args[i] = Fread_string (build_string (callint_message),
19548
b275154db0cb (Finteractive): Document the code letter `M'.
Kenichi Handa <handa@m17n.org>
parents: 17958
diff changeset
712 Qnil, Qnil, Qnil, Qnil);
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
713 break;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
714
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
715 case 'S': /* Any symbol. */
13142
297a0e21501a (callint_message, callint_message_size): New vars.
Richard M. Stallman <rms@gnu.org>
parents: 12582
diff changeset
716 visargs[i] = Fread_string (build_string (callint_message),
19548
b275154db0cb (Finteractive): Document the code letter `M'.
Kenichi Handa <handa@m17n.org>
parents: 17958
diff changeset
717 Qnil, Qnil, Qnil, Qnil);
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
718 /* Passing args[i] directly stimulates compiler bug */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
719 teml = visargs[i];
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
720 args[i] = Fintern (teml, Qnil);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
721 break;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
722
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
723 case 'v': /* Variable name: symbol that is
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
724 user-variable-p. */
17736
8b30ef18c480 (Fcall_interactively): Pass new arg to
Richard M. Stallman <rms@gnu.org>
parents: 17024
diff changeset
725 args[i] = Fread_variable (build_string (callint_message), Qnil);
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
726 visargs[i] = last_minibuf_string;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
727 break;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
728
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
729 case 'x': /* Lisp expression read but not evaluated */
13142
297a0e21501a (callint_message, callint_message_size): New vars.
Richard M. Stallman <rms@gnu.org>
parents: 12582
diff changeset
730 args[i] = Fread_minibuffer (build_string (callint_message), Qnil);
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
731 visargs[i] = last_minibuf_string;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
732 break;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
733
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
734 case 'X': /* Lisp expression read and evaluated */
13142
297a0e21501a (callint_message, callint_message_size): New vars.
Richard M. Stallman <rms@gnu.org>
parents: 12582
diff changeset
735 args[i] = Feval_minibuffer (build_string (callint_message), Qnil);
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
736 visargs[i] = last_minibuf_string;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
737 break;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
738
17024
6cfba7f41dca (doc-string of `interactive'): Describe new code
Karl Heuer <kwzh@gnu.org>
parents: 16363
diff changeset
739 case 'Z': /* Coding-system symbol, or ignore the
6cfba7f41dca (doc-string of `interactive'): Describe new code
Karl Heuer <kwzh@gnu.org>
parents: 16363
diff changeset
740 argument if no prefix */
6cfba7f41dca (doc-string of `interactive'): Describe new code
Karl Heuer <kwzh@gnu.org>
parents: 16363
diff changeset
741 if (NILP (prefix_arg))
6cfba7f41dca (doc-string of `interactive'): Describe new code
Karl Heuer <kwzh@gnu.org>
parents: 16363
diff changeset
742 {
6cfba7f41dca (doc-string of `interactive'): Describe new code
Karl Heuer <kwzh@gnu.org>
parents: 16363
diff changeset
743 args[i] = Qnil;
6cfba7f41dca (doc-string of `interactive'): Describe new code
Karl Heuer <kwzh@gnu.org>
parents: 16363
diff changeset
744 varies[i] = -1;
6cfba7f41dca (doc-string of `interactive'): Describe new code
Karl Heuer <kwzh@gnu.org>
parents: 16363
diff changeset
745 }
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48630
diff changeset
746 else
17024
6cfba7f41dca (doc-string of `interactive'): Describe new code
Karl Heuer <kwzh@gnu.org>
parents: 16363
diff changeset
747 {
6cfba7f41dca (doc-string of `interactive'): Describe new code
Karl Heuer <kwzh@gnu.org>
parents: 16363
diff changeset
748 args[i]
6cfba7f41dca (doc-string of `interactive'): Describe new code
Karl Heuer <kwzh@gnu.org>
parents: 16363
diff changeset
749 = Fread_non_nil_coding_system (build_string (callint_message));
6cfba7f41dca (doc-string of `interactive'): Describe new code
Karl Heuer <kwzh@gnu.org>
parents: 16363
diff changeset
750 visargs[i] = last_minibuf_string;
6cfba7f41dca (doc-string of `interactive'): Describe new code
Karl Heuer <kwzh@gnu.org>
parents: 16363
diff changeset
751 }
6cfba7f41dca (doc-string of `interactive'): Describe new code
Karl Heuer <kwzh@gnu.org>
parents: 16363
diff changeset
752 break;
6cfba7f41dca (doc-string of `interactive'): Describe new code
Karl Heuer <kwzh@gnu.org>
parents: 16363
diff changeset
753
6cfba7f41dca (doc-string of `interactive'): Describe new code
Karl Heuer <kwzh@gnu.org>
parents: 16363
diff changeset
754 case 'z': /* Coding-system symbol or nil */
19759
8dbed9d176fe (Fcall_interactively): Pass new arg to Fread_coding_system.
Richard M. Stallman <rms@gnu.org>
parents: 19548
diff changeset
755 args[i] = Fread_coding_system (build_string (callint_message), Qnil);
17024
6cfba7f41dca (doc-string of `interactive'): Describe new code
Karl Heuer <kwzh@gnu.org>
parents: 16363
diff changeset
756 visargs[i] = last_minibuf_string;
6cfba7f41dca (doc-string of `interactive'): Describe new code
Karl Heuer <kwzh@gnu.org>
parents: 16363
diff changeset
757 break;
6cfba7f41dca (doc-string of `interactive'): Describe new code
Karl Heuer <kwzh@gnu.org>
parents: 16363
diff changeset
758
11278
25b2219c415c (Fcall_interactively): `+' is reserved for user changes.
Richard M. Stallman <rms@gnu.org>
parents: 11009
diff changeset
759 /* We have a case for `+' so we get an error
25b2219c415c (Fcall_interactively): `+' is reserved for user changes.
Richard M. Stallman <rms@gnu.org>
parents: 11009
diff changeset
760 if anyone tries to define one here. */
25b2219c415c (Fcall_interactively): `+' is reserved for user changes.
Richard M. Stallman <rms@gnu.org>
parents: 11009
diff changeset
761 case '+':
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
762 default:
11278
25b2219c415c (Fcall_interactively): `+' is reserved for user changes.
Richard M. Stallman <rms@gnu.org>
parents: 11009
diff changeset
763 error ("Invalid control letter `%c' (%03o) in interactive calling string",
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
764 *tem, *tem);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
765 }
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
766
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
767 if (varies[i] == 0)
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
768 arg_from_tty = 1;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
769
9145
dda75a4dbbfb (quotify_arg, Fcall_interactively, Fprefix_numeric_value): Use type test
Karl Heuer <kwzh@gnu.org>
parents: 9100
diff changeset
770 if (NILP (visargs[i]) && STRINGP (args[i]))
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
771 visargs[i] = args[i];
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
772
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
773 tem = (unsigned char *) index (tem, '\n');
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
774 if (tem) tem++;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
775 else tem = (unsigned char *) "";
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
776 }
873
0abaf590e0ca entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 863
diff changeset
777 unbind_to (speccount, Qnil);
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
778
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
779 QUIT;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
780
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
781 args[0] = function;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
782
14062
16a05061fee3 (Fcall_interactively, Fprefix_numeric_value): Harmonize arguments with
Erik Naggum <erik@naggum.no>
parents: 13843
diff changeset
783 if (arg_from_tty || !NILP (record_flag))
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
784 {
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
785 visargs[0] = function;
438
8b54ee2c82d6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 407
diff changeset
786 for (i = 1; i < count + 1; i++)
10803
b8c4a1b7d484 (Fcall_interactively): Use markers temporarily in
Richard M. Stallman <rms@gnu.org>
parents: 10756
diff changeset
787 {
b8c4a1b7d484 (Fcall_interactively): Use markers temporarily in
Richard M. Stallman <rms@gnu.org>
parents: 10756
diff changeset
788 if (varies[i] > 0)
b8c4a1b7d484 (Fcall_interactively): Use markers temporarily in
Richard M. Stallman <rms@gnu.org>
parents: 10756
diff changeset
789 visargs[i] = Fcons (intern (callint_argfuns[varies[i]]), Qnil);
b8c4a1b7d484 (Fcall_interactively): Use markers temporarily in
Richard M. Stallman <rms@gnu.org>
parents: 10756
diff changeset
790 else
b8c4a1b7d484 (Fcall_interactively): Use markers temporarily in
Richard M. Stallman <rms@gnu.org>
parents: 10756
diff changeset
791 visargs[i] = quotify_arg (args[i]);
b8c4a1b7d484 (Fcall_interactively): Use markers temporarily in
Richard M. Stallman <rms@gnu.org>
parents: 10756
diff changeset
792 }
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
793 Vcommand_history = Fcons (Flist (count + 1, visargs),
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
794 Vcommand_history);
21721
46ffb5302c40 (Fcall_interactively): Truncate command-history here.
Richard M. Stallman <rms@gnu.org>
parents: 21514
diff changeset
795 /* Don't keep command history around forever. */
44405
0ed69545b5f3 (Fcall_interactively): Use INTEGERP instead of
Gerd Moellmann <gerd@gnu.org>
parents: 43039
diff changeset
796 if (INTEGERP (Vhistory_length) && XINT (Vhistory_length) > 0)
21721
46ffb5302c40 (Fcall_interactively): Truncate command-history here.
Richard M. Stallman <rms@gnu.org>
parents: 21514
diff changeset
797 {
46ffb5302c40 (Fcall_interactively): Truncate command-history here.
Richard M. Stallman <rms@gnu.org>
parents: 21514
diff changeset
798 teml = Fnthcdr (Vhistory_length, Vcommand_history);
46ffb5302c40 (Fcall_interactively): Truncate command-history here.
Richard M. Stallman <rms@gnu.org>
parents: 21514
diff changeset
799 if (CONSP (teml))
39973
579177964efa Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting
Ken Raeburn <raeburn@raeburn.org>
parents: 39945
diff changeset
800 XSETCDR (teml, Qnil);
21721
46ffb5302c40 (Fcall_interactively): Truncate command-history here.
Richard M. Stallman <rms@gnu.org>
parents: 21514
diff changeset
801 }
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
802 }
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
803
10803
b8c4a1b7d484 (Fcall_interactively): Use markers temporarily in
Richard M. Stallman <rms@gnu.org>
parents: 10756
diff changeset
804 /* If we used a marker to hold point, mark, or an end of the region,
b8c4a1b7d484 (Fcall_interactively): Use markers temporarily in
Richard M. Stallman <rms@gnu.org>
parents: 10756
diff changeset
805 temporarily, convert it to an integer now. */
10917
283f18021929 (Fcall_interactively): Fix Feb 22 change.
Richard M. Stallman <rms@gnu.org>
parents: 10904
diff changeset
806 for (i = 1; i <= count; i++)
10803
b8c4a1b7d484 (Fcall_interactively): Use markers temporarily in
Richard M. Stallman <rms@gnu.org>
parents: 10756
diff changeset
807 if (varies[i] >= 1 && varies[i] <= 4)
b8c4a1b7d484 (Fcall_interactively): Use markers temporarily in
Richard M. Stallman <rms@gnu.org>
parents: 10756
diff changeset
808 XSETINT (args[i], marker_position (args[i]));
b8c4a1b7d484 (Fcall_interactively): Use markers temporarily in
Richard M. Stallman <rms@gnu.org>
parents: 10756
diff changeset
809
48527
ba7cb9f8dfc3 (Fcall_interactively): If a command fails because
Richard M. Stallman <rms@gnu.org>
parents: 48150
diff changeset
810 if (record_then_fail)
ba7cb9f8dfc3 (Fcall_interactively): If a command fails because
Richard M. Stallman <rms@gnu.org>
parents: 48150
diff changeset
811 Fbarf_if_buffer_read_only ();
ba7cb9f8dfc3 (Fcall_interactively): If a command fails because
Richard M. Stallman <rms@gnu.org>
parents: 48150
diff changeset
812
11345
c4adea8f7543 (Fcall_interactively): Call single_kboard_state
Richard M. Stallman <rms@gnu.org>
parents: 11280
diff changeset
813 single_kboard_state ();
10819
4768cffd88e5 (Fcall_interactively): If the display hasn't already been locked by reading
Karl Heuer <kwzh@gnu.org>
parents: 10803
diff changeset
814
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
815 {
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
816 Lisp_Object val;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
817 specbind (Qcommand_debug_status, Qnil);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
818
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
819 val = Ffuncall (count + 1, args);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
820 UNGCPRO;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
821 return unbind_to (speccount, val);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
822 }
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48630
diff changeset
823 }
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
824
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
825 DEFUN ("prefix-numeric-value", Fprefix_numeric_value, Sprefix_numeric_value,
40103
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
826 1, 1, 0,
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
827 doc: /* Return numeric meaning of raw prefix argument RAW.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
828 A raw prefix argument is what you get from `(interactive "P")'.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
829 Its numeric meaning is what you would get from `(interactive "p")'. */)
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
830 (raw)
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
831 Lisp_Object raw;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
832 {
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
833 Lisp_Object val;
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48630
diff changeset
834
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 438
diff changeset
835 if (NILP (raw))
9298
6e3aea54fc01 (Fcall_interactively, Fprefix_numeric_value): Don't use XFASTINT as an lvalue.
Karl Heuer <kwzh@gnu.org>
parents: 9290
diff changeset
836 XSETFASTINT (val, 1);
819
5bbabfcef929 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 732
diff changeset
837 else if (EQ (raw, Qminus))
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
838 XSETINT (val, -1);
25645
a14111a2a100 Use XCAR, XCDR, XFLOAT_DATA instead of explicit member access.
Ken Raeburn <raeburn@raeburn.org>
parents: 24911
diff changeset
839 else if (CONSP (raw) && INTEGERP (XCAR (raw)))
a14111a2a100 Use XCAR, XCDR, XFLOAT_DATA instead of explicit member access.
Ken Raeburn <raeburn@raeburn.org>
parents: 24911
diff changeset
840 XSETINT (val, XINT (XCAR (raw)));
9145
dda75a4dbbfb (quotify_arg, Fcall_interactively, Fprefix_numeric_value): Use type test
Karl Heuer <kwzh@gnu.org>
parents: 9100
diff changeset
841 else if (INTEGERP (raw))
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
842 val = raw;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
843 else
9298
6e3aea54fc01 (Fcall_interactively, Fprefix_numeric_value): Don't use XFASTINT as an lvalue.
Karl Heuer <kwzh@gnu.org>
parents: 9290
diff changeset
844 XSETFASTINT (val, 1);
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
845
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
846 return val;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
847 }
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
848
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 21244
diff changeset
849 void
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
850 syms_of_callint ()
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
851 {
10803
b8c4a1b7d484 (Fcall_interactively): Use markers temporarily in
Richard M. Stallman <rms@gnu.org>
parents: 10756
diff changeset
852 point_marker = Fmake_marker ();
b8c4a1b7d484 (Fcall_interactively): Use markers temporarily in
Richard M. Stallman <rms@gnu.org>
parents: 10756
diff changeset
853 staticpro (&point_marker);
b8c4a1b7d484 (Fcall_interactively): Use markers temporarily in
Richard M. Stallman <rms@gnu.org>
parents: 10756
diff changeset
854
1498
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
855 preserved_fns = Fcons (intern ("region-beginning"),
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
856 Fcons (intern ("region-end"),
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
857 Fcons (intern ("point"),
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
858 Fcons (intern ("mark"), Qnil))));
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
859 staticpro (&preserved_fns);
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
860
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
861 Qlist = intern ("list");
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
862 staticpro (&Qlist);
13447
8c89b569cfa9 (syms_of_callint): Set up Qlet, Qletx, Qsave_excursion.
Richard M. Stallman <rms@gnu.org>
parents: 13308
diff changeset
863 Qlet = intern ("let");
8c89b569cfa9 (syms_of_callint): Set up Qlet, Qletx, Qsave_excursion.
Richard M. Stallman <rms@gnu.org>
parents: 13308
diff changeset
864 staticpro (&Qlet);
8c89b569cfa9 (syms_of_callint): Set up Qlet, Qletx, Qsave_excursion.
Richard M. Stallman <rms@gnu.org>
parents: 13308
diff changeset
865 Qletx = intern ("let*");
8c89b569cfa9 (syms_of_callint): Set up Qlet, Qletx, Qsave_excursion.
Richard M. Stallman <rms@gnu.org>
parents: 13308
diff changeset
866 staticpro (&Qletx);
8c89b569cfa9 (syms_of_callint): Set up Qlet, Qletx, Qsave_excursion.
Richard M. Stallman <rms@gnu.org>
parents: 13308
diff changeset
867 Qsave_excursion = intern ("save-excursion");
8c89b569cfa9 (syms_of_callint): Set up Qlet, Qletx, Qsave_excursion.
Richard M. Stallman <rms@gnu.org>
parents: 13308
diff changeset
868 staticpro (&Qsave_excursion);
48150
2b5f7e1254d1 (Fcall_interactively): New local filter_specs.
Richard M. Stallman <rms@gnu.org>
parents: 46370
diff changeset
869 Qprogn = intern ("progn");
2b5f7e1254d1 (Fcall_interactively): New local filter_specs.
Richard M. Stallman <rms@gnu.org>
parents: 46370
diff changeset
870 staticpro (&Qprogn);
1498
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
871
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
872 Qminus = intern ("-");
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
873 staticpro (&Qminus);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
874
9100
7dacd83e0fe0 (Qplus): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 8819
diff changeset
875 Qplus = intern ("+");
7dacd83e0fe0 (Qplus): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 8819
diff changeset
876 staticpro (&Qplus);
7dacd83e0fe0 (Qplus): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 8819
diff changeset
877
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
878 Qcall_interactively = intern ("call-interactively");
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
879 staticpro (&Qcall_interactively);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
880
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
881 Qcommand_debug_status = intern ("command-debug-status");
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
882 staticpro (&Qcommand_debug_status);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
883
873
0abaf590e0ca entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 863
diff changeset
884 Qenable_recursive_minibuffers = intern ("enable-recursive-minibuffers");
0abaf590e0ca entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 863
diff changeset
885 staticpro (&Qenable_recursive_minibuffers);
0abaf590e0ca entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 863
diff changeset
886
10279
89cf458ed188 (Vmouse_leave_buffer_hook, Qmouse_leave_buffer_hook): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 9342
diff changeset
887 Qmouse_leave_buffer_hook = intern ("mouse-leave-buffer-hook");
89cf458ed188 (Vmouse_leave_buffer_hook, Qmouse_leave_buffer_hook): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 9342
diff changeset
888 staticpro (&Qmouse_leave_buffer_hook);
89cf458ed188 (Vmouse_leave_buffer_hook, Qmouse_leave_buffer_hook): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 9342
diff changeset
889
13142
297a0e21501a (callint_message, callint_message_size): New vars.
Richard M. Stallman <rms@gnu.org>
parents: 12582
diff changeset
890 callint_message_size = 100;
297a0e21501a (callint_message, callint_message_size): New vars.
Richard M. Stallman <rms@gnu.org>
parents: 12582
diff changeset
891 callint_message = (char *) xmalloc (callint_message_size);
297a0e21501a (callint_message, callint_message_size): New vars.
Richard M. Stallman <rms@gnu.org>
parents: 12582
diff changeset
892
297a0e21501a (callint_message, callint_message_size): New vars.
Richard M. Stallman <rms@gnu.org>
parents: 12582
diff changeset
893
12117
3fa5b6e7ad4b (current_prefix_partial): Deleted.
Karl Heuer <kwzh@gnu.org>
parents: 11911
diff changeset
894 DEFVAR_KBOARD ("prefix-arg", Vprefix_arg,
40103
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
895 doc: /* The value of the prefix argument for the next editing command.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
896 It may be a number, or the symbol `-' for just a minus sign as arg,
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
897 or a list whose car is a number for just one or more C-u's
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
898 or nil if no argument has been specified.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
899
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
900 You cannot examine this variable to find the argument for this command
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
901 since it has been set to nil by the time you can look.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
902 Instead, you should use the variable `current-prefix-arg', although
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
903 normally commands can get this prefix argument with (interactive "P"). */);
10857
2b9faff73319 (Fcall_interactively, syms_of_callint, Vprefix_arg, Vcurrent_prefix_arg): Undo
Karl Heuer <kwzh@gnu.org>
parents: 10846
diff changeset
904
22383
9ef0fe84c5ed (syms_of_callint): Set up Lisp variable.
Richard M. Stallman <rms@gnu.org>
parents: 22244
diff changeset
905 DEFVAR_KBOARD ("last-prefix-arg", Vlast_prefix_arg,
40103
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
906 doc: /* The value of the prefix argument for the previous editing command.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
907 See `prefix-arg' for the meaning of the value. */);
22383
9ef0fe84c5ed (syms_of_callint): Set up Lisp variable.
Richard M. Stallman <rms@gnu.org>
parents: 22244
diff changeset
908
10857
2b9faff73319 (Fcall_interactively, syms_of_callint, Vprefix_arg, Vcurrent_prefix_arg): Undo
Karl Heuer <kwzh@gnu.org>
parents: 10846
diff changeset
909 DEFVAR_LISP ("current-prefix-arg", &Vcurrent_prefix_arg,
40103
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
910 doc: /* The value of the prefix argument for this editing command.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
911 It may be a number, or the symbol `-' for just a minus sign as arg,
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
912 or a list whose car is a number for just one or more C-u's
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
913 or nil if no argument has been specified.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
914 This is what `(interactive \"P\")' returns. */);
10857
2b9faff73319 (Fcall_interactively, syms_of_callint, Vprefix_arg, Vcurrent_prefix_arg): Undo
Karl Heuer <kwzh@gnu.org>
parents: 10846
diff changeset
915 Vcurrent_prefix_arg = Qnil;
2b9faff73319 (Fcall_interactively, syms_of_callint, Vprefix_arg, Vcurrent_prefix_arg): Undo
Karl Heuer <kwzh@gnu.org>
parents: 10846
diff changeset
916
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
917 DEFVAR_LISP ("command-history", &Vcommand_history,
40103
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
918 doc: /* List of recent commands that read arguments from terminal.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
919 Each command is represented as a form to evaluate. */);
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
920 Vcommand_history = Qnil;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
921
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
922 DEFVAR_LISP ("command-debug-status", &Vcommand_debug_status,
40103
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
923 doc: /* Debugging status of current interactive command.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
924 Bound each time `call-interactively' is called;
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
925 may be set by the debugger as a reminder for itself. */);
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
926 Vcommand_debug_status = Qnil;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
927
4046
79184227e7f9 (syms_of_callint): Fix DEFVAR_LISP for Vmark_even_if_inactive to use right
Roland McGrath <roland@gnu.org>
parents: 4039
diff changeset
928 DEFVAR_LISP ("mark-even-if-inactive", &Vmark_even_if_inactive,
40103
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
929 doc: /* *Non-nil means you can use the mark even when inactive.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
930 This option makes a difference in Transient Mark mode.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
931 When the option is non-nil, deactivation of the mark
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
932 turns off region highlighting, but commands that use the mark
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
933 behave as if the mark were still active. */);
3975
718280a1ba74 (Vmark_even_if_inactive): New var, with Lisp variable.
Richard M. Stallman <rms@gnu.org>
parents: 2048
diff changeset
934 Vmark_even_if_inactive = Qnil;
718280a1ba74 (Vmark_even_if_inactive): New var, with Lisp variable.
Richard M. Stallman <rms@gnu.org>
parents: 2048
diff changeset
935
10279
89cf458ed188 (Vmouse_leave_buffer_hook, Qmouse_leave_buffer_hook): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 9342
diff changeset
936 DEFVAR_LISP ("mouse-leave-buffer-hook", &Vmouse_leave_buffer_hook,
40103
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
937 doc: /* Hook to run when about to switch windows with a mouse command.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
938 Its purpose is to give temporary modes such as Isearch mode
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
939 a way to turn themselves off when a mouse command switches windows. */);
10279
89cf458ed188 (Vmouse_leave_buffer_hook, Qmouse_leave_buffer_hook): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 9342
diff changeset
940 Vmouse_leave_buffer_hook = Qnil;
89cf458ed188 (Vmouse_leave_buffer_hook, Qmouse_leave_buffer_hook): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 9342
diff changeset
941
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
942 defsubr (&Sinteractive);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
943 defsubr (&Scall_interactively);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
944 defsubr (&Sprefix_numeric_value);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
945 }