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:
parent
136eb6ed3f
commit
e7c10f83b3
@ -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.
|
||||
|
||||
|
26
src/buffer.c
26
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user