mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-01-09 13:10:57 -08:00
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
(Qcyclic_variable_indirection): New variable. (Fkeywordp): Check for internedness differently. (Fmakunbound): Simplify the test if symbol is a constant. (indirect_variable, Findirect_variable): New functions. (swap_in_symval_forwarding): If SYMBOL is an alias, use the aliased symbol. (let_shadows_buffer_binding_p): Check for variable aliases. (set_internal): Simplify the test if SYMBOL is a constant. If SYMBOL has a buffer-local value and is an alias, use the aliased symbol instead. (syms_of_data): Initialze Qcyclic_variable_indirection and defsubr Sindirect_variable.
This commit is contained in:
parent
cf29bf99c7
commit
f35d5badef
1 changed files with 111 additions and 45 deletions
156
src/data.c
156
src/data.c
|
|
@ -65,6 +65,7 @@ Lisp_Object Qnil, Qt, Qquote, Qlambda, Qsubr, Qunbound;
|
|||
Lisp_Object Qerror_conditions, Qerror_message, Qtop_level;
|
||||
Lisp_Object Qerror, Qquit, Qwrong_type_argument, Qargs_out_of_range;
|
||||
Lisp_Object Qvoid_variable, Qvoid_function, Qcyclic_function_indirection;
|
||||
Lisp_Object Qcyclic_variable_indirection;
|
||||
Lisp_Object Qsetting_constant, Qinvalid_read_syntax;
|
||||
Lisp_Object Qinvalid_function, Qwrong_number_of_arguments, Qno_catch;
|
||||
Lisp_Object Qend_of_file, Qarith_error, Qmark_inactive;
|
||||
|
|
@ -307,7 +308,7 @@ interned in the initial obarray.")
|
|||
{
|
||||
if (SYMBOLP (object)
|
||||
&& XSYMBOL (object)->name->data[0] == ':'
|
||||
&& EQ (XSYMBOL (object)->obarray, initial_obarray))
|
||||
&& SYMBOL_INTERNED_IN_INITIAL_OBARRAY_P (object))
|
||||
return Qt;
|
||||
return Qnil;
|
||||
}
|
||||
|
|
@ -596,7 +597,7 @@ DEFUN ("boundp", Fboundp, Sboundp, 1, 1, 0, "Return t if SYMBOL's value is not v
|
|||
Lisp_Object valcontents;
|
||||
CHECK_SYMBOL (symbol, 0);
|
||||
|
||||
valcontents = XSYMBOL (symbol)->value;
|
||||
valcontents = SYMBOL_VALUE (symbol);
|
||||
|
||||
if (BUFFER_LOCAL_VALUEP (valcontents)
|
||||
|| SOME_BUFFER_LOCAL_VALUEP (valcontents))
|
||||
|
|
@ -618,9 +619,7 @@ DEFUN ("makunbound", Fmakunbound, Smakunbound, 1, 1, 0, "Make SYMBOL's value be
|
|||
register Lisp_Object symbol;
|
||||
{
|
||||
CHECK_SYMBOL (symbol, 0);
|
||||
if (NILP (symbol) || EQ (symbol, Qt)
|
||||
|| (XSYMBOL (symbol)->name->data[0] == ':'
|
||||
&& EQ (XSYMBOL (symbol)->obarray, initial_obarray)))
|
||||
if (XSYMBOL (symbol)->constant)
|
||||
return Fsignal (Qsetting_constant, Fcons (symbol, Qnil));
|
||||
Fset (symbol, Qunbound);
|
||||
return symbol;
|
||||
|
|
@ -746,7 +745,53 @@ SUBR must be a built-in function. Value, if non-nil, is a list\n\
|
|||
}
|
||||
|
||||
|
||||
/* Getting and setting values of symbols */
|
||||
/***********************************************************************
|
||||
Getting and Setting Values of Symbols
|
||||
***********************************************************************/
|
||||
|
||||
/* Return the symbol holding SYMBOL's value. Signal
|
||||
`cyclic-variable-indirection' if SYMBOL's chain of variable
|
||||
indirections contains a loop. */
|
||||
|
||||
Lisp_Object
|
||||
indirect_variable (symbol)
|
||||
Lisp_Object symbol;
|
||||
{
|
||||
Lisp_Object tortoise, hare;
|
||||
|
||||
hare = tortoise = symbol;
|
||||
|
||||
while (XSYMBOL (hare)->indirect_variable)
|
||||
{
|
||||
hare = XSYMBOL (hare)->value;
|
||||
if (!XSYMBOL (hare)->indirect_variable)
|
||||
break;
|
||||
|
||||
hare = XSYMBOL (hare)->value;
|
||||
tortoise = XSYMBOL (tortoise)->value;
|
||||
|
||||
if (EQ (hare, tortoise))
|
||||
Fsignal (Qcyclic_variable_indirection, Fcons (symbol, Qnil));
|
||||
}
|
||||
|
||||
return hare;
|
||||
}
|
||||
|
||||
|
||||
DEFUN ("indirect-variable", Findirect_variable, Sindirect_variable, 1, 1, 0,
|
||||
"Return the variable at the end of OBJECT's variable chain.\n\
|
||||
If OBJECT is a symbol, follow all variable indirections and return the final\n\
|
||||
variable. If OBJECT is not a symbol, just return it.\n\
|
||||
Signal a cyclic-variable-indirection error if there is a loop in the\n\
|
||||
variable chain of symbols.")
|
||||
(object)
|
||||
Lisp_Object object;
|
||||
{
|
||||
if (SYMBOLP (object))
|
||||
object = indirect_variable (object);
|
||||
return object;
|
||||
}
|
||||
|
||||
|
||||
/* Given the raw contents of a symbol value cell,
|
||||
return the Lisp value of the symbol.
|
||||
|
|
@ -852,12 +897,12 @@ store_symval_forwarding (symbol, valcontents, newval, buf)
|
|||
|
||||
default:
|
||||
def:
|
||||
valcontents = XSYMBOL (symbol)->value;
|
||||
valcontents = SYMBOL_VALUE (symbol);
|
||||
if (BUFFER_LOCAL_VALUEP (valcontents)
|
||||
|| SOME_BUFFER_LOCAL_VALUEP (valcontents))
|
||||
XBUFFER_LOCAL_VALUE (valcontents)->realvalue = newval;
|
||||
else
|
||||
XSYMBOL (symbol)->value = newval;
|
||||
SET_SYMBOL_VALUE (symbol, newval);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -870,7 +915,7 @@ swap_in_global_binding (symbol)
|
|||
{
|
||||
Lisp_Object valcontents, cdr;
|
||||
|
||||
valcontents = XSYMBOL (symbol)->value;
|
||||
valcontents = SYMBOL_VALUE (symbol);
|
||||
if (!BUFFER_LOCAL_VALUEP (valcontents)
|
||||
&& !SOME_BUFFER_LOCAL_VALUEP (valcontents))
|
||||
abort ();
|
||||
|
|
@ -903,6 +948,7 @@ swap_in_symval_forwarding (symbol, valcontents)
|
|||
Lisp_Object symbol, valcontents;
|
||||
{
|
||||
register Lisp_Object tem1;
|
||||
|
||||
tem1 = XBUFFER_LOCAL_VALUE (valcontents)->buffer;
|
||||
|
||||
if (NILP (tem1)
|
||||
|
|
@ -910,6 +956,9 @@ swap_in_symval_forwarding (symbol, valcontents)
|
|||
|| (XBUFFER_LOCAL_VALUE (valcontents)->check_frame
|
||||
&& ! EQ (selected_frame, XBUFFER_LOCAL_VALUE (valcontents)->frame)))
|
||||
{
|
||||
if (XSYMBOL (symbol)->indirect_variable)
|
||||
symbol = indirect_variable (symbol);
|
||||
|
||||
/* Unload the previously loaded binding. */
|
||||
tem1 = XCAR (XBUFFER_LOCAL_VALUE (valcontents)->cdr);
|
||||
Fsetcdr (tem1,
|
||||
|
|
@ -953,8 +1002,9 @@ find_symbol_value (symbol)
|
|||
{
|
||||
register Lisp_Object valcontents;
|
||||
register Lisp_Object val;
|
||||
|
||||
CHECK_SYMBOL (symbol, 0);
|
||||
valcontents = XSYMBOL (symbol)->value;
|
||||
valcontents = SYMBOL_VALUE (symbol);
|
||||
|
||||
if (BUFFER_LOCAL_VALUEP (valcontents)
|
||||
|| SOME_BUFFER_LOCAL_VALUEP (valcontents))
|
||||
|
|
@ -1019,13 +1069,18 @@ let_shadows_buffer_binding_p (symbol)
|
|||
struct specbinding *p;
|
||||
|
||||
for (p = specpdl_ptr - 1; p >= specpdl; p--)
|
||||
if (p->func == 0
|
||||
&& CONSP (p->symbol)
|
||||
&& EQ (symbol, XCAR (p->symbol))
|
||||
&& XBUFFER (XCDR (XCDR (p->symbol))) == current_buffer)
|
||||
return 1;
|
||||
if (p->func == NULL
|
||||
&& CONSP (p->symbol))
|
||||
{
|
||||
Lisp_Object let_bound_symbol = XCAR (p->symbol);
|
||||
if ((EQ (symbol, let_bound_symbol)
|
||||
|| (XSYMBOL (let_bound_symbol)->indirect_variable
|
||||
&& EQ (symbol, indirect_variable (let_bound_symbol))))
|
||||
&& XBUFFER (XCDR (XCDR (p->symbol))) == current_buffer)
|
||||
break;
|
||||
}
|
||||
|
||||
return 0;
|
||||
return p >= specpdl;
|
||||
}
|
||||
|
||||
/* Store the value NEWVAL into SYMBOL.
|
||||
|
|
@ -1054,14 +1109,13 @@ set_internal (symbol, newval, buf, bindflag)
|
|||
return newval;
|
||||
|
||||
CHECK_SYMBOL (symbol, 0);
|
||||
if (NILP (symbol) || EQ (symbol, Qt)
|
||||
|| (XSYMBOL (symbol)->name->data[0] == ':'
|
||||
&& EQ (XSYMBOL (symbol)->obarray, initial_obarray)
|
||||
&& !EQ (newval, symbol)))
|
||||
if (SYMBOL_CONSTANT_P (symbol)
|
||||
&& (NILP (Fkeywordp (symbol))
|
||||
|| !EQ (newval, SYMBOL_VALUE (symbol))))
|
||||
return Fsignal (Qsetting_constant, Fcons (symbol, Qnil));
|
||||
|
||||
innercontents = valcontents = XSYMBOL (symbol)->value;
|
||||
|
||||
innercontents = valcontents = SYMBOL_VALUE (symbol);
|
||||
|
||||
if (BUFFER_OBJFWDP (valcontents))
|
||||
{
|
||||
int offset = XBUFFER_OBJFWD (valcontents)->offset;
|
||||
|
|
@ -1071,11 +1125,12 @@ set_internal (symbol, newval, buf, bindflag)
|
|||
&& !let_shadows_buffer_binding_p (symbol))
|
||||
SET_PER_BUFFER_VALUE_P (buf, idx, 1);
|
||||
}
|
||||
|
||||
else if (BUFFER_LOCAL_VALUEP (valcontents)
|
||||
|| SOME_BUFFER_LOCAL_VALUEP (valcontents))
|
||||
{
|
||||
/* valcontents is a struct Lisp_Buffer_Local_Value. */
|
||||
if (XSYMBOL (symbol)->indirect_variable)
|
||||
symbol = indirect_variable (symbol);
|
||||
|
||||
/* What binding is loaded right now? */
|
||||
current_alist_element
|
||||
|
|
@ -1195,7 +1250,7 @@ default_value (symbol)
|
|||
register Lisp_Object valcontents;
|
||||
|
||||
CHECK_SYMBOL (symbol, 0);
|
||||
valcontents = XSYMBOL (symbol)->value;
|
||||
valcontents = SYMBOL_VALUE (symbol);
|
||||
|
||||
/* For a built-in buffer-local variable, get the default value
|
||||
rather than letting do_symval_forwarding get the current value. */
|
||||
|
|
@ -1266,7 +1321,7 @@ for this variable.")
|
|||
register Lisp_Object valcontents, current_alist_element, alist_element_buffer;
|
||||
|
||||
CHECK_SYMBOL (symbol, 0);
|
||||
valcontents = XSYMBOL (symbol)->value;
|
||||
valcontents = SYMBOL_VALUE (symbol);
|
||||
|
||||
/* Handle variables like case-fold-search that have special slots
|
||||
in the buffer. Make them work apparently like Lisp_Buffer_Local_Value
|
||||
|
|
@ -1368,7 +1423,7 @@ The function `default-value' gets the default value and `set-default' sets it.")
|
|||
|
||||
CHECK_SYMBOL (variable, 0);
|
||||
|
||||
valcontents = XSYMBOL (variable)->value;
|
||||
valcontents = SYMBOL_VALUE (variable);
|
||||
if (EQ (variable, Qnil) || EQ (variable, Qt) || KBOARD_OBJFWDP (valcontents))
|
||||
error ("Symbol %s may not be buffer-local", XSYMBOL (variable)->name->data);
|
||||
|
||||
|
|
@ -1376,23 +1431,23 @@ The function `default-value' gets the default value and `set-default' sets it.")
|
|||
return variable;
|
||||
if (SOME_BUFFER_LOCAL_VALUEP (valcontents))
|
||||
{
|
||||
XMISCTYPE (XSYMBOL (variable)->value) = Lisp_Misc_Buffer_Local_Value;
|
||||
XMISCTYPE (SYMBOL_VALUE (variable)) = Lisp_Misc_Buffer_Local_Value;
|
||||
return variable;
|
||||
}
|
||||
if (EQ (valcontents, Qunbound))
|
||||
XSYMBOL (variable)->value = Qnil;
|
||||
SET_SYMBOL_VALUE (variable, Qnil);
|
||||
tem = Fcons (Qnil, Fsymbol_value (variable));
|
||||
XCAR (tem) = tem;
|
||||
newval = allocate_misc ();
|
||||
XMISCTYPE (newval) = Lisp_Misc_Buffer_Local_Value;
|
||||
XBUFFER_LOCAL_VALUE (newval)->realvalue = XSYMBOL (variable)->value;
|
||||
XBUFFER_LOCAL_VALUE (newval)->realvalue = SYMBOL_VALUE (variable);
|
||||
XBUFFER_LOCAL_VALUE (newval)->buffer = Fcurrent_buffer ();
|
||||
XBUFFER_LOCAL_VALUE (newval)->frame = Qnil;
|
||||
XBUFFER_LOCAL_VALUE (newval)->found_for_buffer = 0;
|
||||
XBUFFER_LOCAL_VALUE (newval)->found_for_frame = 0;
|
||||
XBUFFER_LOCAL_VALUE (newval)->check_frame = 0;
|
||||
XBUFFER_LOCAL_VALUE (newval)->cdr = tem;
|
||||
XSYMBOL (variable)->value = newval;
|
||||
SET_SYMBOL_VALUE (variable, newval);
|
||||
return variable;
|
||||
}
|
||||
|
||||
|
|
@ -1421,7 +1476,7 @@ Use `make-local-hook' instead.")
|
|||
|
||||
CHECK_SYMBOL (variable, 0);
|
||||
|
||||
valcontents = XSYMBOL (variable)->value;
|
||||
valcontents = SYMBOL_VALUE (variable);
|
||||
if (EQ (variable, Qnil) || EQ (variable, Qt) || KBOARD_OBJFWDP (valcontents))
|
||||
error ("Symbol %s may not be buffer-local", XSYMBOL (variable)->name->data);
|
||||
|
||||
|
|
@ -1442,14 +1497,14 @@ Use `make-local-hook' instead.")
|
|||
XCAR (tem) = tem;
|
||||
newval = allocate_misc ();
|
||||
XMISCTYPE (newval) = Lisp_Misc_Some_Buffer_Local_Value;
|
||||
XBUFFER_LOCAL_VALUE (newval)->realvalue = XSYMBOL (variable)->value;
|
||||
XBUFFER_LOCAL_VALUE (newval)->realvalue = SYMBOL_VALUE (variable);
|
||||
XBUFFER_LOCAL_VALUE (newval)->buffer = Qnil;
|
||||
XBUFFER_LOCAL_VALUE (newval)->frame = Qnil;
|
||||
XBUFFER_LOCAL_VALUE (newval)->found_for_buffer = 0;
|
||||
XBUFFER_LOCAL_VALUE (newval)->found_for_frame = 0;
|
||||
XBUFFER_LOCAL_VALUE (newval)->check_frame = 0;
|
||||
XBUFFER_LOCAL_VALUE (newval)->cdr = tem;
|
||||
XSYMBOL (variable)->value = newval;
|
||||
SET_SYMBOL_VALUE (variable, newval);;
|
||||
}
|
||||
/* Make sure this buffer has its own value of symbol. */
|
||||
tem = Fassq (variable, current_buffer->local_var_alist);
|
||||
|
|
@ -1461,7 +1516,7 @@ Use `make-local-hook' instead.")
|
|||
find_symbol_value (variable);
|
||||
|
||||
current_buffer->local_var_alist
|
||||
= Fcons (Fcons (variable, XCDR (XBUFFER_LOCAL_VALUE (XSYMBOL (variable)->value)->cdr)),
|
||||
= Fcons (Fcons (variable, XCDR (XBUFFER_LOCAL_VALUE (SYMBOL_VALUE (variable))->cdr)),
|
||||
current_buffer->local_var_alist);
|
||||
|
||||
/* Make sure symbol does not think it is set up for this buffer;
|
||||
|
|
@ -1469,7 +1524,7 @@ Use `make-local-hook' instead.")
|
|||
{
|
||||
Lisp_Object *pvalbuf;
|
||||
|
||||
valcontents = XSYMBOL (variable)->value;
|
||||
valcontents = SYMBOL_VALUE (variable);
|
||||
|
||||
pvalbuf = &XBUFFER_LOCAL_VALUE (valcontents)->buffer;
|
||||
if (current_buffer == XBUFFER (*pvalbuf))
|
||||
|
|
@ -1482,9 +1537,9 @@ Use `make-local-hook' instead.")
|
|||
for this buffer now. If C code modifies the variable before we
|
||||
load the binding in, then that new value will clobber the default
|
||||
binding the next time we unload it. */
|
||||
valcontents = XBUFFER_LOCAL_VALUE (XSYMBOL (variable)->value)->realvalue;
|
||||
valcontents = XBUFFER_LOCAL_VALUE (SYMBOL_VALUE (variable))->realvalue;
|
||||
if (INTFWDP (valcontents) || BOOLFWDP (valcontents) || OBJFWDP (valcontents))
|
||||
swap_in_symval_forwarding (variable, XSYMBOL (variable)->value);
|
||||
swap_in_symval_forwarding (variable, SYMBOL_VALUE (variable));
|
||||
|
||||
return variable;
|
||||
}
|
||||
|
|
@ -1500,7 +1555,7 @@ From now on the default value will apply in this buffer.")
|
|||
|
||||
CHECK_SYMBOL (variable, 0);
|
||||
|
||||
valcontents = XSYMBOL (variable)->value;
|
||||
valcontents = SYMBOL_VALUE (variable);
|
||||
|
||||
if (BUFFER_OBJFWDP (valcontents))
|
||||
{
|
||||
|
|
@ -1532,7 +1587,7 @@ From now on the default value will apply in this buffer.")
|
|||
forwarded objects won't work right. */
|
||||
{
|
||||
Lisp_Object *pvalbuf;
|
||||
valcontents = XSYMBOL (variable)->value;
|
||||
valcontents = SYMBOL_VALUE (variable);
|
||||
pvalbuf = &XBUFFER_LOCAL_VALUE (valcontents)->buffer;
|
||||
if (current_buffer == XBUFFER (*pvalbuf))
|
||||
{
|
||||
|
|
@ -1563,7 +1618,7 @@ See `modify-frame-parameters'.")
|
|||
|
||||
CHECK_SYMBOL (variable, 0);
|
||||
|
||||
valcontents = XSYMBOL (variable)->value;
|
||||
valcontents = SYMBOL_VALUE (variable);
|
||||
if (EQ (variable, Qnil) || EQ (variable, Qt) || KBOARD_OBJFWDP (valcontents)
|
||||
|| BUFFER_OBJFWDP (valcontents))
|
||||
error ("Symbol %s may not be frame-local", XSYMBOL (variable)->name->data);
|
||||
|
|
@ -1576,19 +1631,19 @@ See `modify-frame-parameters'.")
|
|||
}
|
||||
|
||||
if (EQ (valcontents, Qunbound))
|
||||
XSYMBOL (variable)->value = Qnil;
|
||||
SET_SYMBOL_VALUE (variable, Qnil);
|
||||
tem = Fcons (Qnil, Fsymbol_value (variable));
|
||||
XCAR (tem) = tem;
|
||||
newval = allocate_misc ();
|
||||
XMISCTYPE (newval) = Lisp_Misc_Some_Buffer_Local_Value;
|
||||
XBUFFER_LOCAL_VALUE (newval)->realvalue = XSYMBOL (variable)->value;
|
||||
XBUFFER_LOCAL_VALUE (newval)->realvalue = SYMBOL_VALUE (variable);
|
||||
XBUFFER_LOCAL_VALUE (newval)->buffer = Qnil;
|
||||
XBUFFER_LOCAL_VALUE (newval)->frame = Qnil;
|
||||
XBUFFER_LOCAL_VALUE (newval)->found_for_buffer = 0;
|
||||
XBUFFER_LOCAL_VALUE (newval)->found_for_frame = 0;
|
||||
XBUFFER_LOCAL_VALUE (newval)->check_frame = 1;
|
||||
XBUFFER_LOCAL_VALUE (newval)->cdr = tem;
|
||||
XSYMBOL (variable)->value = newval;
|
||||
SET_SYMBOL_VALUE (variable, newval);
|
||||
return variable;
|
||||
}
|
||||
|
||||
|
|
@ -1612,11 +1667,13 @@ BUFFER defaults to the current buffer.")
|
|||
|
||||
CHECK_SYMBOL (variable, 0);
|
||||
|
||||
valcontents = XSYMBOL (variable)->value;
|
||||
valcontents = SYMBOL_VALUE (variable);
|
||||
if (BUFFER_LOCAL_VALUEP (valcontents)
|
||||
|| SOME_BUFFER_LOCAL_VALUEP (valcontents))
|
||||
{
|
||||
Lisp_Object tail, elt;
|
||||
|
||||
variable = indirect_variable (variable);
|
||||
for (tail = buf->local_var_alist; CONSP (tail); tail = XCDR (tail))
|
||||
{
|
||||
elt = XCAR (tail);
|
||||
|
|
@ -1654,7 +1711,7 @@ BUFFER defaults to the current buffer.")
|
|||
|
||||
CHECK_SYMBOL (variable, 0);
|
||||
|
||||
valcontents = XSYMBOL (variable)->value;
|
||||
valcontents = SYMBOL_VALUE (variable);
|
||||
|
||||
/* This means that make-variable-buffer-local was done. */
|
||||
if (BUFFER_LOCAL_VALUEP (valcontents))
|
||||
|
|
@ -2731,6 +2788,7 @@ syms_of_data ()
|
|||
Qargs_out_of_range = intern ("args-out-of-range");
|
||||
Qvoid_function = intern ("void-function");
|
||||
Qcyclic_function_indirection = intern ("cyclic-function-indirection");
|
||||
Qcyclic_variable_indirection = intern ("cyclic-variable-indirection");
|
||||
Qvoid_variable = intern ("void-variable");
|
||||
Qsetting_constant = intern ("setting-constant");
|
||||
Qinvalid_read_syntax = intern ("invalid-read-syntax");
|
||||
|
|
@ -2816,6 +2874,11 @@ syms_of_data ()
|
|||
Fput (Qcyclic_function_indirection, Qerror_message,
|
||||
build_string ("Symbol's chain of function indirections contains a loop"));
|
||||
|
||||
Fput (Qcyclic_variable_indirection, Qerror_conditions,
|
||||
Fcons (Qcyclic_variable_indirection, error_tail));
|
||||
Fput (Qcyclic_variable_indirection, Qerror_message,
|
||||
build_string ("Symbol's chain of variable indirections contains a loop"));
|
||||
|
||||
Fput (Qvoid_variable, Qerror_conditions,
|
||||
Fcons (Qvoid_variable, error_tail));
|
||||
Fput (Qvoid_variable, Qerror_message,
|
||||
|
|
@ -3014,6 +3077,7 @@ syms_of_data ()
|
|||
staticpro (&Qbool_vector);
|
||||
staticpro (&Qhash_table);
|
||||
|
||||
defsubr (&Sindirect_variable);
|
||||
defsubr (&Ssubr_interactive_form);
|
||||
defsubr (&Seq);
|
||||
defsubr (&Snull);
|
||||
|
|
@ -3143,3 +3207,5 @@ init_data ()
|
|||
signal (SIGEMT, arith_error);
|
||||
#endif /* uts */
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue