Mercurial > emacs
changeset 47022:d2259df6cb09
(Fdefvar, Fdefconst, Fdefvaralias):
Record variables in load history as (defvar . VAR).
(Fdefvar): Don't record in load history if no initial value.
(Qdefvar): New variable.
(syms_of_eval): Init and staticpro it.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Sat, 24 Aug 2002 03:19:23 +0000 |
parents | 3bd4234e0844 |
children | bcd10150f172 |
files | src/eval.c |
diffstat | 1 files changed, 10 insertions(+), 9 deletions(-) [+] |
line wrap: on
line diff
--- a/src/eval.c Sat Aug 24 03:17:18 2002 +0000 +++ b/src/eval.c Sat Aug 24 03:19:23 2002 +0000 @@ -87,7 +87,7 @@ int gcpro_level; #endif -Lisp_Object Qautoload, Qmacro, Qexit, Qinteractive, Qcommandp, Qdefun; +Lisp_Object Qautoload, Qmacro, Qexit, Qinteractive, Qcommandp, Qdefun, Qdefvar; Lisp_Object Qinhibit_quit, Vinhibit_quit, Vquit_flag; Lisp_Object Qand_rest, Qand_optional; Lisp_Object Qdebug_on_error; @@ -731,7 +731,7 @@ sym->indirect_variable = 1; sym->value = aliased; sym->constant = SYMBOL_CONSTANT_P (aliased); - LOADHIST_ATTACH (symbol); + LOADHIST_ATTACH (Fcons (Qdefvar, symbol)); if (!NILP (docstring)) Fput (symbol, Qvariable_documentation, docstring); @@ -777,14 +777,12 @@ tem = Fpurecopy (tem); Fput (sym, Qvariable_documentation, tem); } - LOADHIST_ATTACH (sym); + LOADHIST_ATTACH (Fcons (Qdefvar, sym)); } else - /* A (defvar <var>) should not take precedence in the load-history over - an earlier (defvar <var> <val>), so only add to history if the default - value is still unbound. */ - if (NILP (tem)) - LOADHIST_ATTACH (sym); + /* Simple (defvar <var>) should not count as a definition at all. + It could get in the way of other definitions, and unloading this + package could try to make the variable unbound. */ return sym; } @@ -817,7 +815,7 @@ tem = Fpurecopy (tem); Fput (sym, Qvariable_documentation, tem); } - LOADHIST_ATTACH (sym); + LOADHIST_ATTACH (Fcons (Qdefvar, sym)); return sym; } @@ -3309,6 +3307,9 @@ Qdefun = intern ("defun"); staticpro (&Qdefun); + Qdefvar = intern ("defvar"); + staticpro (&Qdefvar); + Qand_rest = intern ("&rest"); staticpro (&Qand_rest);