diff options
author | Stefan Monnier <[email protected]> | 2007-11-19 07:44:30 +0000 |
---|---|---|
committer | Stefan Monnier <[email protected]> | 2007-11-19 07:44:30 +0000 |
commit | e7c10f83b381cbc91742f2e2021d9a411bef24e2 (patch) | |
tree | 7bbcecba05cbe383396071339569e3f948f60e52 | |
parent | 136eb6ed3f689a6348e5e1c23beef2563d70d6f1 (diff) |
(Fbuffer_local_value): Remove redundant test.
(swap_out_buffer_local_variables): Swap out binding in `buffer' rather
than in `current-buffer' to match the comment.
Do the swap using swap_in_global_binding.
-rw-r--r-- | src/ChangeLog | 5 | ||||
-rw-r--r-- | src/buffer.c | 26 |
2 files changed, 10 insertions, 21 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index e38d997c40..4113948bc9 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,5 +1,10 @@ 2007-11-19 Stefan Monnier <[email protected]> + * buffer.c (Fbuffer_local_value): Remove redundant test. + (swap_out_buffer_local_variables): Swap out binding in `buffer' rather + than in `current-buffer' to match the comment. + Do the swap using swap_in_global_binding. + * data.c (store_symval_forwarding, set_internal): * eval.c (specbind): Remove dead code. diff --git a/src/buffer.c b/src/buffer.c index c53d427499..045a22c8e3 100644 --- a/src/buffer.c +++ b/src/buffer.c @@ -895,8 +895,7 @@ is the default binding of the variable. */) CHECK_BUFFER (buffer); buf = XBUFFER (buffer); - if (SYMBOLP (variable)) - variable = indirect_variable (variable); + variable = indirect_variable (variable); /* Look in local_var_list */ result = Fassoc (variable, buf->local_var_alist); @@ -2518,26 +2517,11 @@ swap_out_buffer_local_variables (b) /* Need not do anything if some other buffer's binding is now encached. */ tem = XBUFFER_LOCAL_VALUE (SYMBOL_VALUE (sym))->buffer; - if (BUFFERP (tem) && XBUFFER (tem) == current_buffer) + if (EQ (tem, buffer)) { - /* Symbol is set up for this buffer's old local value. - Set it up for the current buffer with the default value. */ - - tem = XBUFFER_LOCAL_VALUE (SYMBOL_VALUE (sym))->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 - later in Fkill_all_local_variables, we don't lose the value. */ - XSETCDR (XCAR (tem), - do_symval_forwarding (XBUFFER_LOCAL_VALUE (SYMBOL_VALUE (sym))->realvalue)); - /* Switch to the symbol's default-value alist entry. */ - XSETCAR (tem, tem); - /* Mark it as current for buffer B. */ - XBUFFER_LOCAL_VALUE (SYMBOL_VALUE (sym))->buffer = buffer; - /* Store the current value into any forwarding in the symbol. */ - store_symval_forwarding (sym, - XBUFFER_LOCAL_VALUE (SYMBOL_VALUE (sym))->realvalue, - XCDR (tem), NULL); + /* Symbol is set up for this buffer's old local value: + swap it out! */ + swap_in_global_binding (sym); } } } |