Commit dd60787c authored by Glenn Morris's avatar Glenn Morris
Browse files

(Fdefvaralias): If the alias is bound and the target is not, set the

target's value to that of the alias.
parent 532a0f4c
2008-04-11 Glenn Morris <rgm@gnu.org>
* eval.c (Fdefvaralias): If the alias is bound and the target is not,
set the target's value to that of the alias.
2008-04-11 Stefan Monnier <monnier@iro.umontreal.ca> 2008-04-11 Stefan Monnier <monnier@iro.umontreal.ca>
* term.c (set_tty_color_mode): Left over typo. * term.c (set_tty_color_mode): Left over typo.
......
...@@ -772,9 +772,10 @@ DEFUN ("defvaralias", Fdefvaralias, Sdefvaralias, 2, 3, 0, ...@@ -772,9 +772,10 @@ DEFUN ("defvaralias", Fdefvaralias, Sdefvaralias, 2, 3, 0,
doc: /* Make NEW-ALIAS a variable alias for symbol BASE-VARIABLE. doc: /* Make NEW-ALIAS a variable alias for symbol BASE-VARIABLE.
Aliased variables always have the same value; setting one sets the other. Aliased variables always have the same value; setting one sets the other.
Third arg DOCSTRING, if non-nil, is documentation for NEW-ALIAS. If it is Third arg DOCSTRING, if non-nil, is documentation for NEW-ALIAS. If it is
omitted or nil, NEW-ALIAS gets the documentation string of BASE-VARIABLE, omitted or nil, NEW-ALIAS gets the documentation string of BASE-VARIABLE,
or of the variable at the end of the chain of aliases, if BASE-VARIABLE is or of the variable at the end of the chain of aliases, if BASE-VARIABLE is
itself an alias. itself an alias. If NEW-ALIAS is bound, and BASE-VARIABLE is not,
then the value of BASE-VARIABLE is set to that of NEW-ALIAS.
The return value is BASE-VARIABLE. */) The return value is BASE-VARIABLE. */)
(new_alias, base_variable, docstring) (new_alias, base_variable, docstring)
Lisp_Object new_alias, base_variable, docstring; Lisp_Object new_alias, base_variable, docstring;
...@@ -788,6 +789,12 @@ The return value is BASE-VARIABLE. */) ...@@ -788,6 +789,12 @@ The return value is BASE-VARIABLE. */)
error ("Cannot make a constant an alias"); error ("Cannot make a constant an alias");
sym = XSYMBOL (new_alias); sym = XSYMBOL (new_alias);
/* http://lists.gnu.org/archive/html/emacs-devel/2008-04/msg00834.html
If n_a is bound, but b_v is not, set the value of b_v to n_a.
This is for the sake of define-obsolete-variable-alias and user
customizations. */
if (NILP (Fboundp (base_variable)) && !NILP (Fboundp (new_alias)))
XSYMBOL(base_variable)->value = sym->value;
sym->indirect_variable = 1; sym->indirect_variable = 1;
sym->value = base_variable; sym->value = base_variable;
sym->constant = SYMBOL_CONSTANT_P (base_variable); sym->constant = SYMBOL_CONSTANT_P (base_variable);
......
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