]> git.eshelyaron.com Git - emacs.git/commit
Restore specbound keyboard-locals in the correct KBOARD
authorPo Lu <luangruo@yahoo.com>
Thu, 23 May 2024 07:19:46 +0000 (15:19 +0800)
committerEshel Yaron <me@eshelyaron.com>
Thu, 23 May 2024 08:30:23 +0000 (10:30 +0200)
commitb3e8ab70f6085f568b5b83f8b679d0959ac9e912
tree72afb3fd6a3dd9a0af67f6c7efa41a2b2297750d
parent06077f88251e38193b4eb01bc27f8a8ba362ed2c
Restore specbound keyboard-locals in the correct KBOARD

* doc/lispref/variables.texi (Intro to Buffer-Local): Fix typo
in documentation.

* src/data.c (KBOARD_OBJFWDP): Move to lisp.h.
(kboard_for_bindings): New variable.
(do_symval_forwarding, store_symval_forwarding): Call
kboard_for_bindings rather than retrieving this value directly.
(set_default_internal): New argument WHERE; if valcontents be a
Lisp_Kboard_Objfwd and WHERE be specified, save the binding
there.  All callers changed.

* src/eval.c (specpdl_where): Adjust for changes in structure
layout.
(specpdl_kboard): New function.
(do_specbind): Clear let->where.kbd in ordinary SPECPDL_LETs,
and set it to the kboard where the binding will be installed if
binding keyboard forwards.
(specbind, do_one_unbind, specpdl_unrewind): Provide
specpdl_kboard in invocation of set_default_internal.

* src/keyboard.c (delete_kboard): Clean thread specpdls of
references to kboards.

* src/keyboard.h (KBOARD_OBJFWDP): Move from data.c.

* src/lisp.h (union specbinding) <let.where>: Convert into
union of KBOARD and Lisp_Object.

* src/thread.c (all_threads): Export.

* src/thread.h: Adjust correspondingly.

(cherry picked from commit 64cced2c37a9926fe6ff1c6ad9b9540abd47e21c)
doc/lispref/variables.texi
src/data.c
src/eval.c
src/keyboard.c
src/keyboard.h
src/lisp.h
src/thread.c
src/thread.h