+
+DEFUN ("defvaralias", Fdefvaralias, Sdefvaralias, 2, 3, 0,
+ doc: /* Make SYMBOL a variable alias for symbol ALIASED.
+Setting the value of SYMBOL will subsequently set the value of ALIASED,
+and getting the value of SYMBOL will return the value ALIASED has.
+ALIASED nil means remove the alias; SYMBOL is unbound after that.
+Third arg DOCSTRING, if non-nil, is documentation for SYMBOL. */)
+ (symbol, aliased, docstring)
+ Lisp_Object symbol, aliased, docstring;
+{
+ struct Lisp_Symbol *sym;
+
+ CHECK_SYMBOL (symbol);
+ CHECK_SYMBOL (aliased);
+
+ if (SYMBOL_CONSTANT_P (symbol))
+ error ("Cannot make a constant an alias");
+
+ sym = XSYMBOL (symbol);
+ sym->indirect_variable = 1;
+ sym->value = aliased;
+ sym->constant = SYMBOL_CONSTANT_P (aliased);
+ LOADHIST_ATTACH (Fcons (Qdefvar, symbol));
+ if (!NILP (docstring))
+ Fput (symbol, Qvariable_documentation, docstring);
+
+ return aliased;
+}
+
+