#if 0 /* Inserted for debugging 6/28/1997 -slb */
/* Somebody is setting a property list of integer 0, who? */
/* Not this way apparently. */
- if (EQ(newplist, Qzero)) abort();
+ if (EQ(newplist, Qzero)) ABORT();
#endif
XSYMBOL (symbol)->plist = newplist;
return valcontents;
default:
- abort ();
+ ABORT ();
}
return Qnil; /* suppress compiler warning */
}
return;
default:
- abort ();
+ ABORT ();
}
}
}
break;
}
default:
- abort ();
+ ABORT ();
}
store_symval_forwarding (symbol, valcontents, newval);
return variable;
default:
- abort ();
+ ABORT ();
}
}
}
default:
- abort ();
+ ABORT ();
}
}
break;
default:
- abort ();
+ ABORT ();
}
}
case SYMVAL_UNBOUND_MARKER: return Qnil;
default:
- abort (); return Qnil;
+ ABORT (); return Qnil;
}
}
if (EQ (symbol, Qmake_local)) return MAGIC_HANDLER_MAKE_LOCAL;
signal_simple_error ("Unrecognized symbol value handler type", symbol);
- abort ();
+ ABORT ();
return MAGIC_HANDLER_MAX;
}
return MAGIC_HANDLER_MAKE_LOCAL;
if (abort_if_not_found)
- abort ();
+ ABORT ();
signal_simple_error ("Unrecognized symbol-value function", funsym);
return MAGIC_HANDLER_MAX;
}
return follow_varalias_pointers (object, follow_past_lisp_magic);
}
+DEFUN ("variable-binding-locus", Fvariable_binding_locus, 1, 1, 0, /*
+Return a value indicating where VARIABLE's current binding comes from.
+If the current binding is buffer-local, the value is the current buffer.
+If the current binding is global (the default), the value is nil.
+*/
+ (variable))
+{
+ Lisp_Object valcontents;
+
+ CHECK_SYMBOL (variable);
+ variable = Findirect_variable (variable, Qnil);
+
+ /* Make sure the current binding is actually swapped in. */
+ find_symbol_value (variable);
+
+ valcontents = XSYMBOL (variable)->value;
+
+ if (SYMBOL_VALUE_MAGIC_P (valcontents)
+ && ((XSYMBOL_VALUE_MAGIC_TYPE (valcontents) == SYMVAL_BUFFER_LOCAL)
+ || (XSYMBOL_VALUE_MAGIC_TYPE (valcontents) == SYMVAL_SOME_BUFFER_LOCAL))
+ && (!NILP (Flocal_variable_p (variable, Fcurrent_buffer (), Qnil))))
+ return Fcurrent_buffer ();
+ else
+ return Qnil;
+}
\f
/************************************************************************/
/* initialization */
DEFSYMBOL (Qsymbol_value_in_buffer);
DEFSYMBOL (Qsymbol_value_in_console);
DEFSYMBOL (Qlocal_variable_p);
-
DEFSYMBOL (Qconst_integer);
DEFSYMBOL (Qconst_boolean);
DEFSYMBOL (Qconst_object);
DEFSUBR (Fdefvaralias);
DEFSUBR (Fvariable_alias);
DEFSUBR (Findirect_variable);
+ DEFSUBR (Fvariable_binding_locus);
DEFSUBR (Fdontusethis_set_symbol_value_handler);
}