]> git.eshelyaron.com Git - emacs.git/commitdiff
(store_symval_forwarding): Handle setting default-fill-column, etc.,
authorRichard M. Stallman <rms@gnu.org>
Mon, 29 Dec 2003 11:29:18 +0000 (11:29 +0000)
committerRichard M. Stallman <rms@gnu.org>
Mon, 29 Dec 2003 11:29:18 +0000 (11:29 +0000)
by changing buffers that use the default.

src/ChangeLog
src/data.c

index 119a849ba8dfb7da90ece62303a4864f718321f9..17135ca34c76e62d9817e6718d60f6fab1cfbd67 100644 (file)
@@ -1,3 +1,16 @@
+2003-12-29  Richard M. Stallman  <rms@gnu.org>
+
+       * data.c (store_symval_forwarding): Handle setting
+       default-fill-column, etc., by changing the value in
+       buffers that use the default.
+
+       * minibuf.c (Fset_minibuffer_window): Doc fix.
+
+       * fileio.c (choose_write_coding_system): Ignore auto_saving
+       if using the visited file for auto saves.
+       (Fwrite_region): Don't update SAVE_MODIFF
+       if auto-saving in visited file.
+
 2003-12-29  Kenichi Handa  <handa@m17n.org>
 
        * dispextern.h (face_font_available_p): Extern it.
 
        * xfaces.c (face_font_available_p): New function.
 
+2003-12-28  Richard M. Stallman  <rms@gnu.org>
+
+       * buffer.c (Fother_buffer): Don't crash if BUF is nil
+       or if its name is nil.
+
+       * buffer.c (Fkill_buffer): Don't delete auto-save file
+       if it's the same as the visited file.
+
 2003-12-28  Luc Teirlinck  <teirllm@auburn.edu>
 
        * coding.c (Fcheck_coding_system): Doc fix.
index a246271c1f666810cafa2565d34af762156d0d4f..c4e3937f3fa26eb59af235ac6f9881e5c9a227cb 100644 (file)
@@ -873,6 +873,8 @@ store_symval_forwarding (symbol, valcontents, newval, buf)
      register Lisp_Object valcontents, newval;
      struct buffer *buf;
 {
+  int offset;
+
   switch (SWITCH_ENUM_CAST (XTYPE (valcontents)))
     {
     case Lisp_Misc:
@@ -892,6 +894,36 @@ store_symval_forwarding (symbol, valcontents, newval, buf)
 
        case Lisp_Misc_Objfwd:
          *XOBJFWD (valcontents)->objvar = newval;
+
+         /* If this variable is a default for something stored
+            in the buffer itself, such as default-fill-column,
+            find the buffers that don't have local values for it
+            and update them.  */
+         if (XOBJFWD (valcontents)->objvar > (Lisp_Object *) &buffer_defaults
+             && XOBJFWD (valcontents)->objvar < (Lisp_Object *) (&buffer_defaults + 1))
+           {
+             int offset = ((char *) XOBJFWD (valcontents)->objvar
+                           - (char *) &buffer_defaults);
+             int idx = PER_BUFFER_IDX (offset);
+
+             Lisp_Object tail, buf;
+
+             if (idx <= 0)
+               break;
+
+             for (tail = Vbuffer_alist; CONSP (tail); tail = XCDR (tail))
+               {
+                 Lisp_Object buf;
+                 struct buffer *b;
+
+                 buf = Fcdr (XCAR (tail));
+                 if (!BUFFERP (buf)) continue;
+                 b = XBUFFER (buf);
+
+                 if (! PER_BUFFER_VALUE_P (b, idx))
+                   PER_BUFFER_VALUE (b, offset) = newval;
+               }
+           }
          break;
 
        case Lisp_Misc_Buffer_Objfwd: