mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2024-12-14 09:39:42 +00:00
Make `kill-all-local-variables' also remove lambda from hooks
* src/buffer.c (reset_buffer_local_variables): Also remove non-symbol elements from hook variables (bug#46407).
This commit is contained in:
parent
c175ad52fa
commit
b4fabb316d
8
etc/NEWS
8
etc/NEWS
@ -2829,6 +2829,14 @@ This is to keep the same behavior as Eshell.
|
||||
|
||||
* Incompatible Lisp Changes in Emacs 28.1
|
||||
|
||||
---
|
||||
** 'kill-all-local-variables' has changed how it handles non-symbol hooks.
|
||||
The function is documented to eliminated all buffer-local bindings
|
||||
except variables with a 'permanent-local' property, or hooks that
|
||||
have elements with a 'permanent-local-hook' property. In addition, it
|
||||
would also keep lambda expressions in hooks sometimes. The latter has
|
||||
now been changed: The function will now also remove these.
|
||||
|
||||
---
|
||||
** Some floating-point numbers are now handled differently by the Lisp reader.
|
||||
In previous versions of Emacs, numbers with a trailing dot and an exponent
|
||||
|
12
src/buffer.c
12
src/buffer.c
@ -1084,12 +1084,12 @@ reset_buffer_local_variables (struct buffer *b, bool permanent_too)
|
||||
for (newlist = Qnil; CONSP (list); list = XCDR (list))
|
||||
{
|
||||
Lisp_Object elt = XCAR (list);
|
||||
/* Preserve element ELT if it's t,
|
||||
if it is a function with a `permanent-local-hook' property,
|
||||
or if it's not a symbol. */
|
||||
if (! SYMBOLP (elt)
|
||||
|| EQ (elt, Qt)
|
||||
|| !NILP (Fget (elt, Qpermanent_local_hook)))
|
||||
/* Preserve element ELT if it's t, or if it is a
|
||||
function with a `permanent-local-hook'
|
||||
property. */
|
||||
if (EQ (elt, Qt)
|
||||
|| (SYMBOLP (elt)
|
||||
&& !NILP (Fget (elt, Qpermanent_local_hook))))
|
||||
newlist = Fcons (elt, newlist);
|
||||
}
|
||||
newlist = Fnreverse (newlist);
|
||||
|
Loading…
Reference in New Issue
Block a user