annotate src/callint.c @ 68310:7badc603f7ab

(File Aliases): Don't claim that usually separate buffers are created for two file names that name the same data. Mention additional situations where different names mean the same file on disk.
author Eli Zaretskii <eliz@gnu.org>
date Sat, 21 Jan 2006 11:39:05 +0000
parents a0d1312ede66
children 3bd95f4f2941 0b75ace4f7ad 2d92f5c9d6ae
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.
64770
a0d1312ede66 Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 64084
diff changeset
2 Copyright (C) 1985, 1986, 1993, 1994, 1995, 1997, 2000, 2002, 2003,
a0d1312ede66 Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 64084
diff changeset
3 2004, 2005 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
64084
a8fa7c632ee4 Update FSF's address.
Lute Kamstra <lute@gnu.org>
parents: 60681
diff changeset
19 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
a8fa7c632ee4 Update FSF's address.
Lute Kamstra <lute@gnu.org>
parents: 60681
diff changeset
20 Boston, MA 02110-1301, 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;
52374
1b48f538540b (Fcall_interactively): Save and restore Vthis_command, Vthis_original_command,
Richard M. Stallman <rms@gnu.org>
parents: 51048
diff changeset
44 extern Lisp_Object Vthis_original_command, real_this_command;
21721
46ffb5302c40 (Fcall_interactively): Truncate command-history here.
Richard M. Stallman <rms@gnu.org>
parents: 21514
diff changeset
45
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
46 Lisp_Object Vcommand_debug_status, Qcommand_debug_status;
873
0abaf590e0ca entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 863
diff changeset
47 Lisp_Object Qenable_recursive_minibuffers;
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
48
3975
718280a1ba74 (Vmark_even_if_inactive): New var, with Lisp variable.
Richard M. Stallman <rms@gnu.org>
parents: 2048
diff changeset
49 /* 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
50 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
51 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
52
10279
89cf458ed188 (Vmouse_leave_buffer_hook, Qmouse_leave_buffer_hook): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 9342
diff changeset
53 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
54
49932
2f5cdffaaa04 (fix_command): New subroutine, from Fcall_interactively.
Richard M. Stallman <rms@gnu.org>
parents: 49600
diff changeset
55 Lisp_Object Qlist, Qlet, Qletx, Qsave_excursion, Qprogn, Qif, Qwhen;
10803
b8c4a1b7d484 (Fcall_interactively): Use markers temporarily in
Richard M. Stallman <rms@gnu.org>
parents: 10756
diff changeset
56 static Lisp_Object preserved_fns;
b8c4a1b7d484 (Fcall_interactively): Use markers temporarily in
Richard M. Stallman <rms@gnu.org>
parents: 10756
diff changeset
57
b8c4a1b7d484 (Fcall_interactively): Use markers temporarily in
Richard M. Stallman <rms@gnu.org>
parents: 10756
diff changeset
58 /* 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
59 static Lisp_Object point_marker;
1498
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
60
13142
297a0e21501a (callint_message, callint_message_size): New vars.
Richard M. Stallman <rms@gnu.org>
parents: 12582
diff changeset
61 /* 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
62 static char *callint_message;
297a0e21501a (callint_message, callint_message_size): New vars.
Richard M. Stallman <rms@gnu.org>
parents: 12582
diff changeset
63
297a0e21501a (callint_message, callint_message_size): New vars.
Richard M. Stallman <rms@gnu.org>
parents: 12582
diff changeset
64 /* Allocated length of that buffer. */
297a0e21501a (callint_message, callint_message_size): New vars.
Richard M. Stallman <rms@gnu.org>
parents: 12582
diff changeset
65 static int callint_message_size;
10940
40a1812dcbad (current_prefix_partial): New var.
Karl Heuer <kwzh@gnu.org>
parents: 10917
diff changeset
66
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
67 /* ARGSUSED */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
68 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
69 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
70 For example, write
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
71 (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
72 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
73 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
74 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
75 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
76 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
77
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
78 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
79 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
80 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
81 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
82 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
83 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
84 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
85 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
86 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
87
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
88 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
89 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
90 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
91 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
92 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
93 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
94 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
95 D -- Directory name.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
96 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
97 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
98 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
99 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
100 F -- Possibly nonexistent file name.
60681
046708b92d49 (Finteractive): Document G option.
Richard M. Stallman <rms@gnu.org>
parents: 58380
diff changeset
101 G -- Possibly nonexistent file name, defaulting to just directory name.
40103
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
102 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
103 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
104 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
105 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
106 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
107 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
108 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
109 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
110 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
111 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
112 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
113 S -- Any symbol.
57707
e092a2ece99b (Fcall_interactively): Add 'U' code to get the up-event discarded by a
Kim F. Storm <storm@cua.dk>
parents: 56571
diff changeset
114 U -- Mouse up event discarded by a previous k or K argument.
40103
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
115 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
116 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
117 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
118 z -- Coding system.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
119 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
120 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
121 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
122 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
123 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
124 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
125 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
126 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
127 processed in the order that they appear.
184e0d756547 (Finteractive): Add usage to doc-string.
Pavel Janík <Pavel@Janik.cz>
parents: 40103
diff changeset
128 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
129 (args)
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
130 Lisp_Object args;
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 return Qnil;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
133 }
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
134
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
135 /* Quotify EXP: if EXP is constant, return it.
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
136 If EXP is not constant, return (quote EXP). */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
137 Lisp_Object
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
138 quotify_arg (exp)
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
139 register Lisp_Object exp;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
140 {
9145
dda75a4dbbfb (quotify_arg, Fcall_interactively, Fprefix_numeric_value): Use type test
Karl Heuer <kwzh@gnu.org>
parents: 9100
diff changeset
141 if (!INTEGERP (exp) && !STRINGP (exp)
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 438
diff changeset
142 && !NILP (exp) && !EQ (exp, Qt))
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
143 return Fcons (Qquote, Fcons (exp, Qnil));
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 return exp;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
146 }
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
147
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
148 /* Modify EXP by quotifying each element (except the first). */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
149 Lisp_Object
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
150 quotify_args (exp)
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
151 Lisp_Object exp;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
152 {
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
153 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
154 Lisp_Object next;
d39ec0a27081 more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents: 25645
diff changeset
155 for (tail = exp; CONSP (tail); tail = next)
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
156 {
26164
d39ec0a27081 more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents: 25645
diff changeset
157 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
158 XSETCAR (tail, quotify_arg (XCAR (tail)));
407
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 return exp;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
161 }
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 char *callint_argfuns[]
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
164 = {"", "point", "mark", "region-beginning", "region-end"};
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
165
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
166 static void
43039
531bd3a9e67a (check_mark): New arg to specify clearer error message.
Richard M. Stallman <rms@gnu.org>
parents: 42272
diff changeset
167 check_mark (for_region)
531bd3a9e67a (check_mark): New arg to specify clearer error message.
Richard M. Stallman <rms@gnu.org>
parents: 42272
diff changeset
168 int for_region;
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
169 {
6494
00475922df29 (check_mark, Fcall_interactively): Use assignment, not initialization.
Karl Heuer <kwzh@gnu.org>
parents: 6271
diff changeset
170 Lisp_Object tem;
00475922df29 (check_mark, Fcall_interactively): Use assignment, not initialization.
Karl Heuer <kwzh@gnu.org>
parents: 6271
diff changeset
171 tem = Fmarker_buffer (current_buffer->mark);
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 438
diff changeset
172 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
173 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
174 : "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
175 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
176 && 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
177 Fsignal (Qmark_inactive, Qnil);
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
178 }
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
179
50469
0bdc2fd19631 Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 49953
diff changeset
180 /* If the list of args INPUT was produced with an explicit call to
0bdc2fd19631 Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 49953
diff changeset
181 `list', look for elements that were computed with
0bdc2fd19631 Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 49953
diff changeset
182 (region-beginning) or (region-end), and put those expressions into
0bdc2fd19631 Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 49953
diff changeset
183 VALUES instead of the present values.
0bdc2fd19631 Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 49953
diff changeset
184
0bdc2fd19631 Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 49953
diff changeset
185 This function doesn't return a value because it modifies elements
0bdc2fd19631 Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 49953
diff changeset
186 of VALUES to do its job. */
0bdc2fd19631 Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 49953
diff changeset
187
49953
c57ce680648d (fix_command): Declare as static void and move before Fcall_interactively.
Juanma Barranquero <lekktu@gmail.com>
parents: 49932
diff changeset
188 static void
c57ce680648d (fix_command): Declare as static void and move before Fcall_interactively.
Juanma Barranquero <lekktu@gmail.com>
parents: 49932
diff changeset
189 fix_command (input, values)
c57ce680648d (fix_command): Declare as static void and move before Fcall_interactively.
Juanma Barranquero <lekktu@gmail.com>
parents: 49932
diff changeset
190 Lisp_Object input, values;
c57ce680648d (fix_command): Declare as static void and move before Fcall_interactively.
Juanma Barranquero <lekktu@gmail.com>
parents: 49932
diff changeset
191 {
c57ce680648d (fix_command): Declare as static void and move before Fcall_interactively.
Juanma Barranquero <lekktu@gmail.com>
parents: 49932
diff changeset
192 if (CONSP (input))
c57ce680648d (fix_command): Declare as static void and move before Fcall_interactively.
Juanma Barranquero <lekktu@gmail.com>
parents: 49932
diff changeset
193 {
c57ce680648d (fix_command): Declare as static void and move before Fcall_interactively.
Juanma Barranquero <lekktu@gmail.com>
parents: 49932
diff changeset
194 Lisp_Object car;
c57ce680648d (fix_command): Declare as static void and move before Fcall_interactively.
Juanma Barranquero <lekktu@gmail.com>
parents: 49932
diff changeset
195
c57ce680648d (fix_command): Declare as static void and move before Fcall_interactively.
Juanma Barranquero <lekktu@gmail.com>
parents: 49932
diff changeset
196 car = XCAR (input);
c57ce680648d (fix_command): Declare as static void and move before Fcall_interactively.
Juanma Barranquero <lekktu@gmail.com>
parents: 49932
diff changeset
197 /* Skip through certain special forms. */
c57ce680648d (fix_command): Declare as static void and move before Fcall_interactively.
Juanma Barranquero <lekktu@gmail.com>
parents: 49932
diff changeset
198 while (EQ (car, Qlet) || EQ (car, Qletx)
c57ce680648d (fix_command): Declare as static void and move before Fcall_interactively.
Juanma Barranquero <lekktu@gmail.com>
parents: 49932
diff changeset
199 || EQ (car, Qsave_excursion)
c57ce680648d (fix_command): Declare as static void and move before Fcall_interactively.
Juanma Barranquero <lekktu@gmail.com>
parents: 49932
diff changeset
200 || EQ (car, Qprogn))
c57ce680648d (fix_command): Declare as static void and move before Fcall_interactively.
Juanma Barranquero <lekktu@gmail.com>
parents: 49932
diff changeset
201 {
c57ce680648d (fix_command): Declare as static void and move before Fcall_interactively.
Juanma Barranquero <lekktu@gmail.com>
parents: 49932
diff changeset
202 while (CONSP (XCDR (input)))
c57ce680648d (fix_command): Declare as static void and move before Fcall_interactively.
Juanma Barranquero <lekktu@gmail.com>
parents: 49932
diff changeset
203 input = XCDR (input);
c57ce680648d (fix_command): Declare as static void and move before Fcall_interactively.
Juanma Barranquero <lekktu@gmail.com>
parents: 49932
diff changeset
204 input = XCAR (input);
c57ce680648d (fix_command): Declare as static void and move before Fcall_interactively.
Juanma Barranquero <lekktu@gmail.com>
parents: 49932
diff changeset
205 if (!CONSP (input))
c57ce680648d (fix_command): Declare as static void and move before Fcall_interactively.
Juanma Barranquero <lekktu@gmail.com>
parents: 49932
diff changeset
206 break;
c57ce680648d (fix_command): Declare as static void and move before Fcall_interactively.
Juanma Barranquero <lekktu@gmail.com>
parents: 49932
diff changeset
207 car = XCAR (input);
c57ce680648d (fix_command): Declare as static void and move before Fcall_interactively.
Juanma Barranquero <lekktu@gmail.com>
parents: 49932
diff changeset
208 }
c57ce680648d (fix_command): Declare as static void and move before Fcall_interactively.
Juanma Barranquero <lekktu@gmail.com>
parents: 49932
diff changeset
209 if (EQ (car, Qlist))
c57ce680648d (fix_command): Declare as static void and move before Fcall_interactively.
Juanma Barranquero <lekktu@gmail.com>
parents: 49932
diff changeset
210 {
c57ce680648d (fix_command): Declare as static void and move before Fcall_interactively.
Juanma Barranquero <lekktu@gmail.com>
parents: 49932
diff changeset
211 Lisp_Object intail, valtail;
c57ce680648d (fix_command): Declare as static void and move before Fcall_interactively.
Juanma Barranquero <lekktu@gmail.com>
parents: 49932
diff changeset
212 for (intail = Fcdr (input), valtail = values;
c57ce680648d (fix_command): Declare as static void and move before Fcall_interactively.
Juanma Barranquero <lekktu@gmail.com>
parents: 49932
diff changeset
213 CONSP (valtail);
54891
6258852d3607 (fix_command): Use XDCR.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54641
diff changeset
214 intail = Fcdr (intail), valtail = XCDR (valtail))
49953
c57ce680648d (fix_command): Declare as static void and move before Fcall_interactively.
Juanma Barranquero <lekktu@gmail.com>
parents: 49932
diff changeset
215 {
c57ce680648d (fix_command): Declare as static void and move before Fcall_interactively.
Juanma Barranquero <lekktu@gmail.com>
parents: 49932
diff changeset
216 Lisp_Object elt;
c57ce680648d (fix_command): Declare as static void and move before Fcall_interactively.
Juanma Barranquero <lekktu@gmail.com>
parents: 49932
diff changeset
217 elt = Fcar (intail);
c57ce680648d (fix_command): Declare as static void and move before Fcall_interactively.
Juanma Barranquero <lekktu@gmail.com>
parents: 49932
diff changeset
218 if (CONSP (elt))
c57ce680648d (fix_command): Declare as static void and move before Fcall_interactively.
Juanma Barranquero <lekktu@gmail.com>
parents: 49932
diff changeset
219 {
c57ce680648d (fix_command): Declare as static void and move before Fcall_interactively.
Juanma Barranquero <lekktu@gmail.com>
parents: 49932
diff changeset
220 Lisp_Object presflag, carelt;
c57ce680648d (fix_command): Declare as static void and move before Fcall_interactively.
Juanma Barranquero <lekktu@gmail.com>
parents: 49932
diff changeset
221 carelt = Fcar (elt);
c57ce680648d (fix_command): Declare as static void and move before Fcall_interactively.
Juanma Barranquero <lekktu@gmail.com>
parents: 49932
diff changeset
222 /* If it is (if X Y), look at Y. */
c57ce680648d (fix_command): Declare as static void and move before Fcall_interactively.
Juanma Barranquero <lekktu@gmail.com>
parents: 49932
diff changeset
223 if (EQ (carelt, Qif)
c57ce680648d (fix_command): Declare as static void and move before Fcall_interactively.
Juanma Barranquero <lekktu@gmail.com>
parents: 49932
diff changeset
224 && EQ (Fnthcdr (make_number (3), elt), Qnil))
c57ce680648d (fix_command): Declare as static void and move before Fcall_interactively.
Juanma Barranquero <lekktu@gmail.com>
parents: 49932
diff changeset
225 elt = Fnth (make_number (2), elt);
c57ce680648d (fix_command): Declare as static void and move before Fcall_interactively.
Juanma Barranquero <lekktu@gmail.com>
parents: 49932
diff changeset
226 /* If it is (when ... Y), look at Y. */
c57ce680648d (fix_command): Declare as static void and move before Fcall_interactively.
Juanma Barranquero <lekktu@gmail.com>
parents: 49932
diff changeset
227 else if (EQ (carelt, Qwhen))
c57ce680648d (fix_command): Declare as static void and move before Fcall_interactively.
Juanma Barranquero <lekktu@gmail.com>
parents: 49932
diff changeset
228 {
c57ce680648d (fix_command): Declare as static void and move before Fcall_interactively.
Juanma Barranquero <lekktu@gmail.com>
parents: 49932
diff changeset
229 while (CONSP (XCDR (elt)))
c57ce680648d (fix_command): Declare as static void and move before Fcall_interactively.
Juanma Barranquero <lekktu@gmail.com>
parents: 49932
diff changeset
230 elt = XCDR (elt);
c57ce680648d (fix_command): Declare as static void and move before Fcall_interactively.
Juanma Barranquero <lekktu@gmail.com>
parents: 49932
diff changeset
231 elt = Fcar (elt);
c57ce680648d (fix_command): Declare as static void and move before Fcall_interactively.
Juanma Barranquero <lekktu@gmail.com>
parents: 49932
diff changeset
232 }
c57ce680648d (fix_command): Declare as static void and move before Fcall_interactively.
Juanma Barranquero <lekktu@gmail.com>
parents: 49932
diff changeset
233
c57ce680648d (fix_command): Declare as static void and move before Fcall_interactively.
Juanma Barranquero <lekktu@gmail.com>
parents: 49932
diff changeset
234 /* If the function call we're looking at
c57ce680648d (fix_command): Declare as static void and move before Fcall_interactively.
Juanma Barranquero <lekktu@gmail.com>
parents: 49932
diff changeset
235 is a special preserved one, copy the
c57ce680648d (fix_command): Declare as static void and move before Fcall_interactively.
Juanma Barranquero <lekktu@gmail.com>
parents: 49932
diff changeset
236 whole expression for this argument. */
c57ce680648d (fix_command): Declare as static void and move before Fcall_interactively.
Juanma Barranquero <lekktu@gmail.com>
parents: 49932
diff changeset
237 if (CONSP (elt))
c57ce680648d (fix_command): Declare as static void and move before Fcall_interactively.
Juanma Barranquero <lekktu@gmail.com>
parents: 49932
diff changeset
238 {
c57ce680648d (fix_command): Declare as static void and move before Fcall_interactively.
Juanma Barranquero <lekktu@gmail.com>
parents: 49932
diff changeset
239 presflag = Fmemq (Fcar (elt), preserved_fns);
c57ce680648d (fix_command): Declare as static void and move before Fcall_interactively.
Juanma Barranquero <lekktu@gmail.com>
parents: 49932
diff changeset
240 if (!NILP (presflag))
c57ce680648d (fix_command): Declare as static void and move before Fcall_interactively.
Juanma Barranquero <lekktu@gmail.com>
parents: 49932
diff changeset
241 Fsetcar (valtail, Fcar (intail));
c57ce680648d (fix_command): Declare as static void and move before Fcall_interactively.
Juanma Barranquero <lekktu@gmail.com>
parents: 49932
diff changeset
242 }
c57ce680648d (fix_command): Declare as static void and move before Fcall_interactively.
Juanma Barranquero <lekktu@gmail.com>
parents: 49932
diff changeset
243 }
c57ce680648d (fix_command): Declare as static void and move before Fcall_interactively.
Juanma Barranquero <lekktu@gmail.com>
parents: 49932
diff changeset
244 }
c57ce680648d (fix_command): Declare as static void and move before Fcall_interactively.
Juanma Barranquero <lekktu@gmail.com>
parents: 49932
diff changeset
245 }
c57ce680648d (fix_command): Declare as static void and move before Fcall_interactively.
Juanma Barranquero <lekktu@gmail.com>
parents: 49932
diff changeset
246 }
c57ce680648d (fix_command): Declare as static void and move before Fcall_interactively.
Juanma Barranquero <lekktu@gmail.com>
parents: 49932
diff changeset
247 }
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
248
13308
99457b67e20c (Fcall_interactively): New arg KEYS.
Richard M. Stallman <rms@gnu.org>
parents: 13142
diff changeset
249 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
250 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
251 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
252 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
253 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
254 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
255 See `interactive'.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
256
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
257 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
258 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
259 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
260 Optional third arg KEYS, if given, specifies the sequence of events to
56571
bf7d2966022c (Fcall_interactively): Doc fix.
Luc Teirlinck <teirllm@auburn.edu>
parents: 54927
diff changeset
261 supply if the command inquires which events were used to invoke it.
bf7d2966022c (Fcall_interactively): Doc fix.
Luc Teirlinck <teirllm@auburn.edu>
parents: 54927
diff changeset
262 If KEYS is omitted or nil, the return value of `this-command-keys' is used. */)
40103
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
263 (function, record_flag, keys)
14062
16a05061fee3 (Fcall_interactively, Fprefix_numeric_value): Harmonize arguments with
Erik Naggum <erik@naggum.no>
parents: 13843
diff changeset
264 Lisp_Object function, record_flag, keys;
407
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 Lisp_Object *args, *visargs;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
267 unsigned char **argstrings;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
268 Lisp_Object fun;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
269 Lisp_Object specs;
48150
2b5f7e1254d1 (Fcall_interactively): New local filter_specs.
Richard M. Stallman <rms@gnu.org>
parents: 46370
diff changeset
270 Lisp_Object filter_specs;
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
271 Lisp_Object teml;
57707
e092a2ece99b (Fcall_interactively): Add 'U' code to get the up-event discarded by a
Kim F. Storm <storm@cua.dk>
parents: 56571
diff changeset
272 Lisp_Object up_event;
873
0abaf590e0ca entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 863
diff changeset
273 Lisp_Object enable;
46293
1fb8f75062c6 Use macro SPECPDL_INDEX.
Juanma Barranquero <lekktu@gmail.com>
parents: 46006
diff changeset
274 int speccount = SPECPDL_INDEX ();
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
275
1383
54028d2538a4 * callint.c (Fcall_interactively): Allow multiple 'e' specs.
Jim Blandy <jimb@redhat.com>
parents: 1347
diff changeset
276 /* 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
277 the 'e' interactive code. */
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1693
diff changeset
278 int next_event;
1383
54028d2538a4 * callint.c (Fcall_interactively): Allow multiple 'e' specs.
Jim Blandy <jimb@redhat.com>
parents: 1347
diff changeset
279
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
280 Lisp_Object prefix_arg;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
281 unsigned char *string;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
282 unsigned char *tem;
438
8b54ee2c82d6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 407
diff changeset
283
8b54ee2c82d6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 407
diff changeset
284 /* 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
285 in this call quoted in the command history. It should be
8b54ee2c82d6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 407
diff changeset
286 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
287 int *varies;
438
8b54ee2c82d6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 407
diff changeset
288
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
289 register int i, j;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
290 int count, foo;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
291 char prompt1[100];
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
292 char *tem1;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
293 int arg_from_tty = 0;
57707
e092a2ece99b (Fcall_interactively): Add 'U' code to get the up-event discarded by a
Kim F. Storm <storm@cua.dk>
parents: 56571
diff changeset
294 struct gcpro gcpro1, gcpro2, gcpro3, gcpro4, gcpro5;
13308
99457b67e20c (Fcall_interactively): New arg KEYS.
Richard M. Stallman <rms@gnu.org>
parents: 13142
diff changeset
295 int key_count;
48527
ba7cb9f8dfc3 (Fcall_interactively): If a command fails because
Richard M. Stallman <rms@gnu.org>
parents: 48150
diff changeset
296 int record_then_fail = 0;
13308
99457b67e20c (Fcall_interactively): New arg KEYS.
Richard M. Stallman <rms@gnu.org>
parents: 13142
diff changeset
297
52374
1b48f538540b (Fcall_interactively): Save and restore Vthis_command, Vthis_original_command,
Richard M. Stallman <rms@gnu.org>
parents: 51048
diff changeset
298 Lisp_Object save_this_command, save_last_command;
1b48f538540b (Fcall_interactively): Save and restore Vthis_command, Vthis_original_command,
Richard M. Stallman <rms@gnu.org>
parents: 51048
diff changeset
299 Lisp_Object save_this_original_command, save_real_this_command;
1b48f538540b (Fcall_interactively): Save and restore Vthis_command, Vthis_original_command,
Richard M. Stallman <rms@gnu.org>
parents: 51048
diff changeset
300
1b48f538540b (Fcall_interactively): Save and restore Vthis_command, Vthis_original_command,
Richard M. Stallman <rms@gnu.org>
parents: 51048
diff changeset
301 save_this_command = Vthis_command;
1b48f538540b (Fcall_interactively): Save and restore Vthis_command, Vthis_original_command,
Richard M. Stallman <rms@gnu.org>
parents: 51048
diff changeset
302 save_this_original_command = Vthis_original_command;
1b48f538540b (Fcall_interactively): Save and restore Vthis_command, Vthis_original_command,
Richard M. Stallman <rms@gnu.org>
parents: 51048
diff changeset
303 save_real_this_command = real_this_command;
1b48f538540b (Fcall_interactively): Save and restore Vthis_command, Vthis_original_command,
Richard M. Stallman <rms@gnu.org>
parents: 51048
diff changeset
304 save_last_command = current_kboard->Vlast_command;
1b48f538540b (Fcall_interactively): Save and restore Vthis_command, Vthis_original_command,
Richard M. Stallman <rms@gnu.org>
parents: 51048
diff changeset
305
13308
99457b67e20c (Fcall_interactively): New arg KEYS.
Richard M. Stallman <rms@gnu.org>
parents: 13142
diff changeset
306 if (NILP (keys))
99457b67e20c (Fcall_interactively): New arg KEYS.
Richard M. Stallman <rms@gnu.org>
parents: 13142
diff changeset
307 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
308 else
99457b67e20c (Fcall_interactively): New arg KEYS.
Richard M. Stallman <rms@gnu.org>
parents: 13142
diff changeset
309 {
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40643
diff changeset
310 CHECK_VECTOR (keys);
13308
99457b67e20c (Fcall_interactively): New arg KEYS.
Richard M. Stallman <rms@gnu.org>
parents: 13142
diff changeset
311 key_count = XVECTOR (keys)->size;
99457b67e20c (Fcall_interactively): New arg KEYS.
Richard M. Stallman <rms@gnu.org>
parents: 13142
diff changeset
312 }
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
313
732
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 648
diff changeset
314 /* 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
315 prefix_arg = Vcurrent_prefix_arg;
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
316
617
cde1f15848c6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 516
diff changeset
317 retry:
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
318
9145
dda75a4dbbfb (quotify_arg, Fcall_interactively, Fprefix_numeric_value): Use type test
Karl Heuer <kwzh@gnu.org>
parents: 9100
diff changeset
319 if (SYMBOLP (function))
1115
eb7f1ab33a9d * callint.c (Fcall_interactively): Remove the 'K' interactive
Jim Blandy <jimb@redhat.com>
parents: 1084
diff changeset
320 enable = Fget (function, Qenable_recursive_minibuffers);
34799
c04a8de55245 (Fcall_interactively): Prevent a compiler warning.
Gerd Moellmann <gerd@gnu.org>
parents: 31336
diff changeset
321 else
c04a8de55245 (Fcall_interactively): Prevent a compiler warning.
Gerd Moellmann <gerd@gnu.org>
parents: 31336
diff changeset
322 enable = Qnil;
873
0abaf590e0ca entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 863
diff changeset
323
648
70b112526394 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 644
diff changeset
324 fun = indirect_function (function);
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
325
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
326 specs = Qnil;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
327 string = 0;
48150
2b5f7e1254d1 (Fcall_interactively): New local filter_specs.
Richard M. Stallman <rms@gnu.org>
parents: 46370
diff changeset
328 /* 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
329 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
330 The feature is not fully implemented. */
2b5f7e1254d1 (Fcall_interactively): New local filter_specs.
Richard M. Stallman <rms@gnu.org>
parents: 46370
diff changeset
331 filter_specs = Qnil;
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
332
57707
e092a2ece99b (Fcall_interactively): Add 'U' code to get the up-event discarded by a
Kim F. Storm <storm@cua.dk>
parents: 56571
diff changeset
333 /* If k or K discard an up-event, save it here so it can be retrieved with U */
e092a2ece99b (Fcall_interactively): Add 'U' code to get the up-event discarded by a
Kim F. Storm <storm@cua.dk>
parents: 56571
diff changeset
334 up_event = Qnil;
e092a2ece99b (Fcall_interactively): Add 'U' code to get the up-event discarded by a
Kim F. Storm <storm@cua.dk>
parents: 56571
diff changeset
335
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
336 /* Decode the kind of function. Either handle it and return,
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
337 or go to `lose' if not interactive, or go to `retry'
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
338 to specify a different function, or set either STRING or SPECS. */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
339
9145
dda75a4dbbfb (quotify_arg, Fcall_interactively, Fprefix_numeric_value): Use type test
Karl Heuer <kwzh@gnu.org>
parents: 9100
diff changeset
340 if (SUBRP (fun))
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
341 {
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
342 string = (unsigned char *) XSUBR (fun)->prompt;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
343 if (!string)
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
344 {
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
345 lose:
1926
952f2a18f83d * callint.c (Fcall_interactively): Pass the correct number of
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
346 function = wrong_type_argument (Qcommandp, function);
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
347 goto retry;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
348 }
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
349 }
9145
dda75a4dbbfb (quotify_arg, Fcall_interactively, Fprefix_numeric_value): Use type test
Karl Heuer <kwzh@gnu.org>
parents: 9100
diff changeset
350 else if (COMPILEDP (fun))
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
351 {
10345
9952a5ab70d1 Fix typo in last change.
Roland McGrath <roland@gnu.org>
parents: 10343
diff changeset
352 if ((XVECTOR (fun)->size & PSEUDOVECTOR_SIZE_MASK) <= COMPILED_INTERACTIVE)
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
353 goto lose;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
354 specs = XVECTOR (fun)->contents[COMPILED_INTERACTIVE];
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
355 }
54629
f4cfaf943252 (Fcall_interactively): Use Finteractive_form.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
356 else
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
357 {
54629
f4cfaf943252 (Fcall_interactively): Use Finteractive_form.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
358 Lisp_Object form;
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
359 GCPRO2 (function, prefix_arg);
54641
77a99ef5c0ae (Fcall_interactively): Fix last change.
Kim F. Storm <storm@cua.dk>
parents: 54629
diff changeset
360 form = Finteractive_form (function);
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
361 UNGCPRO;
54629
f4cfaf943252 (Fcall_interactively): Use Finteractive_form.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
362 if (CONSP (form))
f4cfaf943252 (Fcall_interactively): Use Finteractive_form.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
363 specs = filter_specs = Fcar (XCDR (form));
f4cfaf943252 (Fcall_interactively): Use Finteractive_form.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
364 else
f4cfaf943252 (Fcall_interactively): Use Finteractive_form.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
365 goto lose;
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
366 }
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
367
48527
ba7cb9f8dfc3 (Fcall_interactively): If a command fails because
Richard M. Stallman <rms@gnu.org>
parents: 48150
diff changeset
368 /* 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
369 if (STRINGP (specs))
617
cde1f15848c6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 516
diff changeset
370 {
cde1f15848c6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 516
diff changeset
371 /* 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
372 `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
373 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
374 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
375 SBYTES (specs) + 1);
617
cde1f15848c6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 516
diff changeset
376 }
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
377 else if (string == 0)
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
378 {
1498
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
379 Lisp_Object input;
17876
6e27f660a0be (Fcall_interactively): Use num_input_events.
Richard M. Stallman <rms@gnu.org>
parents: 17806
diff changeset
380 i = num_input_events;
1498
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
381 input = specs;
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
382 /* 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
383 GCPRO2 (input, filter_specs);
13843
f5bd72a6fe48 (Fcall_interactively): Undo previous change.
Richard M. Stallman <rms@gnu.org>
parents: 13764
diff changeset
384 specs = Feval (specs);
48150
2b5f7e1254d1 (Fcall_interactively): New local filter_specs.
Richard M. Stallman <rms@gnu.org>
parents: 46370
diff changeset
385 UNGCPRO;
17876
6e27f660a0be (Fcall_interactively): Use num_input_events.
Richard M. Stallman <rms@gnu.org>
parents: 17806
diff changeset
386 if (i != num_input_events || !NILP (record_flag))
1498
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
387 {
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
388 /* We should record this command on the command history. */
51048
7ac9c3bea5ea (Fselect_window): Add optional arg `norecord'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50469
diff changeset
389 Lisp_Object values;
1498
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
390 /* 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
391 and turn them into things we can eval. */
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
392 values = quotify_args (Fcopy_sequence (specs));
49932
2f5cdffaaa04 (fix_command): New subroutine, from Fcall_interactively.
Richard M. Stallman <rms@gnu.org>
parents: 49600
diff changeset
393 fix_command (input, values);
1498
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
394 Vcommand_history
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
395 = Fcons (Fcons (function, values), Vcommand_history);
21721
46ffb5302c40 (Fcall_interactively): Truncate command-history here.
Richard M. Stallman <rms@gnu.org>
parents: 21514
diff changeset
396
46ffb5302c40 (Fcall_interactively): Truncate command-history here.
Richard M. Stallman <rms@gnu.org>
parents: 21514
diff changeset
397 /* Don't keep command history around forever. */
44405
0ed69545b5f3 (Fcall_interactively): Use INTEGERP instead of
Gerd Moellmann <gerd@gnu.org>
parents: 43039
diff changeset
398 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
399 {
46ffb5302c40 (Fcall_interactively): Truncate command-history here.
Richard M. Stallman <rms@gnu.org>
parents: 21514
diff changeset
400 teml = Fnthcdr (Vhistory_length, Vcommand_history);
46ffb5302c40 (Fcall_interactively): Truncate command-history here.
Richard M. Stallman <rms@gnu.org>
parents: 21514
diff changeset
401 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
402 XSETCDR (teml, Qnil);
21721
46ffb5302c40 (Fcall_interactively): Truncate command-history here.
Richard M. Stallman <rms@gnu.org>
parents: 21514
diff changeset
403 }
1498
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
404 }
52374
1b48f538540b (Fcall_interactively): Save and restore Vthis_command, Vthis_original_command,
Richard M. Stallman <rms@gnu.org>
parents: 51048
diff changeset
405
1b48f538540b (Fcall_interactively): Save and restore Vthis_command, Vthis_original_command,
Richard M. Stallman <rms@gnu.org>
parents: 51048
diff changeset
406 Vthis_command = save_this_command;
1b48f538540b (Fcall_interactively): Save and restore Vthis_command, Vthis_original_command,
Richard M. Stallman <rms@gnu.org>
parents: 51048
diff changeset
407 Vthis_original_command = save_this_original_command;
1b48f538540b (Fcall_interactively): Save and restore Vthis_command, Vthis_original_command,
Richard M. Stallman <rms@gnu.org>
parents: 51048
diff changeset
408 real_this_command= save_real_this_command;
1b48f538540b (Fcall_interactively): Save and restore Vthis_command, Vthis_original_command,
Richard M. Stallman <rms@gnu.org>
parents: 51048
diff changeset
409 current_kboard->Vlast_command = save_last_command;
1b48f538540b (Fcall_interactively): Save and restore Vthis_command, Vthis_original_command,
Richard M. Stallman <rms@gnu.org>
parents: 51048
diff changeset
410
11345
c4adea8f7543 (Fcall_interactively): Call single_kboard_state
Richard M. Stallman <rms@gnu.org>
parents: 11280
diff changeset
411 single_kboard_state ();
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
412 return apply1 (function, specs);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
413 }
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
414
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
415 /* Here if function specifies a string to control parsing the defaults */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
416
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1693
diff changeset
417 /* 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
418 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
419 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
420 break;
48527
ba7cb9f8dfc3 (Fcall_interactively): If a command fails because
Richard M. Stallman <rms@gnu.org>
parents: 48150
diff changeset
421
7912
f87185e63bbc (Fcall_interactively): Ignore `-' in string.
Richard M. Stallman <rms@gnu.org>
parents: 7307
diff changeset
422 /* 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
423 /* Note that `+' is reserved for user extensions. */
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
424 while (1)
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
425 {
11280
5146fba1f75d (Fcall_interactively): Fix previous change.
Karl Heuer <kwzh@gnu.org>
parents: 11278
diff changeset
426 if (*string == '+')
11278
25b2219c415c (Fcall_interactively): `+' is reserved for user changes.
Richard M. Stallman <rms@gnu.org>
parents: 11009
diff changeset
427 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
428 else if (*string == '*')
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
429 {
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
430 string++;
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 438
diff changeset
431 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
432 {
ba7cb9f8dfc3 (Fcall_interactively): If a command fails because
Richard M. Stallman <rms@gnu.org>
parents: 48150
diff changeset
433 if (!NILP (record_flag))
ba7cb9f8dfc3 (Fcall_interactively): If a command fails because
Richard M. Stallman <rms@gnu.org>
parents: 48150
diff changeset
434 {
ba7cb9f8dfc3 (Fcall_interactively): If a command fails because
Richard M. Stallman <rms@gnu.org>
parents: 48150
diff changeset
435 unsigned char *p = string;
ba7cb9f8dfc3 (Fcall_interactively): If a command fails because
Richard M. Stallman <rms@gnu.org>
parents: 48150
diff changeset
436 while (*p)
ba7cb9f8dfc3 (Fcall_interactively): If a command fails because
Richard M. Stallman <rms@gnu.org>
parents: 48150
diff changeset
437 {
ba7cb9f8dfc3 (Fcall_interactively): If a command fails because
Richard M. Stallman <rms@gnu.org>
parents: 48150
diff changeset
438 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
439 || *p == '\n'))
ba7cb9f8dfc3 (Fcall_interactively): If a command fails because
Richard M. Stallman <rms@gnu.org>
parents: 48150
diff changeset
440 Fbarf_if_buffer_read_only ();
ba7cb9f8dfc3 (Fcall_interactively): If a command fails because
Richard M. Stallman <rms@gnu.org>
parents: 48150
diff changeset
441 p++;
ba7cb9f8dfc3 (Fcall_interactively): If a command fails because
Richard M. Stallman <rms@gnu.org>
parents: 48150
diff changeset
442 }
ba7cb9f8dfc3 (Fcall_interactively): If a command fails because
Richard M. Stallman <rms@gnu.org>
parents: 48150
diff changeset
443 record_then_fail = 1;
ba7cb9f8dfc3 (Fcall_interactively): If a command fails because
Richard M. Stallman <rms@gnu.org>
parents: 48150
diff changeset
444 }
ba7cb9f8dfc3 (Fcall_interactively): If a command fails because
Richard M. Stallman <rms@gnu.org>
parents: 48150
diff changeset
445 else
ba7cb9f8dfc3 (Fcall_interactively): If a command fails because
Richard M. Stallman <rms@gnu.org>
parents: 48150
diff changeset
446 Fbarf_if_buffer_read_only ();
ba7cb9f8dfc3 (Fcall_interactively): If a command fails because
Richard M. Stallman <rms@gnu.org>
parents: 48150
diff changeset
447 }
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
448 }
7912
f87185e63bbc (Fcall_interactively): Ignore `-' in string.
Richard M. Stallman <rms@gnu.org>
parents: 7307
diff changeset
449 /* Ignore this for semi-compatibility with Lucid. */
f87185e63bbc (Fcall_interactively): Ignore `-' in string.
Richard M. Stallman <rms@gnu.org>
parents: 7307
diff changeset
450 else if (*string == '-')
f87185e63bbc (Fcall_interactively): Ignore `-' in string.
Richard M. Stallman <rms@gnu.org>
parents: 7307
diff changeset
451 string++;
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
452 else if (*string == '@')
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
453 {
57998
a017cc23b31d (Fcall_interactively): Avoid reusing EVENT for other data.
Richard M. Stallman <rms@gnu.org>
parents: 57707
diff changeset
454 Lisp_Object event, tem;
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1693
diff changeset
455
48630
edd0dd275f1f (Fcall_interactively): Use next_event only if less
Andreas Schwab <schwab@suse.de>
parents: 48527
diff changeset
456 event = (next_event < key_count
edd0dd275f1f (Fcall_interactively): Use next_event only if less
Andreas Schwab <schwab@suse.de>
parents: 48527
diff changeset
457 ? XVECTOR (keys)->contents[next_event]
edd0dd275f1f (Fcall_interactively): Use next_event only if less
Andreas Schwab <schwab@suse.de>
parents: 48527
diff changeset
458 : Qnil);
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1693
diff changeset
459 if (EVENT_HAS_PARAMETERS (event)
57998
a017cc23b31d (Fcall_interactively): Avoid reusing EVENT for other data.
Richard M. Stallman <rms@gnu.org>
parents: 57707
diff changeset
460 && (tem = XCDR (event), CONSP (tem))
a017cc23b31d (Fcall_interactively): Avoid reusing EVENT for other data.
Richard M. Stallman <rms@gnu.org>
parents: 57707
diff changeset
461 && (tem = XCAR (tem), CONSP (tem))
a017cc23b31d (Fcall_interactively): Avoid reusing EVENT for other data.
Richard M. Stallman <rms@gnu.org>
parents: 57707
diff changeset
462 && (tem = XCAR (tem), WINDOWP (tem)))
6270
853b88dd9945 (Fcall_interactively): Don't select an active minibuffer.
Karl Heuer <kwzh@gnu.org>
parents: 4696
diff changeset
463 {
57998
a017cc23b31d (Fcall_interactively): Avoid reusing EVENT for other data.
Richard M. Stallman <rms@gnu.org>
parents: 57707
diff changeset
464 if (MINI_WINDOW_P (XWINDOW (tem))
a017cc23b31d (Fcall_interactively): Avoid reusing EVENT for other data.
Richard M. Stallman <rms@gnu.org>
parents: 57707
diff changeset
465 && ! (minibuf_level > 0 && EQ (tem, minibuf_window)))
6270
853b88dd9945 (Fcall_interactively): Don't select an active minibuffer.
Karl Heuer <kwzh@gnu.org>
parents: 4696
diff changeset
466 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
467
89cf458ed188 (Vmouse_leave_buffer_hook, Qmouse_leave_buffer_hook): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 9342
diff changeset
468 /* 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
469 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
470 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
471
57998
a017cc23b31d (Fcall_interactively): Avoid reusing EVENT for other data.
Richard M. Stallman <rms@gnu.org>
parents: 57707
diff changeset
472 Fselect_window (tem, Qnil);
6270
853b88dd9945 (Fcall_interactively): Don't select an active minibuffer.
Karl Heuer <kwzh@gnu.org>
parents: 4696
diff changeset
473 }
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
474 string++;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
475 }
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
476 else break;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
477 }
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
478
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
479 /* Count the number of arguments the interactive spec would have
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
480 us give to the function. */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
481 tem = string;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
482 for (j = 0; *tem; j++)
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
483 {
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
484 /* 'r' specifications ("point and mark as 2 numeric args")
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
485 produce *two* arguments. */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
486 if (*tem == 'r') j++;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
487 tem = (unsigned char *) index (tem, '\n');
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
488 if (tem)
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
489 tem++;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
490 else
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
491 tem = (unsigned char *) "";
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
492 }
13843
f5bd72a6fe48 (Fcall_interactively): Undo previous change.
Richard M. Stallman <rms@gnu.org>
parents: 13764
diff changeset
493 count = j;
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
494
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
495 args = (Lisp_Object *) alloca ((count + 1) * sizeof (Lisp_Object));
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
496 visargs = (Lisp_Object *) alloca ((count + 1) * sizeof (Lisp_Object));
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
497 argstrings = (unsigned char **) alloca ((count + 1) * sizeof (char *));
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
498 varies = (int *) alloca ((count + 1) * sizeof (int));
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
499
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
500 for (i = 0; i < (count + 1); i++)
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
501 {
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
502 args[i] = Qnil;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
503 visargs[i] = Qnil;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
504 varies[i] = 0;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
505 }
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
506
57707
e092a2ece99b (Fcall_interactively): Add 'U' code to get the up-event discarded by a
Kim F. Storm <storm@cua.dk>
parents: 56571
diff changeset
507 GCPRO5 (prefix_arg, function, *args, *visargs, up_event);
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
508 gcpro3.nvars = (count + 1);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
509 gcpro4.nvars = (count + 1);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
510
873
0abaf590e0ca entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 863
diff changeset
511 if (!NILP (enable))
0abaf590e0ca entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 863
diff changeset
512 specbind (Qenable_recursive_minibuffers, Qt);
0abaf590e0ca entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 863
diff changeset
513
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
514 tem = string;
13843
f5bd72a6fe48 (Fcall_interactively): Undo previous change.
Richard M. Stallman <rms@gnu.org>
parents: 13764
diff changeset
515 for (i = 1; *tem; i++)
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
516 {
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
517 strncpy (prompt1, tem + 1, sizeof prompt1 - 1);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
518 prompt1[sizeof prompt1 - 1] = 0;
31225
7930c46bb365 (toplevel) [HAVE_STRING_H]: Include string.h.
Gerd Moellmann <gerd@gnu.org>
parents: 29371
diff changeset
519 tem1 = (char *) index (prompt1, '\n');
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
520 if (tem1) *tem1 = 0;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
521 /* Fill argstrings with a vector of C strings
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
522 corresponding to the Lisp strings in visargs. */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
523 for (j = 1; j < i; j++)
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
524 argstrings[j]
20552
1a0cb8cd5615 (Fcall_interactively) <'d', 'r'>: Use set_marker_both.
Richard M. Stallman <rms@gnu.org>
parents: 19759
diff changeset
525 = (EQ (visargs[j], Qnil)
1a0cb8cd5615 (Fcall_interactively) <'d', 'r'>: Use set_marker_both.
Richard M. Stallman <rms@gnu.org>
parents: 19759
diff changeset
526 ? (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
527 : SDATA (visargs[j]));
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
528
13142
297a0e21501a (callint_message, callint_message_size): New vars.
Richard M. Stallman <rms@gnu.org>
parents: 12582
diff changeset
529 /* 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
530 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
531 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
532 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
533 while (1)
297a0e21501a (callint_message, callint_message_size): New vars.
Richard M. Stallman <rms@gnu.org>
parents: 12582
diff changeset
534 {
297a0e21501a (callint_message, callint_message_size): New vars.
Richard M. Stallman <rms@gnu.org>
parents: 12582
diff changeset
535 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
536 prompt1, (char *)0,
20552
1a0cb8cd5615 (Fcall_interactively) <'d', 'r'>: Use set_marker_both.
Richard M. Stallman <rms@gnu.org>
parents: 19759
diff changeset
537 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
538 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
539 break;
297a0e21501a (callint_message, callint_message_size): New vars.
Richard M. Stallman <rms@gnu.org>
parents: 12582
diff changeset
540 callint_message_size *= 2;
297a0e21501a (callint_message, callint_message_size): New vars.
Richard M. Stallman <rms@gnu.org>
parents: 12582
diff changeset
541 callint_message
297a0e21501a (callint_message, callint_message_size): New vars.
Richard M. Stallman <rms@gnu.org>
parents: 12582
diff changeset
542 = (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
543 }
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
544
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
545 switch (*tem)
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
546 {
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
547 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
548 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
549 Vobarray, Qfboundp, Qt,
19548
b275154db0cb (Finteractive): Document the code letter `M'.
Kenichi Handa <handa@m17n.org>
parents: 17958
diff changeset
550 Qnil, Qnil, Qnil, Qnil);
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
551 /* Passing args[i] directly stimulates compiler bug */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
552 teml = visargs[i];
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
553 args[i] = Fintern (teml, Qnil);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
554 break;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
555
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
556 case 'b': /* Name of existing buffer */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
557 args[i] = Fcurrent_buffer ();
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
558 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
559 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
560 args[i] = Fread_buffer (build_string (callint_message), args[i], Qt);
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
561 break;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
562
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
563 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
564 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
565 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
566 Qnil);
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
567 break;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
568
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
569 case 'c': /* Character */
23934
93f40b344070 (Fcall_interactively) <'C'>: Give Fread_char Qnil
Kenichi Handa <handa@m17n.org>
parents: 23301
diff changeset
570 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
571 message1_nolog ((char *) 0);
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
572 /* Passing args[i] directly stimulates compiler bug */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
573 teml = args[i];
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
574 visargs[i] = Fchar_to_string (teml);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
575 break;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
576
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
577 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
578 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
579 Vobarray, Qcommandp,
19548
b275154db0cb (Finteractive): Document the code letter `M'.
Kenichi Handa <handa@m17n.org>
parents: 17958
diff changeset
580 Qt, Qnil, Qnil, Qnil, Qnil);
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
581 /* Passing args[i] directly stimulates compiler bug */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
582 teml = visargs[i];
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
583 args[i] = Fintern (teml, Qnil);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
584 break;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
585
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
586 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
587 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
588 args[i] = point_marker;
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
589 /* visargs[i] = Qnil; */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
590 varies[i] = 1;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
591 break;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
592
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
593 case 'D': /* Directory name. */
13142
297a0e21501a (callint_message, callint_message_size): New vars.
Richard M. Stallman <rms@gnu.org>
parents: 12582
diff changeset
594 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
595 current_buffer->directory, Qlambda, Qnil,
ce01a38706ee (Fcall_interactively) <"D">: Supply Qfile_directory_p
Kim F. Storm <storm@cua.dk>
parents: 45394
diff changeset
596 Qfile_directory_p);
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
597 break;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
598
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
599 case 'f': /* Existing file name. */
13142
297a0e21501a (callint_message, callint_message_size): New vars.
Richard M. Stallman <rms@gnu.org>
parents: 12582
diff changeset
600 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
601 Qnil, Qnil, Qlambda, Qnil, Qnil);
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
602 break;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
603
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
604 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
605 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
606 Qnil, Qnil, Qnil, Qnil, Qnil);
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
607 break;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
608
60681
046708b92d49 (Finteractive): Document G option.
Richard M. Stallman <rms@gnu.org>
parents: 58380
diff changeset
609 case 'G': /* Possibly nonexistent file name,
046708b92d49 (Finteractive): Document G option.
Richard M. Stallman <rms@gnu.org>
parents: 58380
diff changeset
610 default to directory alone. */
046708b92d49 (Finteractive): Document G option.
Richard M. Stallman <rms@gnu.org>
parents: 58380
diff changeset
611 args[i] = Fread_file_name (build_string (callint_message),
046708b92d49 (Finteractive): Document G option.
Richard M. Stallman <rms@gnu.org>
parents: 58380
diff changeset
612 Qnil, Qnil, Qnil, build_string (""), Qnil);
046708b92d49 (Finteractive): Document G option.
Richard M. Stallman <rms@gnu.org>
parents: 58380
diff changeset
613 break;
046708b92d49 (Finteractive): Document G option.
Richard M. Stallman <rms@gnu.org>
parents: 58380
diff changeset
614
17024
6cfba7f41dca (doc-string of `interactive'): Describe new code
Karl Heuer <kwzh@gnu.org>
parents: 16363
diff changeset
615 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
616 varies[i] = -1;
6cfba7f41dca (doc-string of `interactive'): Describe new code
Karl Heuer <kwzh@gnu.org>
parents: 16363
diff changeset
617 break;
6cfba7f41dca (doc-string of `interactive'): Describe new code
Karl Heuer <kwzh@gnu.org>
parents: 16363
diff changeset
618
10540
161014ddd3c5 (Fcall_interactively): Define K mostly like k.
Richard M. Stallman <rms@gnu.org>
parents: 10345
diff changeset
619 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
620 {
46293
1fb8f75062c6 Use macro SPECPDL_INDEX.
Juanma Barranquero <lekktu@gmail.com>
parents: 46006
diff changeset
621 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
622 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
623 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
624 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
625 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
626 teml = args[i];
54927
7b6b4d9ae726 (Fkey_description): Change callers.
Kim F. Storm <storm@cua.dk>
parents: 54891
diff changeset
627 visargs[i] = Fkey_description (teml, Qnil);
22485
b469abbc9984 (Fcall_interactively) <k, K>: If sequence ends in a down
Richard M. Stallman <rms@gnu.org>
parents: 22383
diff changeset
628
b469abbc9984 (Fcall_interactively) <k, K>: If sequence ends in a down
Richard M. Stallman <rms@gnu.org>
parents: 22383
diff changeset
629 /* 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
630 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
631 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
632 if (CONSP (teml))
25645
a14111a2a100 Use XCAR, XCDR, XFLOAT_DATA instead of explicit member access.
Ken Raeburn <raeburn@raeburn.org>
parents: 24911
diff changeset
633 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
634 if (SYMBOLP (teml))
b469abbc9984 (Fcall_interactively) <k, K>: If sequence ends in a down
Richard M. Stallman <rms@gnu.org>
parents: 22383
diff changeset
635 {
b469abbc9984 (Fcall_interactively) <k, K>: If sequence ends in a down
Richard M. Stallman <rms@gnu.org>
parents: 22383
diff changeset
636 Lisp_Object tem2;
b469abbc9984 (Fcall_interactively) <k, K>: If sequence ends in a down
Richard M. Stallman <rms@gnu.org>
parents: 22383
diff changeset
637
b469abbc9984 (Fcall_interactively) <k, K>: If sequence ends in a down
Richard M. Stallman <rms@gnu.org>
parents: 22383
diff changeset
638 teml = Fget (teml, intern ("event-symbol-elements"));
24911
f477c5bb74c6 (Fcall_interactively): Ignore first element of
Andreas Schwab <schwab@suse.de>
parents: 23934
diff changeset
639 /* Ignore first element, which is the base key. */
f477c5bb74c6 (Fcall_interactively): Ignore first element of
Andreas Schwab <schwab@suse.de>
parents: 23934
diff changeset
640 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
641 if (! NILP (tem2))
57707
e092a2ece99b (Fcall_interactively): Add 'U' code to get the up-event discarded by a
Kim F. Storm <storm@cua.dk>
parents: 56571
diff changeset
642 up_event = 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
643 }
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
644 }
10540
161014ddd3c5 (Fcall_interactively): Define K mostly like k.
Richard M. Stallman <rms@gnu.org>
parents: 10345
diff changeset
645 break;
161014ddd3c5 (Fcall_interactively): Define K mostly like k.
Richard M. Stallman <rms@gnu.org>
parents: 10345
diff changeset
646
161014ddd3c5 (Fcall_interactively): Define K mostly like k.
Richard M. Stallman <rms@gnu.org>
parents: 10345
diff changeset
647 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
648 {
46293
1fb8f75062c6 Use macro SPECPDL_INDEX.
Juanma Barranquero <lekktu@gmail.com>
parents: 46006
diff changeset
649 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
650 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
651 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
652 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
653 teml = args[i];
54927
7b6b4d9ae726 (Fkey_description): Change callers.
Kim F. Storm <storm@cua.dk>
parents: 54891
diff changeset
654 visargs[i] = Fkey_description (teml, 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
655 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
656
b469abbc9984 (Fcall_interactively) <k, K>: If sequence ends in a down
Richard M. Stallman <rms@gnu.org>
parents: 22383
diff changeset
657 /* 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
658 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
659 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
660 if (CONSP (teml))
25645
a14111a2a100 Use XCAR, XCDR, XFLOAT_DATA instead of explicit member access.
Ken Raeburn <raeburn@raeburn.org>
parents: 24911
diff changeset
661 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
662 if (SYMBOLP (teml))
b469abbc9984 (Fcall_interactively) <k, K>: If sequence ends in a down
Richard M. Stallman <rms@gnu.org>
parents: 22383
diff changeset
663 {
b469abbc9984 (Fcall_interactively) <k, K>: If sequence ends in a down
Richard M. Stallman <rms@gnu.org>
parents: 22383
diff changeset
664 Lisp_Object tem2;
b469abbc9984 (Fcall_interactively) <k, K>: If sequence ends in a down
Richard M. Stallman <rms@gnu.org>
parents: 22383
diff changeset
665
b469abbc9984 (Fcall_interactively) <k, K>: If sequence ends in a down
Richard M. Stallman <rms@gnu.org>
parents: 22383
diff changeset
666 teml = Fget (teml, intern ("event-symbol-elements"));
24911
f477c5bb74c6 (Fcall_interactively): Ignore first element of
Andreas Schwab <schwab@suse.de>
parents: 23934
diff changeset
667 /* Ignore first element, which is the base key. */
f477c5bb74c6 (Fcall_interactively): Ignore first element of
Andreas Schwab <schwab@suse.de>
parents: 23934
diff changeset
668 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
669 if (! NILP (tem2))
57707
e092a2ece99b (Fcall_interactively): Add 'U' code to get the up-event discarded by a
Kim F. Storm <storm@cua.dk>
parents: 56571
diff changeset
670 up_event = 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
671 }
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
672 }
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
673 break;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
674
57707
e092a2ece99b (Fcall_interactively): Add 'U' code to get the up-event discarded by a
Kim F. Storm <storm@cua.dk>
parents: 56571
diff changeset
675 case 'U': /* Up event from last k or K */
e092a2ece99b (Fcall_interactively): Add 'U' code to get the up-event discarded by a
Kim F. Storm <storm@cua.dk>
parents: 56571
diff changeset
676 if (!NILP (up_event))
e092a2ece99b (Fcall_interactively): Add 'U' code to get the up-event discarded by a
Kim F. Storm <storm@cua.dk>
parents: 56571
diff changeset
677 {
e092a2ece99b (Fcall_interactively): Add 'U' code to get the up-event discarded by a
Kim F. Storm <storm@cua.dk>
parents: 56571
diff changeset
678 args[i] = Fmake_vector (make_number (1), up_event);
e092a2ece99b (Fcall_interactively): Add 'U' code to get the up-event discarded by a
Kim F. Storm <storm@cua.dk>
parents: 56571
diff changeset
679 up_event = Qnil;
e092a2ece99b (Fcall_interactively): Add 'U' code to get the up-event discarded by a
Kim F. Storm <storm@cua.dk>
parents: 56571
diff changeset
680 teml = args[i];
e092a2ece99b (Fcall_interactively): Add 'U' code to get the up-event discarded by a
Kim F. Storm <storm@cua.dk>
parents: 56571
diff changeset
681 visargs[i] = Fkey_description (teml, Qnil);
e092a2ece99b (Fcall_interactively): Add 'U' code to get the up-event discarded by a
Kim F. Storm <storm@cua.dk>
parents: 56571
diff changeset
682 }
e092a2ece99b (Fcall_interactively): Add 'U' code to get the up-event discarded by a
Kim F. Storm <storm@cua.dk>
parents: 56571
diff changeset
683 break;
e092a2ece99b (Fcall_interactively): Add 'U' code to get the up-event discarded by a
Kim F. Storm <storm@cua.dk>
parents: 56571
diff changeset
684
1383
54028d2538a4 * callint.c (Fcall_interactively): Allow multiple 'e' specs.
Jim Blandy <jimb@redhat.com>
parents: 1347
diff changeset
685 case 'e': /* The invoking event. */
13308
99457b67e20c (Fcall_interactively): New arg KEYS.
Richard M. Stallman <rms@gnu.org>
parents: 13142
diff changeset
686 if (next_event >= key_count)
1383
54028d2538a4 * callint.c (Fcall_interactively): Allow multiple 'e' specs.
Jim Blandy <jimb@redhat.com>
parents: 1347
diff changeset
687 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
688 (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
689 ? (char *) SDATA (SYMBOL_NAME (function))
1383
54028d2538a4 * callint.c (Fcall_interactively): Allow multiple 'e' specs.
Jim Blandy <jimb@redhat.com>
parents: 1347
diff changeset
690 : "command"));
13308
99457b67e20c (Fcall_interactively): New arg KEYS.
Richard M. Stallman <rms@gnu.org>
parents: 13142
diff changeset
691 args[i] = XVECTOR (keys)->contents[next_event++];
732
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 648
diff changeset
692 varies[i] = -1;
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1693
diff changeset
693
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1693
diff changeset
694 /* Find the next parameterized event. */
13308
99457b67e20c (Fcall_interactively): New arg KEYS.
Richard M. Stallman <rms@gnu.org>
parents: 13142
diff changeset
695 while (next_event < key_count
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1693
diff changeset
696 && ! (EVENT_HAS_PARAMETERS
13308
99457b67e20c (Fcall_interactively): New arg KEYS.
Richard M. Stallman <rms@gnu.org>
parents: 13142
diff changeset
697 (XVECTOR (keys)->contents[next_event])))
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1693
diff changeset
698 next_event++;
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1693
diff changeset
699
438
8b54ee2c82d6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 407
diff changeset
700 break;
8b54ee2c82d6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 407
diff changeset
701
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
702 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
703 check_mark (0);
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
704 /* visargs[i] = Qnil; */
10803
b8c4a1b7d484 (Fcall_interactively): Use markers temporarily in
Richard M. Stallman <rms@gnu.org>
parents: 10756
diff changeset
705 args[i] = current_buffer->mark;
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
706 varies[i] = 2;
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 'M': /* String read via minibuffer with
b275154db0cb (Finteractive): Document the code letter `M'.
Kenichi Handa <handa@m17n.org>
parents: 17958
diff changeset
710 inheriting the current input method. */
b275154db0cb (Finteractive): Document the code letter `M'.
Kenichi Handa <handa@m17n.org>
parents: 17958
diff changeset
711 args[i] = Fread_string (build_string (callint_message),
b275154db0cb (Finteractive): Document the code letter `M'.
Kenichi Handa <handa@m17n.org>
parents: 17958
diff changeset
712 Qnil, Qnil, Qnil, Qt);
b275154db0cb (Finteractive): Document the code letter `M'.
Kenichi Handa <handa@m17n.org>
parents: 17958
diff changeset
713 break;
b275154db0cb (Finteractive): Document the code letter `M'.
Kenichi Handa <handa@m17n.org>
parents: 17958
diff changeset
714
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
715 case 'N': /* Prefix arg, else number from minibuffer */
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 438
diff changeset
716 if (!NILP (prefix_arg))
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
717 goto have_prefix_arg;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
718 case 'n': /* Read number from minibuffer. */
15961
e26f5c2b75a6 (Fcall_interactively): For `N' and `n',
Richard M. Stallman <rms@gnu.org>
parents: 14847
diff changeset
719 {
e26f5c2b75a6 (Fcall_interactively): For `N' and `n',
Richard M. Stallman <rms@gnu.org>
parents: 14847
diff changeset
720 int first = 1;
e26f5c2b75a6 (Fcall_interactively): For `N' and `n',
Richard M. Stallman <rms@gnu.org>
parents: 14847
diff changeset
721 do
e26f5c2b75a6 (Fcall_interactively): For `N' and `n',
Richard M. Stallman <rms@gnu.org>
parents: 14847
diff changeset
722 {
e26f5c2b75a6 (Fcall_interactively): For `N' and `n',
Richard M. Stallman <rms@gnu.org>
parents: 14847
diff changeset
723 Lisp_Object tem;
e26f5c2b75a6 (Fcall_interactively): For `N' and `n',
Richard M. Stallman <rms@gnu.org>
parents: 14847
diff changeset
724 if (! first)
e26f5c2b75a6 (Fcall_interactively): For `N' and `n',
Richard M. Stallman <rms@gnu.org>
parents: 14847
diff changeset
725 {
e26f5c2b75a6 (Fcall_interactively): For `N' and `n',
Richard M. Stallman <rms@gnu.org>
parents: 14847
diff changeset
726 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
727 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
728 }
e26f5c2b75a6 (Fcall_interactively): For `N' and `n',
Richard M. Stallman <rms@gnu.org>
parents: 14847
diff changeset
729 first = 0;
e26f5c2b75a6 (Fcall_interactively): For `N' and `n',
Richard M. Stallman <rms@gnu.org>
parents: 14847
diff changeset
730
e26f5c2b75a6 (Fcall_interactively): For `N' and `n',
Richard M. Stallman <rms@gnu.org>
parents: 14847
diff changeset
731 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
732 Qnil, Qnil, Qnil, Qnil, Qnil,
58380
16fe8b5010b5 (Fcall_interactively): Call Fread_from_minibuffer with extra argument.
Luc Teirlinck <teirllm@auburn.edu>
parents: 58085
diff changeset
733 Qnil, Qnil);
46370
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 46293
diff changeset
734 if (! STRINGP (tem) || SCHARS (tem) == 0)
15961
e26f5c2b75a6 (Fcall_interactively): For `N' and `n',
Richard M. Stallman <rms@gnu.org>
parents: 14847
diff changeset
735 args[i] = Qnil;
e26f5c2b75a6 (Fcall_interactively): For `N' and `n',
Richard M. Stallman <rms@gnu.org>
parents: 14847
diff changeset
736 else
e26f5c2b75a6 (Fcall_interactively): For `N' and `n',
Richard M. Stallman <rms@gnu.org>
parents: 14847
diff changeset
737 args[i] = Fread (tem);
e26f5c2b75a6 (Fcall_interactively): For `N' and `n',
Richard M. Stallman <rms@gnu.org>
parents: 14847
diff changeset
738 }
e26f5c2b75a6 (Fcall_interactively): For `N' and `n',
Richard M. Stallman <rms@gnu.org>
parents: 14847
diff changeset
739 while (! NUMBERP (args[i]));
e26f5c2b75a6 (Fcall_interactively): For `N' and `n',
Richard M. Stallman <rms@gnu.org>
parents: 14847
diff changeset
740 }
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
741 visargs[i] = last_minibuf_string;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
742 break;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
743
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
744 case 'P': /* Prefix arg in raw form. Does no I/O. */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
745 args[i] = prefix_arg;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
746 /* visargs[i] = Qnil; */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
747 varies[i] = -1;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
748 break;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
749
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
750 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
751 have_prefix_arg:
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
752 args[i] = Fprefix_numeric_value (prefix_arg);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
753 /* visargs[i] = Qnil; */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
754 varies[i] = -1;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
755 break;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
756
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
757 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
758 check_mark (1);
20552
1a0cb8cd5615 (Fcall_interactively) <'d', 'r'>: Use set_marker_both.
Richard M. Stallman <rms@gnu.org>
parents: 19759
diff changeset
759 set_marker_both (point_marker, Qnil, PT, PT_BYTE);
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
760 /* visargs[i+1] = Qnil; */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
761 foo = marker_position (current_buffer->mark);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
762 /* visargs[i] = Qnil; */
16039
855c8d8ba0f0 Change all references from point to PT.
Karl Heuer <kwzh@gnu.org>
parents: 15961
diff changeset
763 args[i] = PT < foo ? point_marker : current_buffer->mark;
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
764 varies[i] = 3;
16039
855c8d8ba0f0 Change all references from point to PT.
Karl Heuer <kwzh@gnu.org>
parents: 15961
diff changeset
765 args[++i] = PT > foo ? point_marker : current_buffer->mark;
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
766 varies[i] = 4;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
767 break;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
768
19548
b275154db0cb (Finteractive): Document the code letter `M'.
Kenichi Handa <handa@m17n.org>
parents: 17958
diff changeset
769 case 's': /* String read via minibuffer without
b275154db0cb (Finteractive): Document the code letter `M'.
Kenichi Handa <handa@m17n.org>
parents: 17958
diff changeset
770 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
771 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
772 Qnil, Qnil, Qnil, Qnil);
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
773 break;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
774
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
775 case 'S': /* Any symbol. */
13142
297a0e21501a (callint_message, callint_message_size): New vars.
Richard M. Stallman <rms@gnu.org>
parents: 12582
diff changeset
776 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
777 Qnil, Qnil, Qnil, Qnil);
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
778 /* Passing args[i] directly stimulates compiler bug */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
779 teml = visargs[i];
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
780 args[i] = Fintern (teml, Qnil);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
781 break;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
782
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
783 case 'v': /* Variable name: symbol that is
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
784 user-variable-p. */
17736
8b30ef18c480 (Fcall_interactively): Pass new arg to
Richard M. Stallman <rms@gnu.org>
parents: 17024
diff changeset
785 args[i] = Fread_variable (build_string (callint_message), Qnil);
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
786 visargs[i] = last_minibuf_string;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
787 break;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
788
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
789 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
790 args[i] = Fread_minibuffer (build_string (callint_message), Qnil);
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
791 visargs[i] = last_minibuf_string;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
792 break;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
793
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
794 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
795 args[i] = Feval_minibuffer (build_string (callint_message), Qnil);
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
796 visargs[i] = last_minibuf_string;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
797 break;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
798
17024
6cfba7f41dca (doc-string of `interactive'): Describe new code
Karl Heuer <kwzh@gnu.org>
parents: 16363
diff changeset
799 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
800 argument if no prefix */
6cfba7f41dca (doc-string of `interactive'): Describe new code
Karl Heuer <kwzh@gnu.org>
parents: 16363
diff changeset
801 if (NILP (prefix_arg))
6cfba7f41dca (doc-string of `interactive'): Describe new code
Karl Heuer <kwzh@gnu.org>
parents: 16363
diff changeset
802 {
6cfba7f41dca (doc-string of `interactive'): Describe new code
Karl Heuer <kwzh@gnu.org>
parents: 16363
diff changeset
803 args[i] = Qnil;
6cfba7f41dca (doc-string of `interactive'): Describe new code
Karl Heuer <kwzh@gnu.org>
parents: 16363
diff changeset
804 varies[i] = -1;
6cfba7f41dca (doc-string of `interactive'): Describe new code
Karl Heuer <kwzh@gnu.org>
parents: 16363
diff changeset
805 }
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48630
diff changeset
806 else
17024
6cfba7f41dca (doc-string of `interactive'): Describe new code
Karl Heuer <kwzh@gnu.org>
parents: 16363
diff changeset
807 {
6cfba7f41dca (doc-string of `interactive'): Describe new code
Karl Heuer <kwzh@gnu.org>
parents: 16363
diff changeset
808 args[i]
6cfba7f41dca (doc-string of `interactive'): Describe new code
Karl Heuer <kwzh@gnu.org>
parents: 16363
diff changeset
809 = 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
810 visargs[i] = last_minibuf_string;
6cfba7f41dca (doc-string of `interactive'): Describe new code
Karl Heuer <kwzh@gnu.org>
parents: 16363
diff changeset
811 }
6cfba7f41dca (doc-string of `interactive'): Describe new code
Karl Heuer <kwzh@gnu.org>
parents: 16363
diff changeset
812 break;
6cfba7f41dca (doc-string of `interactive'): Describe new code
Karl Heuer <kwzh@gnu.org>
parents: 16363
diff changeset
813
6cfba7f41dca (doc-string of `interactive'): Describe new code
Karl Heuer <kwzh@gnu.org>
parents: 16363
diff changeset
814 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
815 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
816 visargs[i] = last_minibuf_string;
6cfba7f41dca (doc-string of `interactive'): Describe new code
Karl Heuer <kwzh@gnu.org>
parents: 16363
diff changeset
817 break;
6cfba7f41dca (doc-string of `interactive'): Describe new code
Karl Heuer <kwzh@gnu.org>
parents: 16363
diff changeset
818
11278
25b2219c415c (Fcall_interactively): `+' is reserved for user changes.
Richard M. Stallman <rms@gnu.org>
parents: 11009
diff changeset
819 /* 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
820 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
821 case '+':
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
822 default:
11278
25b2219c415c (Fcall_interactively): `+' is reserved for user changes.
Richard M. Stallman <rms@gnu.org>
parents: 11009
diff changeset
823 error ("Invalid control letter `%c' (%03o) in interactive calling string",
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
824 *tem, *tem);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
825 }
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
826
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
827 if (varies[i] == 0)
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
828 arg_from_tty = 1;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
829
9145
dda75a4dbbfb (quotify_arg, Fcall_interactively, Fprefix_numeric_value): Use type test
Karl Heuer <kwzh@gnu.org>
parents: 9100
diff changeset
830 if (NILP (visargs[i]) && STRINGP (args[i]))
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
831 visargs[i] = args[i];
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 tem = (unsigned char *) index (tem, '\n');
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
834 if (tem) tem++;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
835 else tem = (unsigned char *) "";
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
836 }
873
0abaf590e0ca entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 863
diff changeset
837 unbind_to (speccount, Qnil);
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
838
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
839 QUIT;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
840
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
841 args[0] = function;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
842
14062
16a05061fee3 (Fcall_interactively, Fprefix_numeric_value): Harmonize arguments with
Erik Naggum <erik@naggum.no>
parents: 13843
diff changeset
843 if (arg_from_tty || !NILP (record_flag))
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
844 {
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
845 visargs[0] = function;
438
8b54ee2c82d6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 407
diff changeset
846 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
847 {
b8c4a1b7d484 (Fcall_interactively): Use markers temporarily in
Richard M. Stallman <rms@gnu.org>
parents: 10756
diff changeset
848 if (varies[i] > 0)
b8c4a1b7d484 (Fcall_interactively): Use markers temporarily in
Richard M. Stallman <rms@gnu.org>
parents: 10756
diff changeset
849 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
850 else
b8c4a1b7d484 (Fcall_interactively): Use markers temporarily in
Richard M. Stallman <rms@gnu.org>
parents: 10756
diff changeset
851 visargs[i] = quotify_arg (args[i]);
b8c4a1b7d484 (Fcall_interactively): Use markers temporarily in
Richard M. Stallman <rms@gnu.org>
parents: 10756
diff changeset
852 }
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
853 Vcommand_history = Fcons (Flist (count + 1, visargs),
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
854 Vcommand_history);
21721
46ffb5302c40 (Fcall_interactively): Truncate command-history here.
Richard M. Stallman <rms@gnu.org>
parents: 21514
diff changeset
855 /* Don't keep command history around forever. */
44405
0ed69545b5f3 (Fcall_interactively): Use INTEGERP instead of
Gerd Moellmann <gerd@gnu.org>
parents: 43039
diff changeset
856 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
857 {
46ffb5302c40 (Fcall_interactively): Truncate command-history here.
Richard M. Stallman <rms@gnu.org>
parents: 21514
diff changeset
858 teml = Fnthcdr (Vhistory_length, Vcommand_history);
46ffb5302c40 (Fcall_interactively): Truncate command-history here.
Richard M. Stallman <rms@gnu.org>
parents: 21514
diff changeset
859 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
860 XSETCDR (teml, Qnil);
21721
46ffb5302c40 (Fcall_interactively): Truncate command-history here.
Richard M. Stallman <rms@gnu.org>
parents: 21514
diff changeset
861 }
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
862 }
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
863
10803
b8c4a1b7d484 (Fcall_interactively): Use markers temporarily in
Richard M. Stallman <rms@gnu.org>
parents: 10756
diff changeset
864 /* 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
865 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
866 for (i = 1; i <= count; i++)
10803
b8c4a1b7d484 (Fcall_interactively): Use markers temporarily in
Richard M. Stallman <rms@gnu.org>
parents: 10756
diff changeset
867 if (varies[i] >= 1 && varies[i] <= 4)
b8c4a1b7d484 (Fcall_interactively): Use markers temporarily in
Richard M. Stallman <rms@gnu.org>
parents: 10756
diff changeset
868 XSETINT (args[i], marker_position (args[i]));
b8c4a1b7d484 (Fcall_interactively): Use markers temporarily in
Richard M. Stallman <rms@gnu.org>
parents: 10756
diff changeset
869
48527
ba7cb9f8dfc3 (Fcall_interactively): If a command fails because
Richard M. Stallman <rms@gnu.org>
parents: 48150
diff changeset
870 if (record_then_fail)
ba7cb9f8dfc3 (Fcall_interactively): If a command fails because
Richard M. Stallman <rms@gnu.org>
parents: 48150
diff changeset
871 Fbarf_if_buffer_read_only ();
ba7cb9f8dfc3 (Fcall_interactively): If a command fails because
Richard M. Stallman <rms@gnu.org>
parents: 48150
diff changeset
872
52374
1b48f538540b (Fcall_interactively): Save and restore Vthis_command, Vthis_original_command,
Richard M. Stallman <rms@gnu.org>
parents: 51048
diff changeset
873 Vthis_command = save_this_command;
1b48f538540b (Fcall_interactively): Save and restore Vthis_command, Vthis_original_command,
Richard M. Stallman <rms@gnu.org>
parents: 51048
diff changeset
874 Vthis_original_command = save_this_original_command;
1b48f538540b (Fcall_interactively): Save and restore Vthis_command, Vthis_original_command,
Richard M. Stallman <rms@gnu.org>
parents: 51048
diff changeset
875 real_this_command= save_real_this_command;
1b48f538540b (Fcall_interactively): Save and restore Vthis_command, Vthis_original_command,
Richard M. Stallman <rms@gnu.org>
parents: 51048
diff changeset
876 current_kboard->Vlast_command = save_last_command;
1b48f538540b (Fcall_interactively): Save and restore Vthis_command, Vthis_original_command,
Richard M. Stallman <rms@gnu.org>
parents: 51048
diff changeset
877
11345
c4adea8f7543 (Fcall_interactively): Call single_kboard_state
Richard M. Stallman <rms@gnu.org>
parents: 11280
diff changeset
878 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
879
407
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 Lisp_Object val;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
882 specbind (Qcommand_debug_status, Qnil);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
883
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
884 val = Ffuncall (count + 1, args);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
885 UNGCPRO;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
886 return unbind_to (speccount, val);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
887 }
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48630
diff changeset
888 }
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
889
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
890 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
891 1, 1, 0,
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
892 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
893 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
894 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
895 (raw)
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
896 Lisp_Object raw;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
897 {
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
898 Lisp_Object val;
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48630
diff changeset
899
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 438
diff changeset
900 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
901 XSETFASTINT (val, 1);
819
5bbabfcef929 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 732
diff changeset
902 else if (EQ (raw, Qminus))
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
903 XSETINT (val, -1);
25645
a14111a2a100 Use XCAR, XCDR, XFLOAT_DATA instead of explicit member access.
Ken Raeburn <raeburn@raeburn.org>
parents: 24911
diff changeset
904 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
905 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
906 else if (INTEGERP (raw))
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
907 val = raw;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
908 else
9298
6e3aea54fc01 (Fcall_interactively, Fprefix_numeric_value): Don't use XFASTINT as an lvalue.
Karl Heuer <kwzh@gnu.org>
parents: 9290
diff changeset
909 XSETFASTINT (val, 1);
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
910
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
911 return val;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
912 }
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
913
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 21244
diff changeset
914 void
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
915 syms_of_callint ()
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
916 {
10803
b8c4a1b7d484 (Fcall_interactively): Use markers temporarily in
Richard M. Stallman <rms@gnu.org>
parents: 10756
diff changeset
917 point_marker = Fmake_marker ();
b8c4a1b7d484 (Fcall_interactively): Use markers temporarily in
Richard M. Stallman <rms@gnu.org>
parents: 10756
diff changeset
918 staticpro (&point_marker);
b8c4a1b7d484 (Fcall_interactively): Use markers temporarily in
Richard M. Stallman <rms@gnu.org>
parents: 10756
diff changeset
919
1498
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
920 preserved_fns = Fcons (intern ("region-beginning"),
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
921 Fcons (intern ("region-end"),
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
922 Fcons (intern ("point"),
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
923 Fcons (intern ("mark"), Qnil))));
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
924 staticpro (&preserved_fns);
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
925
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
926 Qlist = intern ("list");
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
927 staticpro (&Qlist);
13447
8c89b569cfa9 (syms_of_callint): Set up Qlet, Qletx, Qsave_excursion.
Richard M. Stallman <rms@gnu.org>
parents: 13308
diff changeset
928 Qlet = intern ("let");
8c89b569cfa9 (syms_of_callint): Set up Qlet, Qletx, Qsave_excursion.
Richard M. Stallman <rms@gnu.org>
parents: 13308
diff changeset
929 staticpro (&Qlet);
49932
2f5cdffaaa04 (fix_command): New subroutine, from Fcall_interactively.
Richard M. Stallman <rms@gnu.org>
parents: 49600
diff changeset
930 Qif = intern ("if");
2f5cdffaaa04 (fix_command): New subroutine, from Fcall_interactively.
Richard M. Stallman <rms@gnu.org>
parents: 49600
diff changeset
931 staticpro (&Qif);
2f5cdffaaa04 (fix_command): New subroutine, from Fcall_interactively.
Richard M. Stallman <rms@gnu.org>
parents: 49600
diff changeset
932 Qwhen = intern ("when");
2f5cdffaaa04 (fix_command): New subroutine, from Fcall_interactively.
Richard M. Stallman <rms@gnu.org>
parents: 49600
diff changeset
933 staticpro (&Qwhen);
13447
8c89b569cfa9 (syms_of_callint): Set up Qlet, Qletx, Qsave_excursion.
Richard M. Stallman <rms@gnu.org>
parents: 13308
diff changeset
934 Qletx = intern ("let*");
8c89b569cfa9 (syms_of_callint): Set up Qlet, Qletx, Qsave_excursion.
Richard M. Stallman <rms@gnu.org>
parents: 13308
diff changeset
935 staticpro (&Qletx);
8c89b569cfa9 (syms_of_callint): Set up Qlet, Qletx, Qsave_excursion.
Richard M. Stallman <rms@gnu.org>
parents: 13308
diff changeset
936 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
937 staticpro (&Qsave_excursion);
48150
2b5f7e1254d1 (Fcall_interactively): New local filter_specs.
Richard M. Stallman <rms@gnu.org>
parents: 46370
diff changeset
938 Qprogn = intern ("progn");
2b5f7e1254d1 (Fcall_interactively): New local filter_specs.
Richard M. Stallman <rms@gnu.org>
parents: 46370
diff changeset
939 staticpro (&Qprogn);
1498
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
940
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
941 Qminus = intern ("-");
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
942 staticpro (&Qminus);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
943
9100
7dacd83e0fe0 (Qplus): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 8819
diff changeset
944 Qplus = intern ("+");
7dacd83e0fe0 (Qplus): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 8819
diff changeset
945 staticpro (&Qplus);
7dacd83e0fe0 (Qplus): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 8819
diff changeset
946
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
947 Qcall_interactively = intern ("call-interactively");
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
948 staticpro (&Qcall_interactively);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
949
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
950 Qcommand_debug_status = intern ("command-debug-status");
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
951 staticpro (&Qcommand_debug_status);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
952
873
0abaf590e0ca entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 863
diff changeset
953 Qenable_recursive_minibuffers = intern ("enable-recursive-minibuffers");
0abaf590e0ca entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 863
diff changeset
954 staticpro (&Qenable_recursive_minibuffers);
0abaf590e0ca entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 863
diff changeset
955
10279
89cf458ed188 (Vmouse_leave_buffer_hook, Qmouse_leave_buffer_hook): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 9342
diff changeset
956 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
957 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
958
13142
297a0e21501a (callint_message, callint_message_size): New vars.
Richard M. Stallman <rms@gnu.org>
parents: 12582
diff changeset
959 callint_message_size = 100;
297a0e21501a (callint_message, callint_message_size): New vars.
Richard M. Stallman <rms@gnu.org>
parents: 12582
diff changeset
960 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
961
297a0e21501a (callint_message, callint_message_size): New vars.
Richard M. Stallman <rms@gnu.org>
parents: 12582
diff changeset
962
12117
3fa5b6e7ad4b (current_prefix_partial): Deleted.
Karl Heuer <kwzh@gnu.org>
parents: 11911
diff changeset
963 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
964 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
965 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
966 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
967 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
968
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39973
diff changeset
969 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
970 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
971 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
972 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
973
22383
9ef0fe84c5ed (syms_of_callint): Set up Lisp variable.
Richard M. Stallman <rms@gnu.org>
parents: 22244
diff changeset
974 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
975 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
976 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
977
10857
2b9faff73319 (Fcall_interactively, syms_of_callint, Vprefix_arg, Vcurrent_prefix_arg): Undo
Karl Heuer <kwzh@gnu.org>
parents: 10846
diff changeset
978 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
979 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
980 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
981 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
982 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
983 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
984 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
985
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
986 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
987 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
988 Each command is represented as a form to evaluate. */);
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
989 Vcommand_history = Qnil;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
990
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
991 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
992 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
993 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
994 may be set by the debugger as a reminder for itself. */);
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
995 Vcommand_debug_status = Qnil;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
996
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
997 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
998 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
999 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
1000 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
1001 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
1002 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
1003 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
1004
10279
89cf458ed188 (Vmouse_leave_buffer_hook, Qmouse_leave_buffer_hook): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 9342
diff changeset
1005 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
1006 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
1007 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
1008 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
1009 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
1010
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
1011 defsubr (&Sinteractive);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
1012 defsubr (&Scall_interactively);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
1013 defsubr (&Sprefix_numeric_value);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
1014 }
52401
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 52374
diff changeset
1015
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 52374
diff changeset
1016 /* arch-tag: a3a7cad7-bcac-42ce-916e-1bd2546ebf37
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 52374
diff changeset
1017 (do not change this comment) */