Commit 8b1e1112 authored by Stefan Monnier's avatar Stefan Monnier

Warn rather than error when making a local var inside a let.

* data.c (Fmake_variable_buffer_local, Fmake_local_variable):
Just signal a warning rather than an error when inside a let.
(Fmake_variable_frame_local): Add the same test.
parent 933ac235
2010-04-20 Stefan Monnier <monnier@iro.umontreal.ca>
* data.c (Fmake_variable_buffer_local, Fmake_local_variable):
Just signal a warning rather than an error when inside a let.
(Fmake_variable_frame_local): Add the same test.
* font.c (syms_of_font): Make the style table vars read-only.
* buffer.h (struct buffer): Remove unused var `direction_reversed'.
......
......@@ -1639,8 +1639,8 @@ The function `default-value' gets the default value and `set-default' sets it.
Lisp_Object symbol;
XSETSYMBOL (symbol, sym); /* In case `variable' is aliased. */
if (let_shadows_global_binding_p (symbol))
error ("Making %s buffer-local while let-bound!",
SDATA (SYMBOL_NAME (variable)));
message ("Making %s buffer-local while let-bound!",
SDATA (SYMBOL_NAME (variable)));
}
}
......@@ -1702,7 +1702,8 @@ Instead, use `add-hook' and specify t for the LOCAL argument. */)
}
if (sym->constant)
error ("Symbol %s may not be buffer-local", SDATA (SYMBOL_NAME (variable)));
error ("Symbol %s may not be buffer-local",
SDATA (SYMBOL_NAME (variable)));
if (blv ? blv->local_if_set
: (forwarded && BUFFER_OBJFWDP (valcontents.fwd)))
......@@ -1722,8 +1723,9 @@ Instead, use `add-hook' and specify t for the LOCAL argument. */)
Lisp_Object symbol;
XSETSYMBOL (symbol, sym); /* In case `variable' is aliased. */
if (let_shadows_global_binding_p (symbol))
error ("Making %s local to %s while let-bound!",
SDATA (SYMBOL_NAME (variable)), SDATA (current_buffer->name));
message ("Making %s local to %s while let-bound!",
SDATA (SYMBOL_NAME (variable)),
SDATA (current_buffer->name));
}
}
......@@ -1899,6 +1901,13 @@ frame-local bindings). */)
blv->frame_local = 1;
sym->redirect = SYMBOL_LOCALIZED;
SET_SYMBOL_BLV (sym, blv);
{
Lisp_Object symbol;
XSETSYMBOL (symbol, sym); /* In case `variable' is aliased. */
if (let_shadows_global_binding_p (symbol))
message ("Making %s frame-local while let-bound!",
SDATA (SYMBOL_NAME (variable)));
}
return 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