From e7c10f83b381cbc91742f2e2021d9a411bef24e2 Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Mon, 19 Nov 2007 07:44:30 +0000 Subject: [PATCH] (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. --- src/ChangeLog | 5 +++++ src/buffer.c | 26 +++++--------------------- 2 files changed, 10 insertions(+), 21 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index e38d997c405..4113948bc97 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,5 +1,10 @@ 2007-11-19 Stefan Monnier + * 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 c53d427499a..045a22c8e31 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); } } } -- 2.39.2