annotate src/callint.c @ 2576:48318133e7a6

(tex-compilation-parse-errors): Added. At the moment, this would have to be applied manually. It's not worth trying to integrate this with the rest of the mode more tightly until we decide whether and how compile's interface is going to change away from a closed subsystem.
author Eric S. Raymond <esr@snark.thyrsus.com>
date Sun, 25 Apr 1993 06:14:10 +0000
parents 8cf58355e8a1
children 718280a1ba74
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.
2048
8cf58355e8a1 (check_mark): Error if mark is not active.
Richard M. Stallman <rms@gnu.org>
parents: 1926
diff changeset
2 Copyright (C) 1985, 1986, 1993 Free Software Foundation, Inc.
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
3
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
4 This file is part of GNU Emacs.
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
5
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
6 GNU Emacs is free software; you can redistribute it and/or modify
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
7 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
8 the Free Software Foundation; either version 2, or (at your option)
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
9 any later version.
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
10
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
11 GNU Emacs is distributed in the hope that it will be useful,
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
14 GNU General Public License for more details.
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
15
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
16 You should have received a copy of the GNU General Public License
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
17 along with GNU Emacs; see the file COPYING. If not, write to
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
18 the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
19
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
20
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
21 #include "config.h"
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
22 #include "lisp.h"
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
23 #include "buffer.h"
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
24 #include "commands.h"
516
ccadad491483 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 485
diff changeset
25 #include "keyboard.h"
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
26 #include "window.h"
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
27 #include "mocklisp.h"
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
28
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
29 extern char *index ();
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
30
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
31 Lisp_Object Vprefix_arg, Vcurrent_prefix_arg, Qminus;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
32 Lisp_Object Qcall_interactively;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
33 Lisp_Object Vcommand_history;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
34
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
35 Lisp_Object Vcommand_debug_status, Qcommand_debug_status;
873
0abaf590e0ca entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 863
diff changeset
36 Lisp_Object Qenable_recursive_minibuffers;
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
37
1498
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
38 Lisp_Object Qlist;
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
39 Lisp_Object preserved_fns;
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
40
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
41 /* This comment supplies the doc string for interactive,
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
42 for make-docfile to see. We cannot put this in the real DEFUN
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
43 due to limits in the Unix cpp.
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
44
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
45 DEFUN ("interactive", Ffoo, Sfoo, 0, 0, 0,
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
46 "Specify a way of parsing arguments for interactive use of a function.\n\
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
47 For example, write\n\
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
48 (defun foo (arg) \"Doc string\" (interactive \"p\") ...use arg...)\n\
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
49 to make ARG be the prefix argument when `foo' is called as a command.\n\
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
50 The \"call\" to `interactive' is actually a declaration rather than a function;\n\
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
51 it tells `call-interactively' how to read arguments\n\
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
52 to pass to the function.\n\
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
53 When actually called, `interactive' just returns nil.\n\
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
54 \n\
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
55 The argument of `interactive' is usually a string containing a code letter\n\
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
56 followed by a prompt. (Some code letters do not use I/O to get\n\
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
57 the argument and do not need prompts.) To prompt for multiple arguments,\n\
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
58 give a code letter, its prompt, a newline, and another code letter, etc.\n\
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
59 Prompts are passed to format, and may use % escapes to print the\n\
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
60 arguments that have already been read.\n\
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
61 If the argument is not a string, it is evaluated to get a list of\n\
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
62 arguments to pass to the function.\n\
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
63 Just `(interactive)' means pass no args when calling interactively.\n\
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
64 \nCode letters available are:\n\
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
65 a -- Function name: symbol with a function definition.\n\
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
66 b -- Name of existing buffer.\n\
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
67 B -- Name of buffer, possibly nonexistent.\n\
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
68 c -- Character.\n\
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
69 C -- Command name: symbol with interactive function definition.\n\
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
70 d -- Value of point as number. Does not do I/O.\n\
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
71 D -- Directory name.\n\
2048
8cf58355e8a1 (check_mark): Error if mark is not active.
Richard M. Stallman <rms@gnu.org>
parents: 1926
diff changeset
72 e -- Parametrized event (i.e., one that's a list) that invoked this command.\n\
8cf58355e8a1 (check_mark): Error if mark is not active.
Richard M. Stallman <rms@gnu.org>
parents: 1926
diff changeset
73 If used more than once, the Nth `e' returns the Nth parameterized event.\n\
8cf58355e8a1 (check_mark): Error if mark is not active.
Richard M. Stallman <rms@gnu.org>
parents: 1926
diff changeset
74 This skips events that are integers or symbols.\n\
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
75 f -- Existing file name.\n\
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
76 F -- Possibly nonexistent file name.\n\
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
77 k -- Key sequence (string).\n\
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
78 m -- Value of mark as number. Does not do I/O.\n\
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
79 n -- Number read using minibuffer.\n\
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
80 N -- Prefix arg converted to number, or if none, do like code `n'.\n\
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
81 p -- Prefix arg converted to number. Does not do I/O.\n\
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
82 P -- Prefix arg in raw form. Does not do I/O.\n\
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
83 r -- Region: point and mark as 2 numeric args, smallest first. Does no I/O.\n\
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
84 s -- Any string.\n\
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
85 S -- Any symbol.\n\
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
86 v -- Variable name: symbol that is user-variable-p.\n\
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
87 x -- Lisp expression read but not evaluated.\n\
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
88 X -- Lisp expression read and evaluated.\n\
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
89 In addition, if the string begins with `*'\n\
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
90 then an error is signaled if the buffer is read-only.\n\
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
91 This happens before reading any arguments.\n\
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1693
diff changeset
92 If the string begins with `@', then Emacs searches the key sequence\n\
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1693
diff changeset
93 which invoked the command for its first mouse click (or any other\n\
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1693
diff changeset
94 event which specifies a window), and selects that window before\n\
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1693
diff changeset
95 reading any arguments. You may use both `@' and `*'; they are\n\
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1693
diff changeset
96 processed in the order that they appear." */
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
97
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
98 /* ARGSUSED */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
99 DEFUN ("interactive", Finteractive, Sinteractive, 0, UNEVALLED, 0,
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
100 0 /* See immediately above */)
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
101 (args)
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
102 Lisp_Object args;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
103 {
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
104 return Qnil;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
105 }
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
106
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
107 /* Quotify EXP: if EXP is constant, return it.
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
108 If EXP is not constant, return (quote EXP). */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
109 Lisp_Object
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
110 quotify_arg (exp)
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
111 register Lisp_Object exp;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
112 {
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
113 if (XTYPE (exp) != Lisp_Int && XTYPE (exp) != Lisp_String
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 438
diff changeset
114 && !NILP (exp) && !EQ (exp, Qt))
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
115 return Fcons (Qquote, Fcons (exp, Qnil));
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
116
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
117 return exp;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
118 }
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
119
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
120 /* Modify EXP by quotifying each element (except the first). */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
121 Lisp_Object
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
122 quotify_args (exp)
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
123 Lisp_Object exp;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
124 {
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
125 register Lisp_Object tail;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
126 register struct Lisp_Cons *ptr;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
127 for (tail = exp; CONSP (tail); tail = ptr->cdr)
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
128 {
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
129 ptr = XCONS (tail);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
130 ptr->car = quotify_arg (ptr->car);
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 exp;
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 char *callint_argfuns[]
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
136 = {"", "point", "mark", "region-beginning", "region-end"};
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
137
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
138 static void
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
139 check_mark ()
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
140 {
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
141 Lisp_Object tem = Fmarker_buffer (current_buffer->mark);
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 438
diff changeset
142 if (NILP (tem) || (XBUFFER (tem) != current_buffer))
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
143 error ("The mark is not set now");
2048
8cf58355e8a1 (check_mark): Error if mark is not active.
Richard M. Stallman <rms@gnu.org>
parents: 1926
diff changeset
144 if (NILP (current_buffer->mark_active))
8cf58355e8a1 (check_mark): Error if mark is not active.
Richard M. Stallman <rms@gnu.org>
parents: 1926
diff changeset
145 error ("The mark is not active now");
407
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
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
149 DEFUN ("call-interactively", Fcall_interactively, Scall_interactively, 1, 2, 0,
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
150 "Call FUNCTION, reading args according to its interactive calling specs.\n\
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
151 The function contains a specification of how to do the argument reading.\n\
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
152 In the case of user-defined functions, this is specified by placing a call\n\
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
153 to the function `interactive' at the top level of the function body.\n\
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
154 See `interactive'.\n\
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
155 \n\
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
156 Optional second arg RECORD-FLAG non-nil\n\
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
157 means unconditionally put this command in the command-history.\n\
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
158 Otherwise, this is done only if an arg is read using the minibuffer.")
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
159 (function, record)
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
160 Lisp_Object function, record;
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 Lisp_Object *args, *visargs;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
163 unsigned char **argstrings;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
164 Lisp_Object fun;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
165 Lisp_Object funcar;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
166 Lisp_Object specs;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
167 Lisp_Object teml;
873
0abaf590e0ca entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 863
diff changeset
168 Lisp_Object enable;
0abaf590e0ca entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 863
diff changeset
169 int speccount = specpdl_ptr - specpdl;
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
170
1383
54028d2538a4 * callint.c (Fcall_interactively): Allow multiple 'e' specs.
Jim Blandy <jimb@redhat.com>
parents: 1347
diff changeset
171 /* 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
172 the 'e' interactive code. */
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1693
diff changeset
173 int next_event;
1383
54028d2538a4 * callint.c (Fcall_interactively): Allow multiple 'e' specs.
Jim Blandy <jimb@redhat.com>
parents: 1347
diff changeset
174
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
175 Lisp_Object prefix_arg;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
176 unsigned char *string;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
177 unsigned char *tem;
438
8b54ee2c82d6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 407
diff changeset
178
8b54ee2c82d6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 407
diff changeset
179 /* 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
180 in this call quoted in the command history. It should be
8b54ee2c82d6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 407
diff changeset
181 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
182 int *varies;
438
8b54ee2c82d6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 407
diff changeset
183
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
184 register int i, j;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
185 int count, foo;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
186 char prompt[100];
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
187 char prompt1[100];
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
188 char *tem1;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
189 int arg_from_tty = 0;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
190 struct gcpro gcpro1, gcpro2, gcpro3, gcpro4;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
191
732
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 648
diff changeset
192 /* Save this now, since use of minibuffer will clobber it. */
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
193 prefix_arg = Vcurrent_prefix_arg;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
194
617
cde1f15848c6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 516
diff changeset
195 retry:
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
196
1115
eb7f1ab33a9d * callint.c (Fcall_interactively): Remove the 'K' interactive
Jim Blandy <jimb@redhat.com>
parents: 1084
diff changeset
197 if (XTYPE (function) == Lisp_Symbol)
eb7f1ab33a9d * callint.c (Fcall_interactively): Remove the 'K' interactive
Jim Blandy <jimb@redhat.com>
parents: 1084
diff changeset
198 enable = Fget (function, Qenable_recursive_minibuffers);
873
0abaf590e0ca entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 863
diff changeset
199
648
70b112526394 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 644
diff changeset
200 fun = indirect_function (function);
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
201
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
202 specs = Qnil;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
203 string = 0;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
204
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
205 /* Decode the kind of function. Either handle it and return,
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
206 or go to `lose' if not interactive, or go to `retry'
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
207 to specify a different function, or set either STRING or SPECS. */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
208
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
209 if (XTYPE (fun) == Lisp_Subr)
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
210 {
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
211 string = (unsigned char *) XSUBR (fun)->prompt;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
212 if (!string)
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
213 {
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
214 lose:
1926
952f2a18f83d * callint.c (Fcall_interactively): Pass the correct number of
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
215 function = wrong_type_argument (Qcommandp, function);
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
216 goto retry;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
217 }
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
218 if ((int) string == 1)
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
219 /* Let SPECS (which is nil) be used as the args. */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
220 string = 0;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
221 }
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
222 else if (XTYPE (fun) == Lisp_Compiled)
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
223 {
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
224 if (XVECTOR (fun)->size <= COMPILED_INTERACTIVE)
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
225 goto lose;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
226 specs = XVECTOR (fun)->contents[COMPILED_INTERACTIVE];
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
227 }
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
228 else if (!CONSP (fun))
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
229 goto lose;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
230 else if (funcar = Fcar (fun), EQ (funcar, Qautoload))
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
231 {
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
232 GCPRO2 (function, prefix_arg);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
233 do_autoload (fun, function);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
234 UNGCPRO;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
235 goto retry;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
236 }
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
237 else if (EQ (funcar, Qlambda))
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
238 {
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
239 specs = Fassq (Qinteractive, Fcdr (Fcdr (fun)));
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 438
diff changeset
240 if (NILP (specs))
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
241 goto lose;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
242 specs = Fcar (Fcdr (specs));
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
243 }
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
244 else if (EQ (funcar, Qmocklisp))
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
245 return ml_apply (fun, Qinteractive);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
246 else
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
247 goto lose;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
248
617
cde1f15848c6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 516
diff changeset
249 /* If either specs or string is set to a string, use it. */
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
250 if (XTYPE (specs) == Lisp_String)
617
cde1f15848c6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 516
diff changeset
251 {
cde1f15848c6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 516
diff changeset
252 /* 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
253 `string' will still be valid. */
732
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 648
diff changeset
254 string = (unsigned char *) alloca (XSTRING (specs)->size + 1);
617
cde1f15848c6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 516
diff changeset
255 bcopy (XSTRING (specs)->data, string, XSTRING (specs)->size + 1);
cde1f15848c6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 516
diff changeset
256 }
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
257 else if (string == 0)
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
258 {
1498
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
259 Lisp_Object input;
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
260 i = num_input_chars;
1498
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
261 input = specs;
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
262 /* Compute the arg values using the user's expression. */
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
263 specs = Feval (specs);
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 438
diff changeset
264 if (i != num_input_chars || !NILP (record))
1498
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
265 {
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
266 /* We should record this command on the command history. */
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
267 Lisp_Object values, car;
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
268 /* 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
269 and turn them into things we can eval. */
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
270 values = quotify_args (Fcopy_sequence (specs));
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
271 /* If the list of args was produced with an explicit call to `list',
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
272 look for elements that were computed with (region-beginning)
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
273 or (region-end), and put those expressions into VALUES
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
274 instead of the present values. */
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
275 car = Fcar (input);
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
276 if (EQ (car, Qlist))
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
277 {
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
278 Lisp_Object intail, valtail;
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
279 for (intail = Fcdr (input), valtail = values;
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
280 CONSP (valtail);
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
281 intail = Fcdr (intail), valtail = Fcdr (valtail))
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
282 {
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
283 Lisp_Object elt;
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
284 elt = Fcar (intail);
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
285 if (CONSP (elt))
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
286 {
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
287 Lisp_Object presflag;
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
288 presflag = Fmemq (Fcar (elt), preserved_fns);
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
289 if (!NILP (presflag))
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
290 Fsetcar (valtail, Fcar (intail));
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
291 }
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
292 }
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
293 }
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
294 Vcommand_history
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
295 = Fcons (Fcons (function, values), Vcommand_history);
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
296 }
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
297 return apply1 (function, specs);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
298 }
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
299
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
300 /* Here if function specifies a string to control parsing the defaults */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
301
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1693
diff changeset
302 /* Set next_event to point to the first event with parameters. */
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1693
diff changeset
303 for (next_event = 0; next_event < this_command_key_count; next_event++)
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1693
diff changeset
304 if (EVENT_HAS_PARAMETERS
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1693
diff changeset
305 (XVECTOR (this_command_keys)->contents[next_event]))
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1693
diff changeset
306 break;
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1693
diff changeset
307
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
308 /* Handle special starting chars `*' and `@'. */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
309 while (1)
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
310 {
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
311 if (*string == '*')
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
312 {
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
313 string++;
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 438
diff changeset
314 if (!NILP (current_buffer->read_only))
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
315 Fbarf_if_buffer_read_only ();
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
316 }
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
317 else if (*string == '@')
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
318 {
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1693
diff changeset
319 Lisp_Object event =
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1693
diff changeset
320 XVECTOR (this_command_keys)->contents[next_event];
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1693
diff changeset
321
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1693
diff changeset
322 if (EVENT_HAS_PARAMETERS (event)
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1693
diff changeset
323 && XTYPE (event = XCONS (event)->cdr) == Lisp_Cons
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1693
diff changeset
324 && XTYPE (event = XCONS (event)->car) == Lisp_Cons
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1693
diff changeset
325 && XTYPE (event = XCONS (event)->car) == Lisp_Window)
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1693
diff changeset
326 Fselect_window (event);
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
327 string++;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
328 }
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
329 else break;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
330 }
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
331
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
332 /* Count the number of arguments the interactive spec would have
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
333 us give to the function. */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
334 tem = string;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
335 for (j = 0; *tem; j++)
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
336 {
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
337 /* 'r' specifications ("point and mark as 2 numeric args")
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
338 produce *two* arguments. */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
339 if (*tem == 'r') j++;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
340 tem = (unsigned char *) index (tem, '\n');
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
341 if (tem)
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
342 tem++;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
343 else
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
344 tem = (unsigned char *) "";
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
345 }
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
346 count = j;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
347
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
348 args = (Lisp_Object *) alloca ((count + 1) * sizeof (Lisp_Object));
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
349 visargs = (Lisp_Object *) alloca ((count + 1) * sizeof (Lisp_Object));
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
350 argstrings = (unsigned char **) alloca ((count + 1) * sizeof (char *));
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
351 varies = (int *) alloca ((count + 1) * sizeof (int));
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
352
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
353 for (i = 0; i < (count + 1); i++)
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
354 {
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
355 args[i] = Qnil;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
356 visargs[i] = Qnil;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
357 varies[i] = 0;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
358 }
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
359
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
360 GCPRO4 (prefix_arg, function, *args, *visargs);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
361 gcpro3.nvars = (count + 1);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
362 gcpro4.nvars = (count + 1);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
363
873
0abaf590e0ca entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 863
diff changeset
364 if (!NILP (enable))
0abaf590e0ca entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 863
diff changeset
365 specbind (Qenable_recursive_minibuffers, Qt);
0abaf590e0ca entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 863
diff changeset
366
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
367 tem = string;
617
cde1f15848c6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 516
diff changeset
368 for (i = 1; *tem; i++)
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
369 {
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
370 strncpy (prompt1, tem + 1, sizeof prompt1 - 1);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
371 prompt1[sizeof prompt1 - 1] = 0;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
372 tem1 = index (prompt1, '\n');
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
373 if (tem1) *tem1 = 0;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
374 /* Fill argstrings with a vector of C strings
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
375 corresponding to the Lisp strings in visargs. */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
376 for (j = 1; j < i; j++)
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
377 argstrings[j]
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
378 = EQ (visargs[j], Qnil)
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
379 ? (unsigned char *) ""
617
cde1f15848c6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 516
diff changeset
380 : XSTRING (visargs[j])->data;
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
381
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
382 doprnt (prompt, sizeof prompt, prompt1, 0, j - 1, argstrings + 1);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
383
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
384 switch (*tem)
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
385 {
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
386 case 'a': /* Symbol defined as a function */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
387 visargs[i] = Fcompleting_read (build_string (prompt),
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
388 Vobarray, Qfboundp, Qt, Qnil, Qnil);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
389 /* Passing args[i] directly stimulates compiler bug */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
390 teml = visargs[i];
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
391 args[i] = Fintern (teml, Qnil);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
392 break;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
393
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
394 case 'b': /* Name of existing buffer */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
395 args[i] = Fcurrent_buffer ();
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
396 if (EQ (selected_window, minibuf_window))
1347
ac3a893b9bb9 (Fcall_interactively): Pass 2nd arg to Fother_buffer.
Richard M. Stallman <rms@gnu.org>
parents: 1115
diff changeset
397 args[i] = Fother_buffer (args[i], Qnil);
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
398 args[i] = Fread_buffer (build_string (prompt), args[i], Qt);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
399 break;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
400
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
401 case 'B': /* Name of buffer, possibly nonexistent */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
402 args[i] = Fread_buffer (build_string (prompt),
1347
ac3a893b9bb9 (Fcall_interactively): Pass 2nd arg to Fother_buffer.
Richard M. Stallman <rms@gnu.org>
parents: 1115
diff changeset
403 Fother_buffer (Fcurrent_buffer (), Qnil),
ac3a893b9bb9 (Fcall_interactively): Pass 2nd arg to Fother_buffer.
Richard M. Stallman <rms@gnu.org>
parents: 1115
diff changeset
404 Qnil);
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
405 break;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
406
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
407 case 'c': /* Character */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
408 message1 (prompt);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
409 args[i] = Fread_char ();
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
410 /* Passing args[i] directly stimulates compiler bug */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
411 teml = args[i];
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
412 visargs[i] = Fchar_to_string (teml);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
413 break;
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 case 'C': /* Command: symbol with interactive function */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
416 visargs[i] = Fcompleting_read (build_string (prompt),
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
417 Vobarray, Qcommandp, Qt, Qnil, Qnil);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
418 /* Passing args[i] directly stimulates compiler bug */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
419 teml = visargs[i];
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
420 args[i] = Fintern (teml, Qnil);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
421 break;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
422
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
423 case 'd': /* Value of point. Does not do I/O. */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
424 XFASTINT (args[i]) = point;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
425 /* visargs[i] = Qnil; */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
426 varies[i] = 1;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
427 break;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
428
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
429 case 'D': /* Directory name. */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
430 args[i] = Fread_file_name (build_string (prompt), Qnil,
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
431 current_buffer->directory, Qlambda, Qnil);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
432 break;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
433
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
434 case 'f': /* Existing file name. */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
435 args[i] = Fread_file_name (build_string (prompt),
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
436 Qnil, Qnil, Qlambda, Qnil);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
437 break;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
438
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
439 case 'F': /* Possibly nonexistent file name. */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
440 args[i] = Fread_file_name (build_string (prompt),
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
441 Qnil, Qnil, Qnil, Qnil);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
442 break;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
443
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
444 case 'k': /* Key sequence (string) */
438
8b54ee2c82d6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 407
diff changeset
445 args[i] = Fread_key_sequence (build_string (prompt), Qnil);
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
446 teml = args[i];
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
447 visargs[i] = Fkey_description (teml);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
448 break;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
449
1383
54028d2538a4 * callint.c (Fcall_interactively): Allow multiple 'e' specs.
Jim Blandy <jimb@redhat.com>
parents: 1347
diff changeset
450 case 'e': /* The invoking event. */
54028d2538a4 * callint.c (Fcall_interactively): Allow multiple 'e' specs.
Jim Blandy <jimb@redhat.com>
parents: 1347
diff changeset
451 if (next_event >= this_command_key_count)
54028d2538a4 * callint.c (Fcall_interactively): Allow multiple 'e' specs.
Jim Blandy <jimb@redhat.com>
parents: 1347
diff changeset
452 error ("%s must be bound to an event with parameters",
438
8b54ee2c82d6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 407
diff changeset
453 (XTYPE (function) == Lisp_Symbol
8b54ee2c82d6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 407
diff changeset
454 ? (char *) XSYMBOL (function)->name->data
1383
54028d2538a4 * callint.c (Fcall_interactively): Allow multiple 'e' specs.
Jim Blandy <jimb@redhat.com>
parents: 1347
diff changeset
455 : "command"));
1425
2c156e9908ad * callint.c (Fcall_interactively): Change handling of 'e' spec;
Jim Blandy <jimb@redhat.com>
parents: 1383
diff changeset
456 args[i] = XVECTOR (this_command_keys)->contents[next_event++];
732
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 648
diff changeset
457 varies[i] = -1;
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1693
diff changeset
458
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1693
diff changeset
459 /* Find the next parameterized event. */
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1693
diff changeset
460 while (next_event < this_command_key_count
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1693
diff changeset
461 && ! (EVENT_HAS_PARAMETERS
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1693
diff changeset
462 (XVECTOR (this_command_keys)->contents[next_event])))
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1693
diff changeset
463 next_event++;
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1693
diff changeset
464
438
8b54ee2c82d6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 407
diff changeset
465 break;
8b54ee2c82d6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 407
diff changeset
466
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
467 case 'm': /* Value of mark. Does not do I/O. */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
468 check_mark ();
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
469 /* visargs[i] = Qnil; */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
470 XFASTINT (args[i]) = marker_position (current_buffer->mark);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
471 varies[i] = 2;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
472 break;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
473
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
474 case 'N': /* Prefix arg, else number from minibuffer */
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 438
diff changeset
475 if (!NILP (prefix_arg))
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
476 goto have_prefix_arg;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
477 case 'n': /* Read number from minibuffer. */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
478 do
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
479 args[i] = Fread_minibuffer (build_string (prompt), Qnil);
621
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 617
diff changeset
480 while (! NUMBERP (args[i]));
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
481 visargs[i] = last_minibuf_string;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
482 break;
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 case 'P': /* Prefix arg in raw form. Does no I/O. */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
485 have_prefix_arg:
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
486 args[i] = prefix_arg;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
487 /* visargs[i] = Qnil; */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
488 varies[i] = -1;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
489 break;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
490
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
491 case 'p': /* Prefix arg converted to number. No I/O. */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
492 args[i] = Fprefix_numeric_value (prefix_arg);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
493 /* visargs[i] = Qnil; */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
494 varies[i] = -1;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
495 break;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
496
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
497 case 'r': /* Region, point and mark as 2 args. */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
498 check_mark ();
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
499 /* visargs[i+1] = Qnil; */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
500 foo = marker_position (current_buffer->mark);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
501 /* visargs[i] = Qnil; */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
502 XFASTINT (args[i]) = point < foo ? point : foo;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
503 varies[i] = 3;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
504 XFASTINT (args[++i]) = point > foo ? point : foo;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
505 varies[i] = 4;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
506 break;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
507
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
508 case 's': /* String read via minibuffer. */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
509 args[i] = Fread_string (build_string (prompt), Qnil);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
510 break;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
511
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
512 case 'S': /* Any symbol. */
1693
4b2f399dbea2 (Fcall_interactively): For `s', use Fread_string.
Richard M. Stallman <rms@gnu.org>
parents: 1498
diff changeset
513 visargs[i] = Fread_string (build_string (prompt), Qnil);
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
514 /* Passing args[i] directly stimulates compiler bug */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
515 teml = visargs[i];
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
516 args[i] = Fintern (teml, Qnil);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
517 break;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
518
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
519 case 'v': /* Variable name: symbol that is
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
520 user-variable-p. */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
521 args[i] = Fread_variable (build_string (prompt));
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
522 visargs[i] = last_minibuf_string;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
523 break;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
524
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
525 case 'x': /* Lisp expression read but not evaluated */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
526 args[i] = Fread_minibuffer (build_string (prompt), Qnil);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
527 visargs[i] = last_minibuf_string;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
528 break;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
529
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
530 case 'X': /* Lisp expression read and evaluated */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
531 args[i] = Feval_minibuffer (build_string (prompt), Qnil);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
532 visargs[i] = last_minibuf_string;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
533 break;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
534
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
535 default:
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
536 error ("Invalid control letter \"%c\" (%03o) in interactive calling string",
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
537 *tem, *tem);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
538 }
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
539
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
540 if (varies[i] == 0)
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
541 arg_from_tty = 1;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
542
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 438
diff changeset
543 if (NILP (visargs[i]) && XTYPE (args[i]) == Lisp_String)
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
544 visargs[i] = args[i];
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
545
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
546 tem = (unsigned char *) index (tem, '\n');
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
547 if (tem) tem++;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
548 else tem = (unsigned char *) "";
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
549 }
873
0abaf590e0ca entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 863
diff changeset
550 unbind_to (speccount, Qnil);
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
551
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
552 QUIT;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
553
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
554 args[0] = function;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
555
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 438
diff changeset
556 if (arg_from_tty || !NILP (record))
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
557 {
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
558 visargs[0] = function;
438
8b54ee2c82d6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 407
diff changeset
559 for (i = 1; i < count + 1; i++)
8b54ee2c82d6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 407
diff changeset
560 if (varies[i] > 0)
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
561 visargs[i] = Fcons (intern (callint_argfuns[varies[i]]), Qnil);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
562 else
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
563 visargs[i] = quotify_arg (args[i]);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
564 Vcommand_history = Fcons (Flist (count + 1, visargs),
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
565 Vcommand_history);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
566 }
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
567
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 Lisp_Object val;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
570 specbind (Qcommand_debug_status, Qnil);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
571
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
572 val = Ffuncall (count + 1, args);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
573 UNGCPRO;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
574 return unbind_to (speccount, val);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
575 }
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
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
578 DEFUN ("prefix-numeric-value", Fprefix_numeric_value, Sprefix_numeric_value,
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
579 1, 1, 0,
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
580 "Return numeric meaning of raw prefix argument ARG.\n\
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
581 A raw prefix argument is what you get from `(interactive \"P\")'.\n\
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
582 Its numeric meaning is what you would get from `(interactive \"p\")'.")
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
583 (raw)
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
584 Lisp_Object raw;
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 Lisp_Object val;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
587
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
588 /* Tag val as an integer, so the rest of the assignments
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
589 may use XSETINT. */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
590 XFASTINT (val) = 0;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
591
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 438
diff changeset
592 if (NILP (raw))
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
593 XFASTINT (val) = 1;
819
5bbabfcef929 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 732
diff changeset
594 else if (EQ (raw, Qminus))
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
595 XSETINT (val, -1);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
596 else if (CONSP (raw))
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
597 XSETINT (val, XINT (XCONS (raw)->car));
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
598 else if (XTYPE (raw) == Lisp_Int)
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
599 val = raw;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
600 else
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
601 XFASTINT (val) = 1;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
602
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
603 return val;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
604 }
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
605
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
606 syms_of_callint ()
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
607 {
1498
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
608 preserved_fns = Fcons (intern ("region-beginning"),
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
609 Fcons (intern ("region-end"),
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
610 Fcons (intern ("point"),
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
611 Fcons (intern ("mark"), Qnil))));
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
612 staticpro (&preserved_fns);
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
613
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
614 Qlist = intern ("list");
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
615 staticpro (&Qlist);
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
616
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
617 Qminus = intern ("-");
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
618 staticpro (&Qminus);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
619
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
620 Qcall_interactively = intern ("call-interactively");
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
621 staticpro (&Qcall_interactively);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
622
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
623 Qcommand_debug_status = intern ("command-debug-status");
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
624 staticpro (&Qcommand_debug_status);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
625
873
0abaf590e0ca entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 863
diff changeset
626 Qenable_recursive_minibuffers = intern ("enable-recursive-minibuffers");
0abaf590e0ca entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 863
diff changeset
627 staticpro (&Qenable_recursive_minibuffers);
0abaf590e0ca entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 863
diff changeset
628
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
629 DEFVAR_LISP ("prefix-arg", &Vprefix_arg,
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
630 "The value of the prefix argument for the next editing command.\n\
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
631 It may be a number, or the symbol `-' for just a minus sign as arg,\n\
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
632 or a list whose car is a number for just one or more C-U's\n\
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
633 or nil if no argument has been specified.\n\
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
634 \n\
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
635 You cannot examine this variable to find the argument for this command\n\
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
636 since it has been set to nil by the time you can look.\n\
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
637 Instead, you should use the variable `current-prefix-arg', although\n\
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
638 normally commands can get this prefix argument with (interactive \"P\").");
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
639 Vprefix_arg = Qnil;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
640
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
641 DEFVAR_LISP ("current-prefix-arg", &Vcurrent_prefix_arg,
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
642 "The value of the prefix argument for this editing command.\n\
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
643 It may be a number, or the symbol `-' for just a minus sign as arg,\n\
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
644 or a list whose car is a number for just one or more C-U's\n\
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
645 or nil if no argument has been specified.\n\
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
646 This is what `(interactive \"P\")' returns.");
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
647 Vcurrent_prefix_arg = Qnil;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
648
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
649 DEFVAR_LISP ("command-history", &Vcommand_history,
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
650 "List of recent commands that read arguments from terminal.\n\
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
651 Each command is represented as a form to evaluate.");
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
652 Vcommand_history = Qnil;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
653
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
654 DEFVAR_LISP ("command-debug-status", &Vcommand_debug_status,
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
655 "Debugging status of current interactive command.\n\
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
656 Bound each time `call-interactively' is called;\n\
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
657 may be set by the debugger as a reminder for itself.");
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
658 Vcommand_debug_status = Qnil;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
659
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
660 defsubr (&Sinteractive);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
661 defsubr (&Scall_interactively);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
662 defsubr (&Sprefix_numeric_value);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
663 }