annotate src/callint.c @ 1687:2bee660c3046

* configure: Don't make the top-level Makefile read-only - people may want to edit the values of the path variables. Make path specification conform to GNU coding standards. * configure (long_usage): Remove all traces of old arguments from usage messages, and document the options we do accept in more detail: -with-x... and --srcdir. (options, boolean_opts): Deleted; we don't have enough options to make this worthwhile. (prefix, bindir, lisppath, datadir, libdir, lockdir): Deleted, along with the code which supported them; these should be set as arguments to the top-level make. (config_h_opts): Since this no longer doubles as a list of option names, make them upper case; this simplifies the code which uses them to build the sed command to edit src/config.h. Change the code which sets them. (cc, g, O): Don't allow the user to set these using options; they should be specified using `CC=' and `CFLAGS=' arguments to the top-level make. Just choose reasonable default values for them, and edit them into Makefile.in's default CC and CONFIG_CFLAGS values. (gnu_malloc, rel_alloc): Don't allow the user to set these using options; use them whenever the configuration files say they're possible. Simplify the argument processing loop. Don't accept abbreviations for option names; these might conflict with other configuration options in the future. Add some support for the `--srcdir' option. Check for the sources in . and .. if `--srcdir' is omitted. If the directories we will compile in don't exist yet, create them under the current directory. Note that the rest of the build process doesn't really support this. Edit only the top Makefile. That should edit the others. Edit into the makefile: `version', from lisp/version.el, `configname' and `srcdir' from the configuration arguments, `CC' and `CONFIG_CFLAGS' as guessed from the presence or absence of GCC in the user's path, and LOADLIBES as gleaned from the system description files. Simplify the report generated; it doesn't need to include any description of paths now. Make `config.status' exec configure instead of just calling it, so there's no harm in overwriting `config.status'. * Makefile.in (version, configname): New variables, used to choose the default values for datadir and libdir. Path variables rearranged into two clearer groups: - In the first group are the variables specified by the GNU coding standards (prefix, bindir, datadir, statedir, libdir, mandir, manext, infodir, and srcdir). - In the second are the variables actually used for Emacs's paths (lispdir, locallisppath, lisppath, buildlisppath, etcdir, lockdir, archlibdir), which depend on the first category. datadir and libdir default to directories under ${prefix}/lib/emacs instead of ${prefix}/emacs, by popular demand. etcdir and lispdir default to subdirectories of datadir. archlibdir defaults to libdir. The new installation tree is a bit deeper than it used to be, so use the new make-path program in lib-src to build them all. Always build a new src/paths.h.tmp and then move-if-change it to src/paths.h, to avoid unnecessary rebuilds while responding to the right changes. Remove all mention of arch-lib. Run utility commands from lib-src, and let the executables be copied into archlibdir when Emacs is installed. Add targets for src/Makefile, lib-src/Makefile, and oldXMenu/Makefile, editing the values of the path variables into them. Let lib-src do its own installation. (datadir): Default to putting data files under ${prefix}/lib/emacs/${version}, not /usr/local/emacs. (emacsdir): Variable deleted; it would only be confusing to use. (lispdir, etcdir): Default to ${datadir}/lisp. (mkdir): Use make-path for this. (lockdir): Do this in mkdir. (Makefile): New target. * configure (usage_message): Rename to long_usage.
author Jim Blandy <jimb@redhat.com>
date Sat, 12 Dec 1992 15:42:53 +0000
parents 098464e977d6
children 4b2f399dbea2
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.
617
cde1f15848c6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 516
diff changeset
2 Copyright (C) 1985, 1986, 1992 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
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
8 the Free Software Foundation; either version 1, or (at your option)
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\
1383
54028d2538a4 * callint.c (Fcall_interactively): Allow multiple 'e' specs.
Jim Blandy <jimb@redhat.com>
parents: 1347
diff changeset
72 e -- Event that invoked this command (value of `last-nonmenu-event').\n\
54028d2538a4 * callint.c (Fcall_interactively): Allow multiple 'e' specs.
Jim Blandy <jimb@redhat.com>
parents: 1347
diff changeset
73 This skips events without parameters.\n\
54028d2538a4 * callint.c (Fcall_interactively): Allow multiple 'e' specs.
Jim Blandy <jimb@redhat.com>
parents: 1347
diff changeset
74 If used more than once, the Nth 'e' returns the Nth parameterized event.\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\
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
92 If the string begins with `@', then the window the mouse is over is selected\n\
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
93 before anything else is done. You may use both `@' and `*';\n\
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
94 they are processed in the order that they appear."
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
95 */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
96
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
97 /* ARGSUSED */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
98 DEFUN ("interactive", Finteractive, Sinteractive, 0, UNEVALLED, 0,
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
99 0 /* See immediately above */)
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
100 (args)
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
101 Lisp_Object args;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
102 {
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
103 return Qnil;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
104 }
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 /* Quotify EXP: if EXP is constant, return it.
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
107 If EXP is not constant, return (quote EXP). */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
108 Lisp_Object
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
109 quotify_arg (exp)
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
110 register Lisp_Object exp;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
111 {
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
112 if (XTYPE (exp) != Lisp_Int && XTYPE (exp) != Lisp_String
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 438
diff changeset
113 && !NILP (exp) && !EQ (exp, Qt))
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
114 return Fcons (Qquote, Fcons (exp, Qnil));
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
115
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
116 return exp;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
117 }
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 /* Modify EXP by quotifying each element (except the first). */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
120 Lisp_Object
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
121 quotify_args (exp)
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
122 Lisp_Object exp;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
123 {
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
124 register Lisp_Object tail;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
125 register struct Lisp_Cons *ptr;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
126 for (tail = exp; CONSP (tail); tail = ptr->cdr)
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
127 {
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
128 ptr = XCONS (tail);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
129 ptr->car = quotify_arg (ptr->car);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
130 }
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
131 return exp;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
132 }
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 char *callint_argfuns[]
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
135 = {"", "point", "mark", "region-beginning", "region-end"};
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
136
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
137 static void
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
138 check_mark ()
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
139 {
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
140 Lisp_Object tem = Fmarker_buffer (current_buffer->mark);
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 438
diff changeset
141 if (NILP (tem) || (XBUFFER (tem) != current_buffer))
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
142 error ("The mark is not set now");
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
143 }
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
144
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
145
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
146 DEFUN ("call-interactively", Fcall_interactively, Scall_interactively, 1, 2, 0,
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
147 "Call FUNCTION, reading args according to its interactive calling specs.\n\
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
148 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
149 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
150 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
151 See `interactive'.\n\
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
152 \n\
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
153 Optional second arg RECORD-FLAG non-nil\n\
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
154 means unconditionally put this command in the command-history.\n\
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
155 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
156 (function, record)
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
157 Lisp_Object function, record;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
158 {
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
159 Lisp_Object *args, *visargs;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
160 unsigned char **argstrings;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
161 Lisp_Object fun;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
162 Lisp_Object funcar;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
163 Lisp_Object specs;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
164 Lisp_Object teml;
873
0abaf590e0ca entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 863
diff changeset
165 Lisp_Object enable;
0abaf590e0ca entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 863
diff changeset
166 int speccount = specpdl_ptr - specpdl;
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
167
1383
54028d2538a4 * callint.c (Fcall_interactively): Allow multiple 'e' specs.
Jim Blandy <jimb@redhat.com>
parents: 1347
diff changeset
168 /* 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
169 the 'e' interactive code. */
54028d2538a4 * callint.c (Fcall_interactively): Allow multiple 'e' specs.
Jim Blandy <jimb@redhat.com>
parents: 1347
diff changeset
170 int next_event = 0;
54028d2538a4 * callint.c (Fcall_interactively): Allow multiple 'e' specs.
Jim Blandy <jimb@redhat.com>
parents: 1347
diff changeset
171
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
172 Lisp_Object prefix_arg;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
173 unsigned char *string;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
174 unsigned char *tem;
438
8b54ee2c82d6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 407
diff changeset
175
8b54ee2c82d6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 407
diff changeset
176 /* 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
177 in this call quoted in the command history. It should be
8b54ee2c82d6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 407
diff changeset
178 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
179 int *varies;
438
8b54ee2c82d6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 407
diff changeset
180
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
181 register int i, j;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
182 int count, foo;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
183 char prompt[100];
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
184 char prompt1[100];
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
185 char *tem1;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
186 int arg_from_tty = 0;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
187 struct gcpro gcpro1, gcpro2, gcpro3, gcpro4;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
188
732
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 648
diff changeset
189 /* Save this now, since use of minibuffer will clobber it. */
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
190 prefix_arg = Vcurrent_prefix_arg;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
191
617
cde1f15848c6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 516
diff changeset
192 retry:
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
193
1115
eb7f1ab33a9d * callint.c (Fcall_interactively): Remove the 'K' interactive
Jim Blandy <jimb@redhat.com>
parents: 1084
diff changeset
194 if (XTYPE (function) == Lisp_Symbol)
eb7f1ab33a9d * callint.c (Fcall_interactively): Remove the 'K' interactive
Jim Blandy <jimb@redhat.com>
parents: 1084
diff changeset
195 enable = Fget (function, Qenable_recursive_minibuffers);
873
0abaf590e0ca entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 863
diff changeset
196
648
70b112526394 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 644
diff changeset
197 fun = indirect_function (function);
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
198
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
199 specs = Qnil;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
200 string = 0;
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 /* Decode the kind of function. Either handle it and return,
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
203 or go to `lose' if not interactive, or go to `retry'
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
204 to specify a different function, or set either STRING or SPECS. */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
205
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
206 if (XTYPE (fun) == Lisp_Subr)
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
207 {
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
208 string = (unsigned char *) XSUBR (fun)->prompt;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
209 if (!string)
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 lose:
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
212 function = wrong_type_argument (Qcommandp, function, 0);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
213 goto retry;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
214 }
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
215 if ((int) string == 1)
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
216 /* Let SPECS (which is nil) be used as the args. */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
217 string = 0;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
218 }
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
219 else if (XTYPE (fun) == Lisp_Compiled)
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
220 {
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
221 if (XVECTOR (fun)->size <= COMPILED_INTERACTIVE)
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
222 goto lose;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
223 specs = XVECTOR (fun)->contents[COMPILED_INTERACTIVE];
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
224 }
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
225 else if (!CONSP (fun))
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
226 goto lose;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
227 else if (funcar = Fcar (fun), EQ (funcar, Qautoload))
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
228 {
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
229 GCPRO2 (function, prefix_arg);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
230 do_autoload (fun, function);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
231 UNGCPRO;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
232 goto retry;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
233 }
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
234 else if (EQ (funcar, Qlambda))
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
235 {
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
236 specs = Fassq (Qinteractive, Fcdr (Fcdr (fun)));
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 438
diff changeset
237 if (NILP (specs))
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
238 goto lose;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
239 specs = Fcar (Fcdr (specs));
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
240 }
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
241 else if (EQ (funcar, Qmocklisp))
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
242 return ml_apply (fun, Qinteractive);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
243 else
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
244 goto lose;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
245
617
cde1f15848c6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 516
diff changeset
246 /* 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
247 if (XTYPE (specs) == Lisp_String)
617
cde1f15848c6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 516
diff changeset
248 {
cde1f15848c6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 516
diff changeset
249 /* 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
250 `string' will still be valid. */
732
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 648
diff changeset
251 string = (unsigned char *) alloca (XSTRING (specs)->size + 1);
617
cde1f15848c6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 516
diff changeset
252 bcopy (XSTRING (specs)->data, string, XSTRING (specs)->size + 1);
cde1f15848c6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 516
diff changeset
253 }
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
254 else if (string == 0)
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
255 {
1498
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
256 Lisp_Object input;
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
257 i = num_input_chars;
1498
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
258 input = specs;
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
259 /* Compute the arg values using the user's expression. */
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
260 specs = Feval (specs);
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 438
diff changeset
261 if (i != num_input_chars || !NILP (record))
1498
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
262 {
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
263 /* We should record this command on the command history. */
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
264 Lisp_Object values, car;
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
265 /* 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
266 and turn them into things we can eval. */
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
267 values = quotify_args (Fcopy_sequence (specs));
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
268 /* 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
269 look for elements that were computed with (region-beginning)
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
270 or (region-end), and put those expressions into VALUES
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
271 instead of the present values. */
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
272 car = Fcar (input);
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
273 if (EQ (car, Qlist))
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
274 {
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
275 Lisp_Object intail, valtail;
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
276 for (intail = Fcdr (input), valtail = values;
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
277 CONSP (valtail);
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
278 intail = Fcdr (intail), valtail = Fcdr (valtail))
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
279 {
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
280 Lisp_Object elt;
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
281 elt = Fcar (intail);
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
282 if (CONSP (elt))
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
283 {
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
284 Lisp_Object presflag;
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
285 presflag = Fmemq (Fcar (elt), preserved_fns);
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
286 if (!NILP (presflag))
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
287 Fsetcar (valtail, Fcar (intail));
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
288 }
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
289 }
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
290 }
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
291 Vcommand_history
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
292 = Fcons (Fcons (function, values), Vcommand_history);
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
293 }
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
294 return apply1 (function, specs);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
295 }
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
296
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
297 /* Here if function specifies a string to control parsing the defaults */
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 /* Handle special starting chars `*' and `@'. */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
300 while (1)
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
301 {
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
302 if (*string == '*')
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
303 {
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
304 string++;
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 438
diff changeset
305 if (!NILP (current_buffer->read_only))
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
306 Fbarf_if_buffer_read_only ();
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
307 }
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
308 else if (*string == '@')
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
309 {
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
310 string++;
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 438
diff changeset
311 if (!NILP (Vmouse_window))
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
312 Fselect_window (Vmouse_window);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
313 }
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
314 else break;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
315 }
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 /* Count the number of arguments the interactive spec would have
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
318 us give to the function. */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
319 tem = string;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
320 for (j = 0; *tem; j++)
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
321 {
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
322 /* 'r' specifications ("point and mark as 2 numeric args")
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
323 produce *two* arguments. */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
324 if (*tem == 'r') j++;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
325 tem = (unsigned char *) index (tem, '\n');
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
326 if (tem)
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
327 tem++;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
328 else
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
329 tem = (unsigned char *) "";
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 count = j;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
332
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
333 args = (Lisp_Object *) alloca ((count + 1) * sizeof (Lisp_Object));
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
334 visargs = (Lisp_Object *) alloca ((count + 1) * sizeof (Lisp_Object));
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
335 argstrings = (unsigned char **) alloca ((count + 1) * sizeof (char *));
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
336 varies = (int *) alloca ((count + 1) * sizeof (int));
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
337
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
338 for (i = 0; i < (count + 1); i++)
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
339 {
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
340 args[i] = Qnil;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
341 visargs[i] = Qnil;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
342 varies[i] = 0;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
343 }
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 GCPRO4 (prefix_arg, function, *args, *visargs);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
346 gcpro3.nvars = (count + 1);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
347 gcpro4.nvars = (count + 1);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
348
873
0abaf590e0ca entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 863
diff changeset
349 if (!NILP (enable))
0abaf590e0ca entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 863
diff changeset
350 specbind (Qenable_recursive_minibuffers, Qt);
0abaf590e0ca entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 863
diff changeset
351
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
352 tem = string;
617
cde1f15848c6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 516
diff changeset
353 for (i = 1; *tem; i++)
407
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 strncpy (prompt1, tem + 1, sizeof prompt1 - 1);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
356 prompt1[sizeof prompt1 - 1] = 0;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
357 tem1 = index (prompt1, '\n');
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
358 if (tem1) *tem1 = 0;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
359 /* Fill argstrings with a vector of C strings
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
360 corresponding to the Lisp strings in visargs. */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
361 for (j = 1; j < i; j++)
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
362 argstrings[j]
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
363 = EQ (visargs[j], Qnil)
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
364 ? (unsigned char *) ""
617
cde1f15848c6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 516
diff changeset
365 : XSTRING (visargs[j])->data;
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 doprnt (prompt, sizeof prompt, prompt1, 0, j - 1, argstrings + 1);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
368
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
369 switch (*tem)
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
370 {
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
371 case 'a': /* Symbol defined as a function */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
372 visargs[i] = Fcompleting_read (build_string (prompt),
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
373 Vobarray, Qfboundp, Qt, Qnil, Qnil);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
374 /* Passing args[i] directly stimulates compiler bug */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
375 teml = visargs[i];
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
376 args[i] = Fintern (teml, Qnil);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
377 break;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
378
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
379 case 'b': /* Name of existing buffer */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
380 args[i] = Fcurrent_buffer ();
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
381 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
382 args[i] = Fother_buffer (args[i], Qnil);
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
383 args[i] = Fread_buffer (build_string (prompt), args[i], Qt);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
384 break;
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 'B': /* Name of buffer, possibly nonexistent */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
387 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
388 Fother_buffer (Fcurrent_buffer (), Qnil),
ac3a893b9bb9 (Fcall_interactively): Pass 2nd arg to Fother_buffer.
Richard M. Stallman <rms@gnu.org>
parents: 1115
diff changeset
389 Qnil);
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
390 break;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
391
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
392 case 'c': /* Character */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
393 message1 (prompt);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
394 args[i] = Fread_char ();
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
395 /* Passing args[i] directly stimulates compiler bug */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
396 teml = args[i];
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
397 visargs[i] = Fchar_to_string (teml);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
398 break;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
399
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
400 case 'C': /* Command: symbol with interactive function */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
401 visargs[i] = Fcompleting_read (build_string (prompt),
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
402 Vobarray, Qcommandp, Qt, Qnil, Qnil);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
403 /* Passing args[i] directly stimulates compiler bug */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
404 teml = visargs[i];
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
405 args[i] = Fintern (teml, Qnil);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
406 break;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
408 case 'd': /* Value of point. Does not do I/O. */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
409 XFASTINT (args[i]) = point;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
410 /* visargs[i] = Qnil; */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
411 varies[i] = 1;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
412 break;
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 case 'D': /* Directory name. */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
415 args[i] = Fread_file_name (build_string (prompt), Qnil,
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
416 current_buffer->directory, Qlambda, Qnil);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
417 break;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
418
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
419 case 'f': /* Existing file name. */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
420 args[i] = Fread_file_name (build_string (prompt),
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
421 Qnil, Qnil, Qlambda, Qnil);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
422 break;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
423
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
424 case 'F': /* Possibly nonexistent file name. */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
425 args[i] = Fread_file_name (build_string (prompt),
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
426 Qnil, Qnil, Qnil, Qnil);
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 'k': /* Key sequence (string) */
438
8b54ee2c82d6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 407
diff changeset
430 args[i] = Fread_key_sequence (build_string (prompt), Qnil);
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
431 teml = args[i];
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
432 visargs[i] = Fkey_description (teml);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
433 break;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
434
1383
54028d2538a4 * callint.c (Fcall_interactively): Allow multiple 'e' specs.
Jim Blandy <jimb@redhat.com>
parents: 1347
diff changeset
435 case 'e': /* The invoking event. */
54028d2538a4 * callint.c (Fcall_interactively): Allow multiple 'e' specs.
Jim Blandy <jimb@redhat.com>
parents: 1347
diff changeset
436 /* Find the next parameterized event. */
54028d2538a4 * callint.c (Fcall_interactively): Allow multiple 'e' specs.
Jim Blandy <jimb@redhat.com>
parents: 1347
diff changeset
437 while (next_event < this_command_key_count
1425
2c156e9908ad * callint.c (Fcall_interactively): Change handling of 'e' spec;
Jim Blandy <jimb@redhat.com>
parents: 1383
diff changeset
438 && ! (EVENT_HAS_PARAMETERS
2c156e9908ad * callint.c (Fcall_interactively): Change handling of 'e' spec;
Jim Blandy <jimb@redhat.com>
parents: 1383
diff changeset
439 (XVECTOR (this_command_keys)->contents[next_event])))
1383
54028d2538a4 * callint.c (Fcall_interactively): Allow multiple 'e' specs.
Jim Blandy <jimb@redhat.com>
parents: 1347
diff changeset
440 next_event++;
54028d2538a4 * callint.c (Fcall_interactively): Allow multiple 'e' specs.
Jim Blandy <jimb@redhat.com>
parents: 1347
diff changeset
441 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
442 error ("%s must be bound to an event with parameters",
438
8b54ee2c82d6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 407
diff changeset
443 (XTYPE (function) == Lisp_Symbol
8b54ee2c82d6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 407
diff changeset
444 ? (char *) XSYMBOL (function)->name->data
1383
54028d2538a4 * callint.c (Fcall_interactively): Allow multiple 'e' specs.
Jim Blandy <jimb@redhat.com>
parents: 1347
diff changeset
445 : "command"));
1425
2c156e9908ad * callint.c (Fcall_interactively): Change handling of 'e' spec;
Jim Blandy <jimb@redhat.com>
parents: 1383
diff changeset
446 args[i] = XVECTOR (this_command_keys)->contents[next_event++];
732
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 648
diff changeset
447 varies[i] = -1;
438
8b54ee2c82d6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 407
diff changeset
448 break;
8b54ee2c82d6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 407
diff changeset
449
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
450 case 'm': /* Value of mark. Does not do I/O. */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
451 check_mark ();
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
452 /* visargs[i] = Qnil; */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
453 XFASTINT (args[i]) = marker_position (current_buffer->mark);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
454 varies[i] = 2;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
455 break;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
456
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
457 case 'N': /* Prefix arg, else number from minibuffer */
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 438
diff changeset
458 if (!NILP (prefix_arg))
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
459 goto have_prefix_arg;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
460 case 'n': /* Read number from minibuffer. */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
461 do
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
462 args[i] = Fread_minibuffer (build_string (prompt), Qnil);
621
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 617
diff changeset
463 while (! NUMBERP (args[i]));
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
464 visargs[i] = last_minibuf_string;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
465 break;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
466
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
467 case 'P': /* Prefix arg in raw form. Does no I/O. */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
468 have_prefix_arg:
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
469 args[i] = prefix_arg;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
470 /* visargs[i] = Qnil; */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
471 varies[i] = -1;
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 'p': /* Prefix arg converted to number. No I/O. */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
475 args[i] = Fprefix_numeric_value (prefix_arg);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
476 /* visargs[i] = Qnil; */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
477 varies[i] = -1;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
478 break;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
479
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
480 case 'r': /* Region, point and mark as 2 args. */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
481 check_mark ();
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
482 /* visargs[i+1] = Qnil; */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
483 foo = marker_position (current_buffer->mark);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
484 /* visargs[i] = Qnil; */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
485 XFASTINT (args[i]) = point < foo ? point : foo;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
486 varies[i] = 3;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
487 XFASTINT (args[++i]) = point > foo ? point : foo;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
488 varies[i] = 4;
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 's': /* String read via minibuffer. */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
492 args[i] = Fread_string (build_string (prompt), Qnil);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
493 break;
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 case 'S': /* Any symbol. */
863
427299469901 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 819
diff changeset
496 visargs[i] = Fread_no_blanks_input (build_string (prompt), Qnil);
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
497 /* Passing args[i] directly stimulates compiler bug */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
498 teml = visargs[i];
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
499 args[i] = Fintern (teml, Qnil);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
500 break;
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 case 'v': /* Variable name: symbol that is
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
503 user-variable-p. */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
504 args[i] = Fread_variable (build_string (prompt));
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
505 visargs[i] = last_minibuf_string;
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 'x': /* Lisp expression read but not evaluated */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
509 args[i] = Fread_minibuffer (build_string (prompt), Qnil);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
510 visargs[i] = last_minibuf_string;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
511 break;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
512
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
513 case 'X': /* Lisp expression read and evaluated */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
514 args[i] = Feval_minibuffer (build_string (prompt), Qnil);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
515 visargs[i] = last_minibuf_string;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
516 break;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
517
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
518 default:
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
519 error ("Invalid control letter \"%c\" (%03o) in interactive calling string",
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
520 *tem, *tem);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
521 }
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
522
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
523 if (varies[i] == 0)
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
524 arg_from_tty = 1;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
525
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 438
diff changeset
526 if (NILP (visargs[i]) && XTYPE (args[i]) == Lisp_String)
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
527 visargs[i] = args[i];
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
528
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
529 tem = (unsigned char *) index (tem, '\n');
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
530 if (tem) tem++;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
531 else tem = (unsigned char *) "";
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
532 }
873
0abaf590e0ca entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 863
diff changeset
533 unbind_to (speccount, Qnil);
407
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 QUIT;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
536
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
537 args[0] = function;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
538
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 438
diff changeset
539 if (arg_from_tty || !NILP (record))
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
540 {
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
541 visargs[0] = function;
438
8b54ee2c82d6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 407
diff changeset
542 for (i = 1; i < count + 1; i++)
8b54ee2c82d6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 407
diff changeset
543 if (varies[i] > 0)
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
544 visargs[i] = Fcons (intern (callint_argfuns[varies[i]]), Qnil);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
545 else
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
546 visargs[i] = quotify_arg (args[i]);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
547 Vcommand_history = Fcons (Flist (count + 1, visargs),
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
548 Vcommand_history);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
549 }
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
550
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 Lisp_Object val;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
553 specbind (Qcommand_debug_status, Qnil);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
554
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
555 val = Ffuncall (count + 1, args);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
556 UNGCPRO;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
557 return unbind_to (speccount, val);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
558 }
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
559 }
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
560
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
561 DEFUN ("prefix-numeric-value", Fprefix_numeric_value, Sprefix_numeric_value,
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
562 1, 1, 0,
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
563 "Return numeric meaning of raw prefix argument ARG.\n\
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
564 A raw prefix argument is what you get from `(interactive \"P\")'.\n\
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
565 Its numeric meaning is what you would get from `(interactive \"p\")'.")
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
566 (raw)
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
567 Lisp_Object raw;
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
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
571 /* Tag val as an integer, so the rest of the assignments
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
572 may use XSETINT. */
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
573 XFASTINT (val) = 0;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
574
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 438
diff changeset
575 if (NILP (raw))
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
576 XFASTINT (val) = 1;
819
5bbabfcef929 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 732
diff changeset
577 else if (EQ (raw, Qminus))
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
578 XSETINT (val, -1);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
579 else if (CONSP (raw))
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
580 XSETINT (val, XINT (XCONS (raw)->car));
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
581 else if (XTYPE (raw) == Lisp_Int)
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
582 val = raw;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
583 else
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
584 XFASTINT (val) = 1;
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 return 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
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
589 syms_of_callint ()
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
590 {
1498
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
591 preserved_fns = Fcons (intern ("region-beginning"),
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
592 Fcons (intern ("region-end"),
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
593 Fcons (intern ("point"),
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
594 Fcons (intern ("mark"), Qnil))));
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
595 staticpro (&preserved_fns);
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
596
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
597 Qlist = intern ("list");
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
598 staticpro (&Qlist);
098464e977d6 (preserved_fns): New var.
Richard M. Stallman <rms@gnu.org>
parents: 1425
diff changeset
599
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
600 Qminus = intern ("-");
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
601 staticpro (&Qminus);
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 Qcall_interactively = intern ("call-interactively");
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
604 staticpro (&Qcall_interactively);
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 Qcommand_debug_status = intern ("command-debug-status");
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
607 staticpro (&Qcommand_debug_status);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
608
873
0abaf590e0ca entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 863
diff changeset
609 Qenable_recursive_minibuffers = intern ("enable-recursive-minibuffers");
0abaf590e0ca entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 863
diff changeset
610 staticpro (&Qenable_recursive_minibuffers);
0abaf590e0ca entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 863
diff changeset
611
407
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
612 DEFVAR_LISP ("prefix-arg", &Vprefix_arg,
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
613 "The value of the prefix argument for the next editing command.\n\
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
614 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
615 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
616 or nil if no argument has been specified.\n\
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
617 \n\
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
618 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
619 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
620 Instead, you should use the variable `current-prefix-arg', although\n\
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
621 normally commands can get this prefix argument with (interactive \"P\").");
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
622 Vprefix_arg = Qnil;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
623
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
624 DEFVAR_LISP ("current-prefix-arg", &Vcurrent_prefix_arg,
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
625 "The value of the prefix argument for this editing command.\n\
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
626 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
627 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
628 or nil if no argument has been specified.\n\
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
629 This is what `(interactive \"P\")' returns.");
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
630 Vcurrent_prefix_arg = Qnil;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
631
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
632 DEFVAR_LISP ("command-history", &Vcommand_history,
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
633 "List of recent commands that read arguments from terminal.\n\
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
634 Each command is represented as a form to evaluate.");
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
635 Vcommand_history = Qnil;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
636
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
637 DEFVAR_LISP ("command-debug-status", &Vcommand_debug_status,
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
638 "Debugging status of current interactive command.\n\
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
639 Bound each time `call-interactively' is called;\n\
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
640 may be set by the debugger as a reminder for itself.");
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
641 Vcommand_debug_status = Qnil;
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
642
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
643 defsubr (&Sinteractive);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
644 defsubr (&Scall_interactively);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
645 defsubr (&Sprefix_numeric_value);
a82d2d892c89 Initial revision
Michael I. Bushnell <mib@gnu.org>
parents:
diff changeset
646 }