changeset 2486:d5d7e6996604

(Fkill_all_local_variables): Store each var's current value in the buffer's alist entry, before reverting to the default value.
author Richard M. Stallman <rms@gnu.org>
date Thu, 08 Apr 1993 07:10:42 +0000
parents c34bbe650160
children 7ba321c5b44d
files src/buffer.c
diffstat 1 files changed, 8 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/buffer.c	Thu Apr 08 07:10:13 1993 +0000
+++ b/src/buffer.c	Thu Apr 08 07:10:42 1993 +0000
@@ -1149,8 +1149,16 @@
 	     Set it up for the current buffer with the default value.  */
 
 	  tem = XCONS (XCONS (XSYMBOL (sym)->value)->cdr)->cdr;
+	  /* Store the symbol's current value into the alist entry
+	     it is currently set up for.  This is so that, if the
+	     local is marked permanent, and we make it local again below,
+	     we don't lose the value.  */
+	  XCONS (XCONS (tem)->car)->cdr = XCONS (XSYMBOL (sym)->value)->car;
+	  /* Switch to the symbol's default-value alist entry.  */
 	  XCONS (tem)->car = tem;
+	  /* Mark it as current for the current buffer.  */
 	  XCONS (XCONS (XSYMBOL (sym)->value)->cdr)->car = Fcurrent_buffer ();
+	  /* Store the current value into any forwarding in the symbol.  */
 	  store_symval_forwarding (sym, XCONS (XSYMBOL (sym)->value)->car,
 				   XCONS (tem)->cdr);
 	}