Package: emacs;
Reported by: Bohong Huang <bohonghuang <at> qq.com>
Date: Sun, 2 Nov 2025 07:58:01 UTC
Severity: normal
Found in version 31.0.50
Done: Eli Zaretskii <eliz <at> gnu.org>
To reply to this bug, email your comments to 79756 AT debbugs.gnu.org.
There is no need to reopen the bug first.
Toggle the display of automated, internal messages from the tracker.
View this report as an mbox folder, status mbox, maintainer mbox
bug-gnu-emacs <at> gnu.org:bug#79756; Package emacs.
(Sun, 02 Nov 2025 07:58:01 GMT) Full text and rfc822 format available.Bohong Huang <bohonghuang <at> qq.com>:bug-gnu-emacs <at> gnu.org.
(Sun, 02 Nov 2025 07:58:02 GMT) Full text and rfc822 format available.Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
From: Bohong Huang <bohonghuang <at> qq.com> To: bug-gnu-emacs <at> gnu.org Subject: 31.0.50; Seemingly unintended behavior of dynamic variables and buffer-local variables Date: Sun, 02 Nov 2025 15:53:12 +0800
Hello, Emacs maintainers,
While using buffer-local variables together with dynamic binding, I
discovered that when a variable is locally bound in a buffer, it cannot
be accessed through `let` dynamic binding in other buffers (e.g., when
using `with-current-buffer` to switch the current buffer). For example:
Normal case:
(defvar var1 1)
(let ((var1 2))
(with-temp-buffer
var1)) ; => 2
Abnormal cases:
(defvar var2)
(setq-local var2 1)
(let ((var2 2))
(with-temp-buffer
var2)) ; => (void-variable var2)
(defvar var3 0)
(setq-local var3 1)
(let ((var3 2))
(with-temp-buffer
var3)) ; => 0
This appears to happen whenever a variable is locally bound in the
current buffer - when switching to other buffers within the `let` body,
only the variable's default value can be accessed. If it's not globally
bound, it will throw an error. I couldn't find any relevant
documentation about this behavior. Is this expected? As a package
developer, I expect variables bound by `let` to have the highest
priority for access within their body, followed by buffer-local values,
then global (default) values. The current behavior seems
counterintuitive to me: as long as certain variables are locally bound
in the current buffer (e.g., through .dir-locals.el or
local-variable-prop-line), programmatically temporary changes to them
will be restricted. It is necessary to ensure that potential usage of
these variables does not occur within forms that change the current
buffer, such as `with-current-buffer` or `with-temp-buffer`, otherwise
the temporary bindings will become ineffective.
Thank you for the time you devoted to paying attention to this issue.
Looking forward to your response.
Best regards,
Bohong Huang
In GNU Emacs 31.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version
3.24.50, cairo version 1.18.4) of 2025-10-26 built on coco24-clevo
Repository revision: 6033eb08f4d975783edf86227621dd532a988644
Repository branch: makepkg
System Description: Manjaro Linux
Configured using:
'configure --prefix=/usr --sysconfdir=/etc --libexecdir=/usr/lib
--localstatedir=/var --mandir=/usr/share/man --with-gameuser=:games
--with-modules --without-libotf --without-m17n-flt --without-gconf
--without-gsettings --enable-link-time-optimization
--with-native-compilation --with-pgtk --with-mps=yes --without-xaw3d
--with-sound=alsa --without-compress-install
'--program-transform-name=s/\([ec]tags\)/\1.emacs/'
'CFLAGS=-march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions
-Wp,-D_FORTIFY_SOURCE=3 -Wformat -Werror=format-security
-fstack-clash-protection -fcf-protection -fno-omit-frame-pointer
-mno-omit-leaf-frame-pointer -fuse-ld=mold -I/usr/include -fuse-ld=mold
-I/usr/include -flto=auto' 'CPPFLAGS= -I/usr/include -I/usr/include'
'LDFLAGS=-Wl,-O1 -Wl,--sort-common -Wl,--as-needed -Wl,-z,relro
-Wl,-z,now -Wl,-z,pack-relative-relocs -L/usr/lib -L/usr/lib
-flto=auto''
Configured features:
ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM HARFBUZZ JPEG LCMS2
LIBSYSTEMD LIBXML2 MODULES MPS NATIVE_COMP NOTIFY INOTIFY PDUMPER PGTK
PNG RSVG SECCOMP SOUND SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS
TREE_SITTER WEBP XIM GTK3 ZLIB
Important settings:
value of $LC_MONETARY: zh_CN.UTF-8
value of $LC_NUMERIC: zh_CN.UTF-8
value of $LC_TIME: zh_CN.UTF-8
value of $LANG: zh_CN.UTF-8
value of $XMODIFIERS: @im=fcitx
locale-coding-system: utf-8-unix
Major mode: Markdown
Minor modes in effect:
corfu-popupinfo-mode: t
org-roam-db-autosync-mode: t
org-edna-mode: t
recentf-mode: t
emms-lyrics-buffer-auto-scroll-mode: t
mpvi-emms-integrated-mode: t
emms-playing-time-display-mode: t
emms-playing-time-mode: t
gptel-mode: t
savehist-mode: t
nerd-icons-completion-mode: t
marginalia-mode: t
tempel-tab-mode: t
show-smartparens-mode: t
smartparens-mode: t
repeat-mode: t
which-key-mode: t
sis-global-context-mode: t
sis-context-mode: t
sis-global-respect-mode: t
sis-global-cursor-color-mode: t
sis-auto-refresh-mode: t
isearch-mb-mode: t
global-treesit-auto-mode: t
pixel-scroll-precision-mode: t
popper-echo-mode: t
popper-mode: t
cnfonts-mode: t
vertico-mouse-mode: t
vertico-mode: t
mode-line-bell-mode: t
doom-modeline-mode: t
winner-mode: t
minibuffer-depth-indicate-mode: t
override-global-mode: t
url-handler-mode: t
tooltip-mode: t
global-eldoc-mode: t
eldoc-mode: t
electric-indent-mode: t
mouse-wheel-mode: t
file-name-shadow-mode: t
context-menu-mode: t
global-font-lock-mode: t
font-lock-mode: t
blink-cursor-mode: t
minibuffer-nonselected-mode: t
minibuffer-regexp-mode: t
column-number-mode: t
line-number-mode: t
transient-mark-mode: t
auto-composition-mode: t
auto-encryption-mode: t
auto-compression-mode: t
Load-path shadows:
/home/coco24/.emacs.d/elpa/vertico-directory-20221123.14415/vertico-directory hides /home/coco24/.emacs.d/elpa/vertico-20251010.657/vertico-directory
/home/coco24/.emacs.d/elpa/cmake-mode-20250930.1448/cmake-mode hides /usr/share/emacs/site-lisp/cmake-mode
/home/coco24/.emacs.d/elpa/which-key-20240620.2145/which-key hides /usr/share/emacs/31.0.50/lisp/which-key
/home/coco24/.emacs.d/elpa/transient-20251006.1815/transient hides /usr/share/emacs/31.0.50/lisp/transient
/home/coco24/.emacs.d/elpa/jsonrpc-1.0.25.0.20250907.123924/jsonrpc hides /usr/share/emacs/31.0.50/lisp/jsonrpc
/home/coco24/.emacs.d/elpa/lua-mode-20250310.1150/lua-mode hides /usr/share/emacs/31.0.50/lisp/progmodes/lua-mode
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/ox hides /usr/share/emacs/31.0.50/lisp/org/ox
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/ox-texinfo hides /usr/share/emacs/31.0.50/lisp/org/ox-texinfo
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/ox-publish hides /usr/share/emacs/31.0.50/lisp/org/ox-publish
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/ox-org hides /usr/share/emacs/31.0.50/lisp/org/ox-org
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/ox-odt hides /usr/share/emacs/31.0.50/lisp/org/ox-odt
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/ox-md hides /usr/share/emacs/31.0.50/lisp/org/ox-md
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/ox-man hides /usr/share/emacs/31.0.50/lisp/org/ox-man
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/ox-latex hides /usr/share/emacs/31.0.50/lisp/org/ox-latex
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/ox-koma-letter hides /usr/share/emacs/31.0.50/lisp/org/ox-koma-letter
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/ox-icalendar hides /usr/share/emacs/31.0.50/lisp/org/ox-icalendar
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/ox-html hides /usr/share/emacs/31.0.50/lisp/org/ox-html
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/ox-beamer hides /usr/share/emacs/31.0.50/lisp/org/ox-beamer
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/ox-ascii hides /usr/share/emacs/31.0.50/lisp/org/ox-ascii
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/org hides /usr/share/emacs/31.0.50/lisp/org/org
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/org-version hides /usr/share/emacs/31.0.50/lisp/org/org-version
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/org-timer hides /usr/share/emacs/31.0.50/lisp/org/org-timer
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/org-tempo hides /usr/share/emacs/31.0.50/lisp/org/org-tempo
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/org-table hides /usr/share/emacs/31.0.50/lisp/org/org-table
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/org-src hides /usr/share/emacs/31.0.50/lisp/org/org-src
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/org-refile hides /usr/share/emacs/31.0.50/lisp/org/org-refile
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/org-protocol hides /usr/share/emacs/31.0.50/lisp/org/org-protocol
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/org-plot hides /usr/share/emacs/31.0.50/lisp/org/org-plot
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/org-persist hides /usr/share/emacs/31.0.50/lisp/org/org-persist
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/org-pcomplete hides /usr/share/emacs/31.0.50/lisp/org/org-pcomplete
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/org-num hides /usr/share/emacs/31.0.50/lisp/org/org-num
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/org-mouse hides /usr/share/emacs/31.0.50/lisp/org/org-mouse
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/org-mobile hides /usr/share/emacs/31.0.50/lisp/org/org-mobile
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/org-macs hides /usr/share/emacs/31.0.50/lisp/org/org-macs
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/org-macro hides /usr/share/emacs/31.0.50/lisp/org/org-macro
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/org-loaddefs hides /usr/share/emacs/31.0.50/lisp/org/org-loaddefs
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/org-list hides /usr/share/emacs/31.0.50/lisp/org/org-list
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/org-lint hides /usr/share/emacs/31.0.50/lisp/org/org-lint
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/org-keys hides /usr/share/emacs/31.0.50/lisp/org/org-keys
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/org-inlinetask hides /usr/share/emacs/31.0.50/lisp/org/org-inlinetask
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/org-indent hides /usr/share/emacs/31.0.50/lisp/org/org-indent
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/org-id hides /usr/share/emacs/31.0.50/lisp/org/org-id
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/org-habit hides /usr/share/emacs/31.0.50/lisp/org/org-habit
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/org-goto hides /usr/share/emacs/31.0.50/lisp/org/org-goto
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/org-footnote hides /usr/share/emacs/31.0.50/lisp/org/org-footnote
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/org-fold hides /usr/share/emacs/31.0.50/lisp/org/org-fold
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/org-fold-core hides /usr/share/emacs/31.0.50/lisp/org/org-fold-core
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/org-feed hides /usr/share/emacs/31.0.50/lisp/org/org-feed
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/org-faces hides /usr/share/emacs/31.0.50/lisp/org/org-faces
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/org-entities hides /usr/share/emacs/31.0.50/lisp/org/org-entities
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/org-element hides /usr/share/emacs/31.0.50/lisp/org/org-element
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/org-element-ast hides /usr/share/emacs/31.0.50/lisp/org/org-element-ast
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/org-duration hides /usr/share/emacs/31.0.50/lisp/org/org-duration
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/org-datetree hides /usr/share/emacs/31.0.50/lisp/org/org-datetree
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/org-cycle hides /usr/share/emacs/31.0.50/lisp/org/org-cycle
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/org-ctags hides /usr/share/emacs/31.0.50/lisp/org/org-ctags
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/org-crypt hides /usr/share/emacs/31.0.50/lisp/org/org-crypt
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/org-compat hides /usr/share/emacs/31.0.50/lisp/org/org-compat
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/org-colview hides /usr/share/emacs/31.0.50/lisp/org/org-colview
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/org-clock hides /usr/share/emacs/31.0.50/lisp/org/org-clock
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/org-capture hides /usr/share/emacs/31.0.50/lisp/org/org-capture
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/org-attach hides /usr/share/emacs/31.0.50/lisp/org/org-attach
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/org-attach-git hides /usr/share/emacs/31.0.50/lisp/org/org-attach-git
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/org-archive hides /usr/share/emacs/31.0.50/lisp/org/org-archive
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/org-agenda hides /usr/share/emacs/31.0.50/lisp/org/org-agenda
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/ol hides /usr/share/emacs/31.0.50/lisp/org/ol
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/ol-w3m hides /usr/share/emacs/31.0.50/lisp/org/ol-w3m
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/ol-rmail hides /usr/share/emacs/31.0.50/lisp/org/ol-rmail
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/ol-mhe hides /usr/share/emacs/31.0.50/lisp/org/ol-mhe
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/ol-man hides /usr/share/emacs/31.0.50/lisp/org/ol-man
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/ol-irc hides /usr/share/emacs/31.0.50/lisp/org/ol-irc
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/ol-info hides /usr/share/emacs/31.0.50/lisp/org/ol-info
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/ol-gnus hides /usr/share/emacs/31.0.50/lisp/org/ol-gnus
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/ol-eww hides /usr/share/emacs/31.0.50/lisp/org/ol-eww
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/ol-eshell hides /usr/share/emacs/31.0.50/lisp/org/ol-eshell
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/ol-doi hides /usr/share/emacs/31.0.50/lisp/org/ol-doi
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/ol-docview hides /usr/share/emacs/31.0.50/lisp/org/ol-docview
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/ol-bibtex hides /usr/share/emacs/31.0.50/lisp/org/ol-bibtex
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/ol-bbdb hides /usr/share/emacs/31.0.50/lisp/org/ol-bbdb
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/oc hides /usr/share/emacs/31.0.50/lisp/org/oc
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/oc-natbib hides /usr/share/emacs/31.0.50/lisp/org/oc-natbib
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/oc-csl hides /usr/share/emacs/31.0.50/lisp/org/oc-csl
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/oc-bibtex hides /usr/share/emacs/31.0.50/lisp/org/oc-bibtex
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/oc-biblatex hides /usr/share/emacs/31.0.50/lisp/org/oc-biblatex
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/oc-basic hides /usr/share/emacs/31.0.50/lisp/org/oc-basic
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/ob hides /usr/share/emacs/31.0.50/lisp/org/ob
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/ob-tangle hides /usr/share/emacs/31.0.50/lisp/org/ob-tangle
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/ob-table hides /usr/share/emacs/31.0.50/lisp/org/ob-table
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/ob-sqlite hides /usr/share/emacs/31.0.50/lisp/org/ob-sqlite
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/ob-sql hides /usr/share/emacs/31.0.50/lisp/org/ob-sql
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/ob-shell hides /usr/share/emacs/31.0.50/lisp/org/ob-shell
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/ob-sed hides /usr/share/emacs/31.0.50/lisp/org/ob-sed
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/ob-screen hides /usr/share/emacs/31.0.50/lisp/org/ob-screen
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/ob-scheme hides /usr/share/emacs/31.0.50/lisp/org/ob-scheme
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/ob-sass hides /usr/share/emacs/31.0.50/lisp/org/ob-sass
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/ob-ruby hides /usr/share/emacs/31.0.50/lisp/org/ob-ruby
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/ob-ref hides /usr/share/emacs/31.0.50/lisp/org/ob-ref
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/ob-python hides /usr/share/emacs/31.0.50/lisp/org/ob-python
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/ob-processing hides /usr/share/emacs/31.0.50/lisp/org/ob-processing
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/ob-plantuml hides /usr/share/emacs/31.0.50/lisp/org/ob-plantuml
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/ob-perl hides /usr/share/emacs/31.0.50/lisp/org/ob-perl
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/ob-org hides /usr/share/emacs/31.0.50/lisp/org/ob-org
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/ob-octave hides /usr/share/emacs/31.0.50/lisp/org/ob-octave
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/ob-ocaml hides /usr/share/emacs/31.0.50/lisp/org/ob-ocaml
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/ob-maxima hides /usr/share/emacs/31.0.50/lisp/org/ob-maxima
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/ob-matlab hides /usr/share/emacs/31.0.50/lisp/org/ob-matlab
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/ob-makefile hides /usr/share/emacs/31.0.50/lisp/org/ob-makefile
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/ob-lua hides /usr/share/emacs/31.0.50/lisp/org/ob-lua
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/ob-lob hides /usr/share/emacs/31.0.50/lisp/org/ob-lob
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/ob-lisp hides /usr/share/emacs/31.0.50/lisp/org/ob-lisp
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/ob-lilypond hides /usr/share/emacs/31.0.50/lisp/org/ob-lilypond
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/ob-latex hides /usr/share/emacs/31.0.50/lisp/org/ob-latex
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/ob-julia hides /usr/share/emacs/31.0.50/lisp/org/ob-julia
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/ob-js hides /usr/share/emacs/31.0.50/lisp/org/ob-js
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/ob-java hides /usr/share/emacs/31.0.50/lisp/org/ob-java
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/ob-haskell hides /usr/share/emacs/31.0.50/lisp/org/ob-haskell
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/ob-groovy hides /usr/share/emacs/31.0.50/lisp/org/ob-groovy
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/ob-gnuplot hides /usr/share/emacs/31.0.50/lisp/org/ob-gnuplot
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/ob-fortran hides /usr/share/emacs/31.0.50/lisp/org/ob-fortran
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/ob-forth hides /usr/share/emacs/31.0.50/lisp/org/ob-forth
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/ob-exp hides /usr/share/emacs/31.0.50/lisp/org/ob-exp
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/ob-eval hides /usr/share/emacs/31.0.50/lisp/org/ob-eval
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/ob-eshell hides /usr/share/emacs/31.0.50/lisp/org/ob-eshell
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/ob-emacs-lisp hides /usr/share/emacs/31.0.50/lisp/org/ob-emacs-lisp
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/ob-dot hides /usr/share/emacs/31.0.50/lisp/org/ob-dot
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/ob-ditaa hides /usr/share/emacs/31.0.50/lisp/org/ob-ditaa
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/ob-css hides /usr/share/emacs/31.0.50/lisp/org/ob-css
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/ob-core hides /usr/share/emacs/31.0.50/lisp/org/ob-core
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/ob-comint hides /usr/share/emacs/31.0.50/lisp/org/ob-comint
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/ob-clojure hides /usr/share/emacs/31.0.50/lisp/org/ob-clojure
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/ob-calc hides /usr/share/emacs/31.0.50/lisp/org/ob-calc
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/ob-awk hides /usr/share/emacs/31.0.50/lisp/org/ob-awk
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/ob-R hides /usr/share/emacs/31.0.50/lisp/org/ob-R
/home/coco24/.emacs.d/elpa/org-9.8pre0.20251019.124644/ob-C hides /usr/share/emacs/31.0.50/lisp/org/ob-C
Features:
(shadow mail-extr cl-print debug backtrace expand-region
text-mode-expansions the-org-mode-expansions er-basic-expansions
expand-region-core expand-region-custom cape-char dabbrev cape-keyword
cape checkdoc flymake-popon posframe popon flymake rainbow-delimiters
undo-hl display-line-numbers corfu-popupinfo nerd-icons-corfu corfu
indent-yank hideshow tramp-cmds tramp-sh tramp-cache time-stamp tramp
trampver tramp-integration tramp-message tramp-compat shell parse-time
iso8601 tramp-loaddefs vc-git diff-mode track-changes files-x
vc-dispatcher smartparens-go go-mode find-file etags fileloop xref
project consult bookmark dom network-stream url-cache gt gt-text-utility
gt-extensions gt-taker-buffer-prompt gt-taker-fresh-words
gt-render-posframe gt-render-overlay gt-render-kill-ring
gt-render-insert gt-render-buffer gt-faces gt-render-alert
gt-engine-echo gt-engine-libre gt-engine-chatgpt gt-engine-youdao
gt-engine-osxdict gt-engine-stardict gt-engine-deepl
gt-engine-google-rpc gt-engine-google gt-engine-bing gt-core pdd gnutls
socks url-http url-auth url-gw nsm emacsql-sqlite-builtin
org-roam-protocol org-roam-migrate org-roam-log org-roam-mode
org-roam-capture org-roam-id org-roam-node org-roam-db org-roam-utils
org-roam-compat org-roam smartparens-org org-ext org-attach
org-gtd-habitica appt diary-lib diary-loaddefs org-gtd org-gtd-upgrades
org-habit org-gtd-oops org-gtd-review org-gtd-skip org-gtd-mode
org-gtd-areas-of-focus org-gtd-organize org-gtd-process org-gtd-capture
org-gtd-projects org-gtd-delegate org-gtd-trash org-gtd-single-action
org-gtd-quick-action org-gtd-incubate org-gtd-knowledge org-gtd-archive
org-gtd-agenda org-archive org-gtd-habit org-gtd-calendar org-gtd-refile
org-gtd-clarify org-gtd-horizons org-gtd-files org-gtd-id org-gtd-core
org-gtd-backward-compatibility org-edna org-agenda-property recentf
tree-widget org-agenda org-protocol org-capture habitica org-element
org-persist org-id org-refile avl-tree generator
emms-vgm-default-players emms-vgm emms-vgm-m3u parsec emms-ext
pretty-hydra hydra lv emms-idapi-browser emms-idapi
emms-idapi-musicbrainz emms-mpris dbus emms-librefm-stream xml
emms-librefm-scrobbler emms-playlist-limit emms-i18n emms-history
emms-score emms-stream-info emms-metaplaylist-mode emms-bookmarks
emms-cue emms-mode-line-icon emms-browser emms-filters sort emms-volume
emms-volume-mpv emms-volume-sndioctl emms-volume-mixerctl
emms-volume-pulse emms-volume-amixer emms-playlist-sort emms-last-played
emms-player-xine emms-player-mpd tq emms-lyrics emms-url emms-streams
emms-show-all emms-tag-editor emms-tag-tracktag emms-mark emms-mode-line
emms-cache emms-info-native emms-info-native-spc emms-info-native-mp3
emms-info-native-ogg emms-info-native-opus emms-info-native-flac
emms-info-native-vorbis bindat emms-info-exiftool emms-info-tinytag
emms-info-metaflac emms-info-opusinfo emms-info-ogginfo
emms-info-mp3info emms-playlist-mode emms-player-vlc emms-player-mplayer
emms-source-playlist emms-setup mpvi mpvi-websocket mpvi-bilibili
mpvi-living mpvi-subtitle mpvi-emms emms-source-file locate
emms-player-mpv emms-playing-time emms-info emms-later-do
emms-player-simple emms emms-compat ffap org ob ob-tangle ob-ref ob-lob
ob-table ob-exp org-macro org-src sh-script smie executable ob-comint
org-element-ast inline org-pcomplete pcomplete org-list org-footnote
org-faces org-entities ob-emacs-lisp ob-core ob-eval org-cycle org-table
ol org-fold org-fold-core org-keys oc org-loaddefs find-func cal-china-x
cal-china lunar solar cal-dst holidays holiday-loaddefs calendar-ext
cal-iso cal-menu calendar cal-loaddefs org-version org-compat org-macs
emacsql-sqlite emacsql emacsql-compiler magit-section cursor-sensor
llama cond-let crm gptel-transient transient format-spec
smartparens-markdown markdown-mode edit-indirect noutline outline
gptel-openai-extras gptel gptel-request gptel-openai ace-window avy
emacsbug lisp-mnt message yank-media puny dired-ext dired dired-loaddefs
rfc822 mml mml-sec epa derived epg rfc6068 epg-config mm-decode
mm-bodies mm-encode mailabbrev gmm-utils mailheader sendmail mail-parse
rfc2231 rfc2047 rfc2045 ietf-drums vertico-directory help-fns radix-tree
mule-util vertico-sort orderless savehist nerd-icons-completion
marginalia tempel smartparens-config smartparens-text smartparens
loadhist thingatpt repeat which-key pulse face-remap color init compile
comint ansi-osc ansi-color sis isearch-mb ai-support language-support
treesit-auto treesit pixel-scroll cua-base popper-echo popper cnfonts
vlf-setup advice vertico-mouse vertico mode-line-bell doom-modeline
doom-modeline-segments doom-modeline-env doom-modeline-core shrink-path
f s dash compat nerd-icons nerd-icons-faces nerd-icons-data
nerd-icons-data-mdicon nerd-icons-data-flicon nerd-icons-data-codicon
nerd-icons-data-devicon nerd-icons-data-sucicon nerd-icons-data-wicon
nerd-icons-data-faicon nerd-icons-data-powerline nerd-icons-data-octicon
nerd-icons-data-pomicon nerd-icons-data-ipsicon winner cus-edit pp ring
mule-cmds paragraphs hl-line monokai-theme finder-inf gnus nnheader
gnus-util text-property-search time-date mail-utils range mm-util
mail-prsvr wid-edit cus-start cus-load comp-run kinsoku startup comp
comp-cstr comp-common warnings mb-depth elisp-mode-ext edmacro kmacro
emacs-ext quelpa-use-package cl-extra help-mode use-package
use-package-ensure use-package-delight use-package-diminish
use-package-bind-key bind-key easy-mmode use-package-core
app-launcher-autoloads auctex-autoloads tex-site
blueprint-mode-autoloads breadcrumb-autoloads buffer-timer-autoloads
cal-china-x-autoloads cape-autoloads cdlatex-autoloads circe-autoloads
citeproc-autoloads citre-autoloads cl-load-time-value-test-autoloads
clojure-mode-autoloads cmake-mode-autoloads cnfonts-autoloads
command-log-mode-autoloads consult-dir-autoloads
consult-eglot-embark-autoloads consult-eglot-autoloads
consult-emms-autoloads consult-lsp-autoloads
corfu-doc-terminal-autoloads corfu-doc-autoloads
corfu-terminal-autoloads corfu-autoloads crux-autoloads
csv-mode-autoloads dired-narrow-autoloads dired-hacks-utils-autoloads
diredfl-autoloads doom-modeline-autoloads
doom-modeline-pokemon-autoloads doom-themes-autoloads
drag-stuff-autoloads eat-autoloads edit-server-autoloads
eglot-inactive-regions-autoloads eglot-tempel-autoloads
eldoc-box-autoloads eldoc-overlay-autoloads elmacro-autoloads
embark-consult-autoloads consult-autoloads embark-autoloads
emms-vgm-autoloads esh-autosuggest-autoloads company-autoloads
eshell-outline-autoloads eshell-prompt-extras-autoloads
eshell-syntax-highlighting-autoloads expand-region-autoloads
fd-dired-autoloads fish-completion-autoloads fish-mode-autoloads
flymake-popon-autoloads focus-autoloads frameshot-autoloads
glsl-mode-autoloads go-mode-autoloads gptel-autoloads gt-autoloads
habitica-autoloads hide-mode-line-autoloads
highlight-indent-guides-autoloads htmlize-autoloads
indent-yank-autoloads inline-docs-autoloads isearch-mb-autoloads
json-mode-autoloads rx json-snatcher-autoloads jsonrpc-autoloads
kind-icon-autoloads kotlin-mode-autoloads kotlin-ts-mode-autoloads
latex-math-preview-autoloads leetcode-autoloads aio-autoloads
log4e-autoloads lsp-java-autoloads dap-mode-autoloads
lsp-docker-autoloads bui-autoloads lsp-pyright-autoloads
lsp-treemacs-autoloads lsp-ui-autoloads lsp-mode-autoloads
lua-mode-autoloads macrostep-geiser-autoloads geiser-autoloads
magit-autoloads pcase marginalia-autoloads markless-autoloads
material-pbm-icons-autoloads mode-fontify-autoloads
mode-line-bell-autoloads monokai-theme-autoloads mpvi-autoloads
multiple-cursors-autoloads nerd-icons-completion-autoloads
nerd-icons-corfu-autoloads nerd-icons-dired-autoloads
nerd-icons-grep-autoloads nerd-icons-ibuffer-autoloads
nhexl-mode-autoloads nim-mode-autoloads flycheck-nimsuggest-autoloads
flycheck-autoloads commenter-autoloads epc-autoloads ctable-autoloads
concurrent-autoloads deferred-autoloads nov-autoloads esxml-autoloads
ob-svgbob-autoloads orderless-autoloads org-appear-autoloads
org-attach-refactor-autoloads org-bars-autoloads org-download-autoloads
async-autoloads org-emms-autoloads emms-autoloads org-englearn-autoloads
org-gtd-autoloads org-agenda-property-autoloads org-edna-autoloads
org-gtd-habitica-autoloads org-inc-autoloads org-journal-autoloads
org-media-note-autoloads mpv-autoloads org-mime-autoloads
org-pdftools-autoloads org-noter-autoloads org-remark-autoloads
org-roam-ui-autoloads org-roam-autoloads magit-section-autoloads
llama-autoloads cond-let-autoloads emacsql-autoloads org-srs-autoloads
fsrs-autoloads org-autoloads org-tree-slide-autoloads ox-hugo-autoloads
package-lint-flymake-autoloads package-lint-autoloads parsebib-autoloads
parsec-autoloads paw-autoloads pdd-autoloads pdf-tools-autoloads
phi-search-autoloads pkg-info-autoloads epl-autoloads polymode-autoloads
popon-autoloads popper-autoloads pretty-hydra-autoloads
promise-autoloads pyvenv-autoloads quelpa-use-package-autoloads
quelpa-autoloads queue-autoloads quick-peek-autoloads quickrun-autoloads
racket-mode-autoloads rainbow-delimiters-autoloads redacted-autoloads
request-autoloads rime-autoloads popup-autoloads rustic-autoloads
markdown-mode-autoloads rust-mode-autoloads sbt-mode-autoloads
scad-preview-autoloads scad-mode-autoloads scala-mode-autoloads
separedit-autoloads edit-indirect-autoloads shell-maker-autoloads
shrink-path-autoloads f-autoloads simple-httpd-autoloads sis-autoloads
sloff-autoloads sly-macrostep-autoloads macrostep-autoloads
sly-autoloads smartparens-autoloads spinner-autoloads
string-inflection-autoloads subed-autoloads svg-lib-autoloads
tab-line-nerd-icons-autoloads nerd-icons-autoloads tablist-autoloads
tempel-autoloads terminal-focus-reporting-autoloads tomelr-autoloads
toml-mode-autoloads transient-autoloads treemacs-autoloads
cfrs-autoloads ht-autoloads hydra-autoloads lv-autoloads
pfuture-autoloads ace-window-autoloads avy-autoloads s-autoloads
dash-autoloads treesit-auto-autoloads typescript-mode-autoloads
undo-hl-autoloads vertico-directory-autoloads vertico-posframe-autoloads
vertico-autoloads posframe-autoloads vlf-autoloads websocket-autoloads
wgrep-autoloads which-key-autoloads info with-editor-autoloads
xclip-autoloads xterm-color-autoloads yaml-autoloads yaml-mode-autoloads
yasnippet-autoloads zmq-autoloads package browse-url xdg url url-proxy
url-privacy url-expand url-methods url-history url-cookie
generate-lisp-file url-domsuf url-util mailcap url-handlers url-parse
auth-source cl-seq eieio eieio-core cl-macs icons password-cache json
subr-x map byte-opt bytecomp byte-compile url-vars early-init gv
cl-loaddefs cl-lib china-util rmc iso-transl tooltip cconv eldoc paren
electric uniquify ediff-hook vc-hooks lisp-float-type elisp-mode mwheel
term/pgtk-win pgtk-win term/common-win touch-screen pgtk-dnd tool-bar
dnd fontset image regexp-opt fringe tabulated-list replace newcomment
text-mode lisp-mode prog-mode register page tab-bar menu-bar rfn-eshadow
isearch easymenu timer select scroll-bar mouse jit-lock font-lock syntax
font-core term/tty-colors frame minibuffer nadvice seq simple cl-generic
indonesian philippine cham georgian utf-8-lang misc-lang vietnamese
tibetan thai tai-viet lao korean japanese eucjp-ms cp51932 hebrew greek
romanian slovak czech european ethiopic indian cyrillic chinese
composite emoji-zwj charscript charprop case-table epa-hook
jka-cmpr-hook help abbrev obarray oclosure cl-preloaded button loaddefs
theme-loaddefs faces cus-face macroexp files window text-properties
overlay sha1 md5 base64 format env code-pages mule custom widget keymap
hashtable-print-readable backquote threads dbusbind inotify
dynamic-setting font-render-setting cairo gtk pgtk lcms2 multi-tty
move-toolbar make-network-process tty-child-frames native-compile mps
emacs)
Memory information:
((conses 24 0 0) (symbols 56 0 0) (strings 40 0 0) (string-bytes 1 0)
(vectors 24 0) (vector-slots 8 0 0) (floats 24 0 0)
(intervals 64 0 0) (buffers 1072 0))
bug-gnu-emacs <at> gnu.org:bug#79756; Package emacs.
(Sun, 02 Nov 2025 09:00:02 GMT) Full text and rfc822 format available.Message #8 received at 79756 <at> debbugs.gnu.org (full text, mbox):
From: Eli Zaretskii <eliz <at> gnu.org> To: Bohong Huang <bohonghuang <at> qq.com> Cc: 79756 <at> debbugs.gnu.org Subject: Re: bug#79756: 31.0.50; Seemingly unintended behavior of dynamic variables and buffer-local variables Date: Sun, 02 Nov 2025 10:59:31 +0200
> Date: Sun, 02 Nov 2025 15:53:12 +0800
> From: Bohong Huang via "Bug reports for GNU Emacs,
> the Swiss army knife of text editors" <bug-gnu-emacs <at> gnu.org>
>
> While using buffer-local variables together with dynamic binding, I
> discovered that when a variable is locally bound in a buffer, it cannot
> be accessed through `let` dynamic binding in other buffers (e.g., when
> using `with-current-buffer` to switch the current buffer). For example:
>
> Normal case:
>
> (defvar var1 1)
> (let ((var1 2))
> (with-temp-buffer
> var1)) ; => 2
>
>
> Abnormal cases:
>
> (defvar var2)
> (setq-local var2 1)
> (let ((var2 2))
> (with-temp-buffer
> var2)) ; => (void-variable var2)
>
> (defvar var3 0)
> (setq-local var3 1)
> (let ((var3 2))
> (with-temp-buffer
> var3)) ; => 0
This is the documented and expected behavior. The ELisp manual says
in the node "Intro to Buffer-Local" (which introduces buffer-local
variables and their behaviors):
*Warning:* When a variable has buffer-local bindings in one or more
buffers, ‘let’ rebinds the binding that's currently in effect. For
instance, if the current buffer has a buffer-local value, ‘let’
temporarily rebinds that. If no buffer-local bindings are in effect,
‘let’ rebinds the default value. If inside the ‘let’ you then change to
a different current buffer in which a different binding is in effect,
you won't see the ‘let’ binding any more. And if you exit the ‘let’
while still in the other buffer, you won't see the unbinding occur
(though it will occur properly). Here is an example to illustrate:
(setq foo 'g)
(set-buffer "a")
(make-local-variable 'foo)
(setq foo 'a)
(let ((foo 'temp))
;; foo ⇒ 'temp ; let binding in buffer ‘a’
(set-buffer "b")
;; foo ⇒ 'g ; the global value since foo is not local in ‘b’
BODY...)
foo ⇒ 'g ; exiting restored the local value in buffer ‘a’,
; but we don't see that in buffer ‘b’
(set-buffer "a") ; verify the local value was restored
foo ⇒ 'a
Note that references to ‘foo’ in BODY access the buffer-local binding of
buffer ‘b’.
This is not a bug.
bug-gnu-emacs <at> gnu.org:bug#79756; Package emacs.
(Sun, 02 Nov 2025 16:30:02 GMT) Full text and rfc822 format available.Message #11 received at 79756 <at> debbugs.gnu.org (full text, mbox):
From: Bohong Huang <bohonghuang <at> qq.com> To: Eli Zaretskii <eliz <at> gnu.org> Cc: 79756 <at> debbugs.gnu.org Subject: Re: bug#79756: 31.0.50; Seemingly unintended behavior of dynamic variables and buffer-local variables Date: Mon, 03 Nov 2025 00:29:18 +0800
Eli Zaretskii <eliz <at> gnu.org> writes: >> Date: Sun, 02 Nov 2025 15:53:12 +0800 >> From: Bohong Huang via "Bug reports for GNU Emacs, >> the Swiss army knife of text editors" <bug-gnu-emacs <at> gnu.org> >> >> While using buffer-local variables together with dynamic binding, I >> discovered that when a variable is locally bound in a buffer, it cannot >> be accessed through `let` dynamic binding in other buffers (e.g., when >> using `with-current-buffer` to switch the current buffer). For example: >> >> Normal case: >> >> (defvar var1 1) >> (let ((var1 2)) >> (with-temp-buffer >> var1)) ; => 2 >> >> >> Abnormal cases: >> >> (defvar var2) >> (setq-local var2 1) >> (let ((var2 2)) >> (with-temp-buffer >> var2)) ; => (void-variable var2) >> >> (defvar var3 0) >> (setq-local var3 1) >> (let ((var3 2)) >> (with-temp-buffer >> var3)) ; => 0 > > This is the documented and expected behavior. The ELisp manual says > in the node "Intro to Buffer-Local" (which introduces buffer-local > variables and their behaviors): > > *Warning:* When a variable has buffer-local bindings in one or more > buffers, ‘let’ rebinds the binding that's currently in effect. For > instance, if the current buffer has a buffer-local value, ‘let’ > temporarily rebinds that. If no buffer-local bindings are in effect, > ‘let’ rebinds the default value. If inside the ‘let’ you then change to > a different current buffer in which a different binding is in effect, > you won't see the ‘let’ binding any more. And if you exit the ‘let’ > while still in the other buffer, you won't see the unbinding occur > (though it will occur properly). Here is an example to illustrate: > > (setq foo 'g) > (set-buffer "a") > (make-local-variable 'foo) > (setq foo 'a) > (let ((foo 'temp)) > ;; foo ⇒ 'temp ; let binding in buffer ‘a’ > (set-buffer "b") > ;; foo ⇒ 'g ; the global value since foo is not local in ‘b’ > BODY...) > foo ⇒ 'g ; exiting restored the local value in buffer ‘a’, > ; but we don't see that in buffer ‘b’ > (set-buffer "a") ; verify the local value was restored > foo ⇒ 'a > > Note that references to ‘foo’ in BODY access the buffer-local binding of > buffer ‘b’. > > This is not a bug. Oh, I see. I apologize for not reading the documentation carefully. Thank you for your illustration and time!
Eli Zaretskii <eliz <at> gnu.org>:Bohong Huang <bohonghuang <at> qq.com>:Message #16 received at 79756-done <at> debbugs.gnu.org (full text, mbox):
From: Eli Zaretskii <eliz <at> gnu.org> To: Bohong Huang <bohonghuang <at> qq.com> Cc: 79756-done <at> debbugs.gnu.org Subject: Re: bug#79756: 31.0.50; Seemingly unintended behavior of dynamic variables and buffer-local variables Date: Sun, 02 Nov 2025 20:22:21 +0200
> From: Bohong Huang <bohonghuang <at> qq.com> > Cc: 79756 <at> debbugs.gnu.org > Date: Mon, 03 Nov 2025 00:29:18 +0800 > > Eli Zaretskii <eliz <at> gnu.org> writes: > > > This is the documented and expected behavior. The ELisp manual says > > in the node "Intro to Buffer-Local" (which introduces buffer-local > > variables and their behaviors): > > > > *Warning:* When a variable has buffer-local bindings in one or more > > buffers, ‘let’ rebinds the binding that's currently in effect. For > > instance, if the current buffer has a buffer-local value, ‘let’ > > temporarily rebinds that. If no buffer-local bindings are in effect, > > ‘let’ rebinds the default value. If inside the ‘let’ you then change to > > a different current buffer in which a different binding is in effect, > > you won't see the ‘let’ binding any more. And if you exit the ‘let’ > > while still in the other buffer, you won't see the unbinding occur > > (though it will occur properly). Here is an example to illustrate: > > > > (setq foo 'g) > > (set-buffer "a") > > (make-local-variable 'foo) > > (setq foo 'a) > > (let ((foo 'temp)) > > ;; foo ⇒ 'temp ; let binding in buffer ‘a’ > > (set-buffer "b") > > ;; foo ⇒ 'g ; the global value since foo is not local in ‘b’ > > BODY...) > > foo ⇒ 'g ; exiting restored the local value in buffer ‘a’, > > ; but we don't see that in buffer ‘b’ > > (set-buffer "a") ; verify the local value was restored > > foo ⇒ 'a > > > > Note that references to ‘foo’ in BODY access the buffer-local binding of > > buffer ‘b’. > > > > This is not a bug. > > Oh, I see. I apologize for not reading the documentation carefully. > Thank you for your illustration and time! No problem. I'm therefore closing this bug.
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.