Commit d427b66a authored by Jim Blandy's avatar Jim Blandy

entered into RCS

parent b2c9579f
......@@ -67,8 +67,8 @@ main (argc,argv)
int depth;
Pixmap pix;
char *string = "Kill the head and the body will die.";
char dash_list[] = {6, 4, 6, 4};
int dashes = 4;
char dash_list[] = {4, 4};
int dashes = 2;
if (argc < 2)
dpy_string = "localhost:0.0";
......@@ -105,24 +105,19 @@ main (argc,argv)
&gc_values);
gc_values.foreground = obtain_color ("red");
gc_values.function = GXor;
gc_values.line_width = 3;
gc_values.line_style = LineOnOffDash;
gc_values.cap_style = CapRound;
gc_values.join_style = JoinRound;
line_xor_gc = XCreateGC (dpy, window,
GCForeground | GCBackground | GCLineStyle
| GCJoinStyle | GCCapStyle | GCLineWidth
| GCFunction,
| GCJoinStyle | GCCapStyle | GCLineWidth,
&gc_values);
XSetDashes (dpy, line_xor_gc, 0, dash_list, dashes);
gc_values.background = WhitePixel (dpy, DefaultScreen (dpy));
gc_values.foreground = obtain_color ("blue");
line_xor_inv_gc = XCreateGC (dpy, window,
GCForeground | GCBackground
| GCLineWidth | GCFunction,
&gc_values);
GCForeground | GCBackground | GCLineWidth,
&gc_values);
depth = DefaultDepthOfScreen (ScreenOfDisplay (dpy, DefaultScreen (dpy)));
pix = XCreateBitmapFromData (dpy, window, page_glyf_bits,
......@@ -137,25 +132,20 @@ main (argc,argv)
switch (event.type)
{
case ButtonPress:
#if 0
if (event.xbutton.state && ShiftMask)
#endif
switch (event.xbutton.button)
{
case Button1:
XDrawLine (dpy, window, line_xor_gc, 25, 75, 125, 75);
XFlush (dpy);
XDrawLine (dpy, window, line_xor_gc, 25, 75, 125, 75);
break;
case Button2:
XDrawLine (dpy, window, line_xor_gc, 25, 75, 125, 75);
break;
case Button3:
XDrawLine (dpy, window, line_xor_gc, 25, 75, 125, 75);
break;
}
switch (event.xbutton.button)
{
case Button1:
XDrawLine (dpy, window, line_xor_gc, 25, 75, 300, 75);
break;
case Button2:
XDrawLine (dpy, window, line_xor_inv_gc, 25, 25, 300, 25);
break;
case Button3:
XDrawLine (dpy, window, line_xor_gc, 25, 25, 25, 125);
break;
}
break;
case KeyPress:
......
#define page_glyf_width 30
#define page_glyf_height 10
static char page_glyf_bits[] = {
0xf0, 0xff, 0xff, 0x03, 0x08, 0x00, 0x00, 0x04, 0xc4, 0x19, 0xf3, 0x08,
0x42, 0xa5, 0x14, 0x10, 0xc1, 0xa5, 0x70, 0x20, 0x41, 0xbc, 0x16, 0x20,
0x42, 0xa4, 0x14, 0x10, 0x44, 0x24, 0xf3, 0x08, 0x08, 0x00, 0x00, 0x04,
0xf0, 0xff, 0xff, 0x03};
......@@ -20,7 +20,6 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#include "config.h"
#include <stdio.h>
#undef NULL
#include "lisp.h"
#include "commands.h"
#include "buffer.h"
......@@ -113,9 +112,9 @@ it is called after EXPANSION is inserted.")
Lisp_Object sym, oexp, ohook, tem;
CHECK_VECTOR (table, 0);
CHECK_STRING (name, 1);
if (!NULL (expansion))
if (!NILP (expansion))
CHECK_STRING (expansion, 2);
if (NULL (count))
if (NILP (count))
count = make_number (0);
else
CHECK_NUMBER (count, 0);
......@@ -126,10 +125,10 @@ it is called after EXPANSION is inserted.")
ohook = XSYMBOL (sym)->function;
if (!((EQ (oexp, expansion)
|| (XTYPE (oexp) == Lisp_String && XTYPE (expansion) == Lisp_String
&& (tem = Fstring_equal (oexp, expansion), !NULL (tem))))
&& (tem = Fstring_equal (oexp, expansion), !NILP (tem))))
&&
(EQ (ohook, hook)
|| (tem = Fequal (ohook, hook), !NULL (tem)))))
|| (tem = Fequal (ohook, hook), !NILP (tem)))))
abbrevs_changed = 1;
Fset (sym, expansion);
......@@ -156,7 +155,7 @@ DEFUN ("define-mode-abbrev", Fdefine_mode_abbrev, Sdefine_mode_abbrev, 2, 2,
(name, expansion)
Lisp_Object name, expansion;
{
if (NULL (current_buffer->abbrev_table))
if (NILP (current_buffer->abbrev_table))
error ("Major mode has no abbrev table");
Fdefine_abbrev (current_buffer->abbrev_table, Fdowncase (name),
......@@ -176,19 +175,19 @@ The default is to try buffer's mode-specific abbrev table, then global table.")
{
Lisp_Object sym;
CHECK_STRING (abbrev, 0);
if (!NULL (table))
if (!NILP (table))
sym = Fintern_soft (abbrev, table);
else
{
sym = Qnil;
if (!NULL (current_buffer->abbrev_table))
if (!NILP (current_buffer->abbrev_table))
sym = Fintern_soft (abbrev, current_buffer->abbrev_table);
if (NULL (XSYMBOL (sym)->value))
if (NILP (XSYMBOL (sym)->value))
sym = Qnil;
if (NULL (sym))
if (NILP (sym))
sym = Fintern_soft (abbrev, Vglobal_abbrev_table);
}
if (NULL (XSYMBOL (sym)->value)) return Qnil;
if (NILP (XSYMBOL (sym)->value)) return Qnil;
return sym;
}
......@@ -201,7 +200,7 @@ then ABBREV is looked up in that table only.")
{
Lisp_Object sym;
sym = Fabbrev_symbol (abbrev, table);
if (NULL (sym)) return sym;
if (NILP (sym)) return sym;
return Fsymbol_value (sym);
}
......@@ -221,12 +220,12 @@ Returns t if expansion took place.")
register Lisp_Object sym;
Lisp_Object expansion, hook, tem;
if (!NULL (Vrun_hooks))
if (!NILP (Vrun_hooks))
call1 (Vrun_hooks, Qpre_abbrev_expand_hook);
if (XBUFFER (Vabbrev_start_location_buffer) != current_buffer)
Vabbrev_start_location = Qnil;
if (!NULL (Vabbrev_start_location))
if (!NILP (Vabbrev_start_location))
{
tem = Vabbrev_start_location;
CHECK_NUMBER_COERCE_MARKER (tem, 0);
......@@ -267,9 +266,9 @@ Returns t if expansion took place.")
sym = oblookup (current_buffer->abbrev_table, buffer, p - buffer);
else
XFASTINT (sym) = 0;
if (XTYPE (sym) == Lisp_Int || NULL (XSYMBOL (sym)->value))
if (XTYPE (sym) == Lisp_Int || NILP (XSYMBOL (sym)->value))
sym = oblookup (Vglobal_abbrev_table, buffer, p - buffer);
if (XTYPE (sym) == Lisp_Int || NULL (XSYMBOL (sym)->value))
if (XTYPE (sym) == Lisp_Int || NILP (XSYMBOL (sym)->value))
return Qnil;
if (INTERACTIVE && !EQ (minibuf_window, selected_window))
......@@ -327,7 +326,7 @@ Returns t if expansion took place.")
}
hook = XSYMBOL (sym)->function;
if (!NULL (hook))
if (!NILP (hook))
call0 (hook);
return Qt;
......@@ -367,7 +366,7 @@ write_abbrev (sym, stream)
Lisp_Object sym, stream;
{
Lisp_Object name;
if (NULL (XSYMBOL (sym)->value))
if (NILP (XSYMBOL (sym)->value))
return;
insert (" (", 5);
XSET (name, Lisp_String, XSYMBOL (sym)->name);
......@@ -387,7 +386,7 @@ describe_abbrev (sym, stream)
{
Lisp_Object one;
if (NULL (XSYMBOL (sym)->value))
if (NILP (XSYMBOL (sym)->value))
return;
one = make_number (1);
Fprin1 (Fsymbol_name (sym), stream);
......@@ -395,7 +394,7 @@ describe_abbrev (sym, stream)
Fprin1 (XSYMBOL (sym)->plist, stream);
Findent_to (make_number (20), one);
Fprin1 (XSYMBOL (sym)->value, stream);
if (!NULL (XSYMBOL (sym)->function))
if (!NILP (XSYMBOL (sym)->function))
{
Findent_to (make_number (45), one);
Fprin1 (XSYMBOL (sym)->function, stream);
......@@ -424,7 +423,7 @@ define the abbrev table NAME exactly as it is currently defined.")
XSET (stream, Lisp_Buffer, current_buffer);
if (!NULL (readable))
if (!NILP (readable))
{
insert_string ("(");
Fprin1 (name, stream);
......@@ -457,7 +456,7 @@ of the form (ABBREVNAME EXPANSION HOOK USECOUNT).")
CHECK_SYMBOL (tabname, 0);
table = Fboundp (tabname);
if (NULL (table) || (table = Fsymbol_value (tabname), NULL (table)))
if (NILP (table) || (table = Fsymbol_value (tabname), NILP (table)))
{
table = Fmake_abbrev_table ();
Fset (tabname, table);
......@@ -466,7 +465,7 @@ of the form (ABBREVNAME EXPANSION HOOK USECOUNT).")
}
CHECK_VECTOR (table, 0);
for (;!NULL (defns); defns = Fcdr (defns))
for (;!NILP (defns); defns = Fcdr (defns))
{
elt = Fcar (defns);
name = Fcar (elt);
......
#define ACL$K_LENGTH 12
#define ACL$C_LENGTH 12
#define ACL$C_FILE 1
#define ACL$C_DEVICE 2
#define ACL$C_JOBCTL_QUEUE 3
#define ACL$C_COMMON_EF_CLUSTER 4
#define ACL$C_LOGICAL_NAME_TABLE 5
#define ACL$C_PROCESS 6
#define ACL$C_GROUP_GLOBAL_SECTION 7
#define ACL$C_SYSTEM_GLOBAL_SECTION 8
#define ACL$C_ADDACLENT 1
#define ACL$C_DELACLENT 2
#define ACL$C_MODACLENT 3
#define ACL$C_FNDACLENT 4
#define ACL$C_FNDACETYP 5
#define ACL$C_DELETEACL 6
#define ACL$C_READACL 7
#define ACL$C_ACLLENGTH 8
#define ACL$C_READACE 9
#define ACL$C_RLOCK_ACL 10
#define ACL$C_WLOCK_ACL 11
#define ACL$C_UNLOCK_ACL 12
#define ACL$S_ADDACLENT 255
#define ACL$S_DELACLENT 255
#define ACL$S_MODACLENT 255
#define ACL$S_FNDACLENT 255
#define ACL$S_FNDACETYP 255
#define ACL$S_DELETEACL 255
#define ACL$S_READACL 512
#define ACL$S_ACLLENGTH 4
#define ACL$S_READACE 255
#define ACL$S_RLOCK_ACL 4
#define ACL$S_WLOCK_ACL 4
#define ACL$S_UNLOCK_ACL 4
#define ACL$S_ACLDEF 16
#define ACL$L_FLINK 0
#define ACL$L_BLINK 4
#define ACL$W_SIZE 8
#define ACL$B_TYPE 10
#define ACL$L_LIST 12
......@@ -261,7 +261,10 @@ syms_of_casefiddle ()
keys_of_casefiddle ()
{
initial_define_key (control_x_map, Ctl('U'), "upcase-region");
Fput (intern ("upcase-region"), Qdisabled, Qt);
initial_define_key (control_x_map, Ctl('L'), "downcase-region");
Fput (intern ("downcase-region"), Qdisabled, Qt);
initial_define_key (meta_map, 'u', "upcase-word");
initial_define_key (meta_map, 'l', "downcase-word");
initial_define_key (meta_map, 'c', "capitalize-word");
......
......@@ -45,8 +45,8 @@ See `set-case-table' for more information on these data structures.")
(XTYPE (obj) == Lisp_String && XSTRING (obj)->size == 256)
return (STRING256_P (down)
&& (NULL (up) || STRING256_P (up))
&& ((NULL (canon) && NULL (eqv))
&& (NILP (up) || STRING256_P (up))
&& ((NILP (canon) && NILP (eqv))
|| (STRING256_P (canon) && STRING256_P (eqv)))
? Qt : Qnil);
}
......@@ -57,7 +57,7 @@ check_case_table (obj)
{
register Lisp_Object tem;
while (tem = Fcase_table_p (obj), NULL (tem))
while (tem = Fcase_table_p (obj), NILP (tem))
obj = wrong_type_argument (Qcase_table_p, obj, 0);
return (obj);
}
......@@ -132,13 +132,13 @@ set_case_table (table, standard)
canon = Fcar_safe (Fcdr_safe (Fcdr_safe (table)));
eqv = Fcar_safe (Fcdr_safe (Fcdr_safe (Fcdr_safe (table))));
if (NULL (up))
if (NILP (up))
{
up = Fmake_string (make_number (256), make_number (0));
compute_trt_inverse (XSTRING (down)->data, XSTRING (up)->data);
}
if (NULL (canon))
if (NILP (canon))
{
register int i;
unsigned char *upvec = XSTRING (up)->data;
......
#define CHP$_END 0
#define CHP$_ACCESS 1
#define CHP$_FLAGS 2
#define CHP$_PRIV 3
#define CHP$_ACMODE 4
#define CHP$_ACCLASS 5
#define CHP$_RIGHTS 6
#define CHP$_ADDRIGHTS 7
#define CHP$_MODE 8
#define CHP$_MODES 9
#define CHP$_MINCLASS 10
#define CHP$_MAXCLASS 11
#define CHP$_OWNER 12
#define CHP$_PROT 13
#define CHP$_ACL 14
#define CHP$_AUDITNAME 15
#define CHP$_ALARMNAME 16
#define CHP$_MATCHEDACE 17
#define CHP$_PRIVUSED 18
#define CHP$_MAX_CODE 19
#define CHP$M_SYSPRV 1
#define CHP$M_BYPASS 2
#define CHP$M_UPGRADE 4
#define CHP$M_DOWNGRADE 8
#define CHP$M_GRPPRV 16
#define CHP$M_READALL 32
#define CHP$V_SYSPRV 0
#define CHP$V_BYPASS 1
#define CHP$V_UPGRADE 2
#define CHP$V_DOWNGRADE 3
#define CHP$V_GRPPRV 4
#define CHP$V_READALL 5
#define CHP$M_READ 1
#define CHP$M_WRITE 2
#define CHP$M_USEREADALL 4
#define CHP$V_READ 0
#define CHP$V_WRITE 1
#define CHP$V_USEREADALL 2
This diff is collapsed.
/* Things for GLYPHS and glyph tables.
Copyright (C) 1990 Free Software Foundation, Inc.
This file is part of GNU Emacs.
GNU Emacs is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 1, or (at your option)
any later version.
GNU Emacs is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Emacs; see the file COPYING. If not, write to
the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
/* Access the slots of a display-table, according to their purpose. */
#define DISP_TABLE_SIZE 261
#define DISP_TRUNC_GLYPH(dp) ((dp)->contents[256])
#define DISP_CONTINUE_GLYPH(dp) ((dp)->contents[257])
#define DISP_ESCAPE_GLYPH(dp) ((dp)->contents[258])
#define DISP_CTRL_GLYPH(dp) ((dp)->contents[259])
#define DISP_INVIS_ROPE(dp) ((dp)->contents[260])
#define DISP_CHAR_ROPE(dp, c) ((dp)->contents[c])
extern struct Lisp_Vector *window_display_table ();
/* Display table to use for vectors that don't specify their own. */
extern Lisp_Object Vstandard_display_table;
/* Vector of GLYPH definitions. Indexed by GLYPH number,
the contents are a string which is how to output the GLYPH. */
extern Lisp_Object Vglyph_table;
/* Return the current length of the GLYPH table,
or 0 if the table isn't currently valid. */
#define GLYPH_TABLE_LENGTH \
((XTYPE (Vglyph_table) == Lisp_Vector) \
? XVECTOR (Vglyph_table)->size : 0)
/* Return the current base (for indexing) of the GLYPH table,
or 0 if the table isn't currently valid. */
#define GLYPH_TABLE_BASE \
((XTYPE (Vglyph_table) == Lisp_Vector) \
? XVECTOR (Vglyph_table)->contents : 0)
/* Given BASE and LEN returned by the two previous macros,
return nonzero if the GLYPH code G should be output as a single
character with code G. Return zero if G has a string in the table. */
#define GLYPH_SIMPLE_P(base,len,g) \
((g) >= (len) || XTYPE (base[g]) != Lisp_String)
/* Given BASE and LEN returned by the two previous macros,
return nonzero if GLYPH code G is aliased to a different code. */
#define GLYPH_ALIAS_P(base,len,g) \
((g) < (len) && XTYPE (base[g]) == Lisp_Int)
/* Assuming that GLYPH_SIMPLE_P (BASE, LEN, G) is 1,
return the alias for G. */
#define GLYPH_ALIAS(base, g) XINT (base[g])
/* Assuming that GLYPH_SIMPLE_P (BASE, LEN, G) is 0,
return the length and the address of the character-sequence
used for outputting GLYPH G. */
#define GLYPH_LENGTH(base,g) XSTRING (base[g])->size
#define GLYPH_STRING(base,g) XSTRING (base[g])->data
/* GLYPH for a space character. */
#define SPACEGLYPH 040
#define NULL_GLYPH 00
#define GLYPH_FROM_CHAR(c) (c)
extern int glyphlen ();
extern void str_to_glyph_cpy ();
extern void str_to_glyph_ncpy ();
extern void glyph_to_str_cpy ();
......@@ -68,10 +68,10 @@ doprnt (buffer, bufsize, format, format_end, nargs, args)
int size_bound;
fmt++;
/* Copy this one %-spec into fmtcopy. */
/* Copy this one %-spec into fmtcpy. */
string = fmtcpy;
*string++ = '%';
while (1)
while (string < fmtcpy + sizeof fmtcpy - 1)
{
*string++ = *fmt;
if (! (*fmt >= '0' && *fmt <= '9') && *fmt != '-' && *fmt != ' ')
......
/* Definitions for interface to indent.c
Copyright (C) 1985, 1986 Free Software Foundation, Inc.
This file is part of GNU Emacs.
GNU Emacs is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 1, or (at your option)
any later version.
GNU Emacs is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Emacs; see the file COPYING. If not, write to
the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
struct position
{
int bufpos;
int hpos;
int vpos;
int prevhpos;
int contin;
};
struct position *compute_motion ();
struct position *vmotion ();
/* Value of point when current_column was called */
extern int last_known_column_point;
......@@ -214,7 +214,7 @@ adjust_markers (from, to, amount)
marker = current_buffer->markers;
while (!NULL (marker))
while (!NILP (marker))
{
m = XMARKER (marker);
mpos = m->bufpos;
......@@ -352,7 +352,7 @@ insert_from_string (string, pos, length)
GPT += length;
ZV += length;
Z += length;
point += length;
SET_PT (point + length);
signal_after_change (point-length, 0, length);
}
......@@ -473,22 +473,22 @@ modify_region (start, end)
prepare_to_modify_buffer (start, end)
Lisp_Object start, end;
{
if (!NULL (current_buffer->read_only))
if (!NILP (current_buffer->read_only))
Fbarf_if_buffer_read_only ();
if (check_protected_fields)
Fregion_fields (start, end, Qnil, Qt);
#ifdef CLASH_DETECTION
if (!NULL (current_buffer->filename)
if (!NILP (current_buffer->filename)
&& current_buffer->save_modified >= MODIFF)
lock_file (current_buffer->filename);
#else
/* At least warn if this file has changed on disk since it was visited. */
if (!NULL (current_buffer->filename)
if (!NILP (current_buffer->filename)
&& current_buffer->save_modified >= MODIFF
&& NULL (Fverify_visited_file_modtime (Fcurrent_buffer ()))
&& !NULL (Ffile_exists_p (current_buffer->filename)))
&& NILP (Fverify_visited_file_modtime (Fcurrent_buffer ()))
&& !NILP (Ffile_exists_p (current_buffer->filename)))
call1 (intern ("ask-user-about-supersession-threat"),
current_buffer->filename);
#endif /* not CLASH_DETECTION */
......@@ -519,12 +519,12 @@ signal_before_change (start, end)
{
/* If buffer is unmodified, run a special hook for that case. */
if (current_buffer->save_modified >= MODIFF
&& !NULL (Vfirst_change_function))
&& !NILP (Vfirst_change_function))
{
call0 (Vfirst_change_function);
}
/* Now in any case run the before-change-function if any. */
if (!NULL (Vbefore_change_function))
if (!NILP (Vbefore_change_function))
{
int count = specpdl_ptr - specpdl;
Lisp_Object function;
......@@ -551,7 +551,7 @@ signal_before_change (start, end)
signal_after_change (pos, lendel, lenins)
int pos, lendel, lenins;
{
if (!NULL (Vafter_change_function))
if (!NILP (Vafter_change_function))
{
int count = specpdl_ptr - specpdl;
Lisp_Object function;
......
/* Emacs ioctl emulation for VMS */
/* Mark end of data space to dump as pure, for GNU Emacs.
Copyright (C) 1985 Free Software Foundation, Inc.
This file is part of GNU Emacs.
GNU Emacs is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 1, or (at your option)
any later version.
GNU Emacs is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Emacs; see the file COPYING. If not, write to
the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
/* How this works:
Fdump_emacs dumps everything up to my_edata as text space (pure).
The files of Emacs are written so as to have no initialized
data that can ever need to be altered except at the first startup.
This is so that those words can be dumped as sharable text.
It is not possible to exercise such control over library files.
So it is necessary to refrain from making their data areas shared.
Therefore, this file is loaded following all the files of Emacs
but before library files.
As a result, the symbol my_edata indicates the point
in data space between data coming from Emacs and data
coming from libraries.
*/
char my_edata = 0;
#define line_width 30
#define line_height 10
static char line_bits[] = {
0xf0, 0xff, 0xff, 0x03, 0x08, 0x00, 0x00, 0x04, 0x44, 0x48, 0xf4, 0x08,
0x42, 0xc8, 0x14, 0x10, 0x41, 0x48, 0x75, 0x20, 0x41, 0x48, 0x15, 0x20,
0x42, 0x48, 0x16, 0x10, 0xc4, 0x4b, 0xf4, 0x08, 0x08, 0x00, 0x00, 0x04,
0xf0, 0xff, 0xff, 0x03};
/* Definitions for keyboard macro interpretation in GNU Emacs.
Copyright (C) 1985 Free Software Foundation, Inc.
This file is part of GNU Emacs.
GNU Emacs is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 1, or (at your option)
any later version.
GNU Emacs is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Emacs; see the file COPYING. If not, write to
the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
/* Kbd macro currently being executed (a string) */
extern Lisp_Object Vexecuting_macro;