Mercurial > emacs
diff src/buffer.c @ 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 | 6f4b9c548425 |
children | 3aa2f3b35353 |
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); }