1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2025-02-05 20:43:08 +00:00

(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.
This commit is contained in:
Stefan Monnier 2007-11-19 07:44:30 +00:00
parent 136eb6ed3f
commit e7c10f83b3
2 changed files with 10 additions and 21 deletions

View File

@ -1,5 +1,10 @@
2007-11-19 Stefan Monnier <monnier@iro.umontreal.ca>
* 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.

View File

@ -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);
}
}
}