Mercurial > emacs
changeset 108005:734b50109edf
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.
author | Stefan Monnier <monnier@iro.umontreal.ca> |
---|---|
date | Tue, 20 Apr 2010 13:35:16 -0400 |
parents | 9d210d83ed69 |
children | 452f0cc5f879 9bc5da284bcf |
files | src/ChangeLog src/data.c |
diffstat | 2 files changed, 18 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- 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 <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'.
--- 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; }