+
+DEFUN ("defvaralias", Fdefvaralias, Sdefvaralias, 2, 3, 0,
+ doc: /* Make NEW-ALIAS a variable alias for symbol BASE-VARIABLE.
+Setting the value of NEW-ALIAS will subsequently set the value of BASE-VARIABLE,
+ and getting the value of NEW-ALIAS will return the value BASE-VARIABLE has.
+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,
+ or of the variable at the end of the chain of aliases, if BASE-VARIABLE is
+ itself an alias.
+The return value is BASE-VARIABLE. */)
+ (new_alias, base_variable, docstring)
+ Lisp_Object new_alias, base_variable, docstring;
+{
+ struct Lisp_Symbol *sym;
+
+ CHECK_SYMBOL (new_alias);
+ CHECK_SYMBOL (base_variable);
+
+ if (SYMBOL_CONSTANT_P (new_alias))
+ error ("Cannot make a constant an alias");
+
+ sym = XSYMBOL (new_alias);
+ sym->indirect_variable = 1;
+ sym->value = base_variable;
+ sym->constant = SYMBOL_CONSTANT_P (base_variable);
+ LOADHIST_ATTACH (new_alias);
+ if (!NILP (docstring))
+ Fput (new_alias, Qvariable_documentation, docstring);
+ else
+ Fput (new_alias, Qvariable_documentation, Qnil);
+
+ return base_variable;
+}
+
+