Commit 14e76af9 authored by Jim Blandy's avatar Jim Blandy
Browse files

*** empty log message ***

parent c637ae6f
...@@ -649,12 +649,14 @@ swap_in_symval_forwarding (sym, valcontents) ...@@ -649,12 +649,14 @@ swap_in_symval_forwarding (sym, valcontents)
return XCONS (valcontents)->car; return XCONS (valcontents)->car;
} }
/* Note that it must not be possible to quit within this function. /* Find the value of a symbol, returning Qunbound if it's not bound.
Great care is required for this. */ This is helpful for code which just wants to get a variable's value
if it has one, without signalling an error.
Note that it must not be possible to quit
within this function. Great care is required for this. */
DEFUN ("symbol-value", Fsymbol_value, Ssymbol_value, 1, 1, 0, Lisp_Object
"Return SYMBOL's value. Error if that is void.") find_symbol_value (sym)
(sym)
Lisp_Object sym; Lisp_Object sym;
{ {
register Lisp_Object valcontents, tem1; register Lisp_Object valcontents, tem1;
...@@ -689,18 +691,26 @@ DEFUN ("symbol-value", Fsymbol_value, Ssymbol_value, 1, 1, 0, ...@@ -689,18 +691,26 @@ DEFUN ("symbol-value", Fsymbol_value, Ssymbol_value, 1, 1, 0,
case Lisp_Buffer_Objfwd: case Lisp_Buffer_Objfwd:
return *(Lisp_Object *)(XUINT (valcontents) + (char *)current_buffer); return *(Lisp_Object *)(XUINT (valcontents) + (char *)current_buffer);
case Lisp_Symbol:
/* For a symbol, check whether it is 'unbound. */
if (!EQ (valcontents, Qunbound))
break;
/* drops through! */
case Lisp_Void: case Lisp_Void:
return Fsignal (Qvoid_variable, Fcons (sym, Qnil)); return Qunbound;
} }
return valcontents; return valcontents;
} }
DEFUN ("symbol-value", Fsymbol_value, Ssymbol_value, 1, 1, 0,
"Return SYMBOL's value. Error if that is void.")
(sym)
Lisp_Object sym;
{
Lisp_Object val = find_symbol_value (sym);
if (EQ (val, Qunbound))
return Fsignal (Qvoid_variable, Fcons (sym, Qnil));
else
return val;
}
DEFUN ("set", Fset, Sset, 2, 2, 0, DEFUN ("set", Fset, Sset, 2, 2, 0,
"Set SYMBOL's value to NEWVAL, and return NEWVAL.") "Set SYMBOL's value to NEWVAL, and return NEWVAL.")
(sym, newval) (sym, newval)
......
...@@ -127,3 +127,6 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ ...@@ -127,3 +127,6 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
is named _avenrun. */ is named _avenrun. */
#define LDAV_SYMBOL "_avenrun" #define LDAV_SYMBOL "_avenrun"
/* The return type of a signal handling function. */
#define SIGTYPE int
...@@ -128,6 +128,15 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ ...@@ -128,6 +128,15 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#define CLASH_DETECTION #define CLASH_DETECTION
/* Define this if your operating system declares signal handlers to
have a type other than the usual. `The usual' is `void' for ANSI C
systems (i.e. when the __STDC__ macro is defined), and `int' for
pre-ANSI systems. If you're using GCC on an older system, __STDC__
will be defined, but the system's include files will still say that
signal returns int or whatever; in situations like that, define
this to be what the system's include files want. */
/* #define SIGTYPE int */
/* Here, on a separate page, add any special hacks needed /* Here, on a separate page, add any special hacks needed
to make Emacs work on this system. For example, to make Emacs work on this system. For example,
you might define certain system call names that don't you might define certain system call names that don't
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment