changeset 58413:73c39b73a189

(Fdefvar): Warn when var is let-bound but globally void.
author Stefan Monnier <monnier@iro.umontreal.ca>
date Mon, 22 Nov 2004 05:26:50 +0000
parents b9a1c1b8d195
children 1f06a555fba2
files src/ChangeLog src/eval.c
diffstat 2 files changed, 25 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/src/ChangeLog	Mon Nov 22 05:07:07 2004 +0000
+++ b/src/ChangeLog	Mon Nov 22 05:26:50 2004 +0000
@@ -1,3 +1,7 @@
+2004-11-22  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+	* eval.c (Fdefvar): Warn when var is let-bound but globally void.
+
 2004-11-21  Kim F. Storm  <storm@cua.dk>
 
 	* xdisp.c (erase_phys_cursor): Clear hollow cursor inside TEXT_AREA.
@@ -11,9 +15,9 @@
 	* macterm.c (x_clip_to_row): Add area arg.  Callers changed.
 	(x_draw_hollow_cursor, x_draw_bar_cursor): Clip to TEXT_AREA.
 
-	* xdisp.c (move_it_in_display_line_to, display_line): Restore
-	saved_face_id if overflow-newline-into-fringe is enabled and line
-	is continued before or in middle of element from display vector.
+	* xdisp.c (move_it_in_display_line_to, display_line):
+	Restore saved_face_id if overflow-newline-into-fringe is enabled and
+	line is continued before or in middle of element from display vector.
 
 	* indent.c (Fvertical_motion): Fix last change.  Use another
 	method to detect if iterator moved too far ahead after reseat.
@@ -27,8 +31,7 @@
 
 2004-11-20  Luc Teirlinck  <teirllm@auburn.edu>
 
-	* fns.c (Fyes_or_no_p): Call Fread_from_minibuffer with extra
-	argument.
+	* fns.c (Fyes_or_no_p): Call Fread_from_minibuffer with extra argument.
 	* callint.c (Fcall_interactively): Ditto.
 
 2004-11-20  Stefan Monnier  <monnier@iro.umontreal.ca>
@@ -44,7 +47,7 @@
 	(Fread_from_minibuffer): New arg KEEP_ALL.  Callers changed.
 
 	* search.c (Vsearch_spaces_regexp):
-	Renamed from Vsearch_whitespace_regexp.  All uses changed.
+	Rename from Vsearch_whitespace_regexp.  All uses changed.
 
 2004-11-20  Thien-Thi Nguyen  <ttn@gnu.org>
 
@@ -86,8 +89,7 @@
 
 2004-11-16  Jan Dj,Ad(Brv  <jan.h.d@swipnet.se>
 
-	* gtkutil.c (xg_get_file_name): Fix typo in
-	HAVE_GTK_FILE_SELECTION_NEW.
+	* gtkutil.c (xg_get_file_name): Typo in HAVE_GTK_FILE_SELECTION_NEW.
 
 	* xmenu.c (x_menu_in_use): Remove.
 	(x_menu_set_in_use): Also set popup_activated_flag.
--- a/src/eval.c	Mon Nov 22 05:07:07 2004 +0000
+++ b/src/eval.c	Mon Nov 22 05:26:50 2004 +0000
@@ -786,6 +786,21 @@
     {
       if (NILP (tem))
 	Fset_default (sym, Feval (Fcar (tail)));
+      else
+	{ /* Check if there is really a global binding rather than just a let
+	     binding that shadows the global unboundness of the var.  */
+	  struct specbinding *pdl = specpdl_ptr;
+	  while (--pdl >= specpdl)
+	    {
+	      if (EQ (pdl->symbol, sym) && !pdl->func
+		  && EQ (pdl->old_value, Qunbound))
+		{
+		  message_with_string ("Warning: defvar ignored because %s is let-bound",
+				       SYMBOL_NAME (sym), 1);
+		  break;
+		}
+	    }
+	}
       tail = Fcdr (tail);
       tem = Fcar (tail);
       if (!NILP (tem))