]> git.eshelyaron.com Git - emacs.git/commitdiff
Warn rather than error when making a local var inside a let.
authorStefan Monnier <monnier@iro.umontreal.ca>
Tue, 20 Apr 2010 17:35:16 +0000 (13:35 -0400)
committerStefan Monnier <monnier@iro.umontreal.ca>
Tue, 20 Apr 2010 17:35:16 +0000 (13:35 -0400)
* 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
src/data.c

index a5954d29dd3a3170723cbb8bb7dedf48ca77fe3e..e499364049e2ccc94473e434ab407f51470e1de2 100644 (file)
@@ -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'.
index a56b112196d5f68e6671d38f386c9029325428fb..43d168cc63d8be2c40a36fc2b07d7a0fc52c06fe 100644 (file)
@@ -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;
 }