GNU bug report logs -
#11930
24.1.50; kill-all-local-variables ignores some non-permanent-local vars
Previous Next
Reported by: Chong Yidong <cyd <at> gnu.org>
Date: Fri, 13 Jul 2012 07:50:01 UTC
Severity: normal
Found in version 24.1.50
Done: Chong Yidong <cyd <at> gnu.org>
Bug is archived. No further changes may be made.
Full log
View this message in rfc822 format
The documentation of `kill-all-local-variables' says only that it does
not reset variables marked as `permanent-local'. But it also seems to
ignore certain per-buffer variables that lack the `permanent-local'
property. One such variable is `buffer-read-only':
emacs -Q
M-: (setq buffer-read-only t) RET (or just C-x C-q)
M-: (kill-all-local-variables) RET
C-h v buffer-read-only RET
buffer-read-only is a variable defined in `C source code'.
Its value is t
Local in buffer *scratch*; global value is nil
M-: (get 'buffer-read-only 'permanent-local)
=> nil
The `default-directory' variable also behaves this way. Other
per-buffer variables, like `line-spacing', ARE reset by
`kill-all-local-variables'.
We should assign a non-nil `permanent-local' property to these
variables. Even if the internal code doesn't need the property to work
for these variables, it would be a useful signal for Lisp programmers.
Off the top of my head, I'm guessing the affected variables are those
listed in buffer.c:4961 (with a -1 index in buffer_local_flags).
In GNU Emacs 24.1.50.1 (x86_64-unknown-linux-gnu, GTK+ Version 3.4.2)
of 2012-07-13 on ulysses
Bzr revision: 109067 eggert <at> cs.ucla.edu-20120713035058-5m17bmslw6b9z0s2
This bug report was last modified 12 years and 313 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.