Mercurial > hg > xemacs-beta
changeset 1674:7670d88516af
[xemacs-hg @ 2003-09-10 08:40:30 by michaels]
2003-09-08 Mike Sperber <mike@xemacs.org>
* symbols.c (Fvariable_binding_locus): Add, as per suggestion from
RMS at:
http://article.gmane.org/gmane.emacs.pretest.bugs/1010
author | michaels |
---|---|
date | Wed, 10 Sep 2003 08:40:41 +0000 |
parents | 9f8a8fc32b1b |
children | 114679353c2f |
files | src/ChangeLog src/symbols.c |
diffstat | 2 files changed, 32 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/src/ChangeLog Tue Sep 09 21:53:44 2003 +0000 +++ b/src/ChangeLog Wed Sep 10 08:40:41 2003 +0000 @@ -1,3 +1,9 @@ +2003-09-08 Mike Sperber <mike@xemacs.org> + + * symbols.c (Fvariable_binding_locus): Add, as per suggestion from + RMS at: + http://article.gmane.org/gmane.emacs.pretest.bugs/1010 + 2003-09-03 Steve Youngs <youngs@xemacs.org> * XEmacs 21.5.15 "celery" is released.
--- a/src/symbols.c Tue Sep 09 21:53:44 2003 +0000 +++ b/src/symbols.c Wed Sep 10 08:40:41 2003 +0000 @@ -3211,6 +3211,31 @@ 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; +} /************************************************************************/ /* initialization */ @@ -3597,7 +3622,6 @@ DEFSYMBOL (Qsymbol_value_in_buffer); DEFSYMBOL (Qsymbol_value_in_console); DEFSYMBOL (Qlocal_variable_p); - DEFSYMBOL (Qconst_integer); DEFSYMBOL (Qconst_boolean); DEFSYMBOL (Qconst_object); @@ -3644,6 +3668,7 @@ DEFSUBR (Fdefvaralias); DEFSUBR (Fvariable_alias); DEFSUBR (Findirect_variable); + DEFSUBR (Fvariable_binding_locus); DEFSUBR (Fdontusethis_set_symbol_value_handler); }