# HG changeset patch # User Stefan Monnier # Date 1271784916 14400 # Node ID 734b50109edf7256000a54d361624ff07677ba1c # Parent 9d210d83ed6908352031cab8c3717502e12c29c5 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. diff -r 9d210d83ed69 -r 734b50109edf src/ChangeLog --- a/src/ChangeLog Tue Apr 20 13:17:29 2010 -0400 +++ b/src/ChangeLog Tue Apr 20 13:35:16 2010 -0400 @@ -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 -r 9d210d83ed69 -r 734b50109edf src/data.c --- a/src/data.c Tue Apr 20 13:17:29 2010 -0400 +++ b/src/data.c Tue Apr 20 13:35:16 2010 -0400 @@ -1639,8 +1639,8 @@ 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 @@ } 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 @@ 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 @@ 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; }