From 8b1e1112af27d900fdaeff47af5120639661e821 Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Tue, 20 Apr 2010 13:35:16 -0400 Subject: [PATCH] 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. --- src/ChangeLog | 4 ++++ src/data.c | 19 ++++++++++++++----- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index a5954d29dd3..e499364049e 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,5 +1,9 @@ 2010-04-20 Stefan Monnier + * 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'. diff --git a/src/data.c b/src/data.c index a56b112196d..43d168cc63d 100644 --- a/src/data.c +++ b/src/data.c @@ -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; } -- 2.39.2