diff options
author | Stefan Monnier <monnier@iro.umontreal.ca> | 2010-04-20 13:35:16 -0400 |
---|---|---|
committer | Stefan Monnier <monnier@iro.umontreal.ca> | 2010-04-20 13:35:16 -0400 |
commit | 8b1e1112af27d900fdaeff47af5120639661e821 (patch) | |
tree | 442c47633970c2e8656420e73ca753dc8b995f76 /src/data.c | |
parent | 933ac235bd586814f0ac49aac4f385083c1dd5a8 (diff) | |
download | emacs-8b1e1112af27d900fdaeff47af5120639661e821.tar.gz |
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.
Diffstat (limited to 'src/data.c')
-rw-r--r-- | src/data.c | 19 |
1 files changed, 14 insertions, 5 deletions
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; } |