1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2025-02-01 20:06:00 +00:00

Fix and doc-fix for `buffer-local-variables'.

* src/buffer.c (Fbuffer_local_variables)
(buffer_lisp_local_variables): Handle unbound vars correctly;
don't let Qunbound leak into Lisp.

* doc/lispref/variables.texi (Creating Buffer-Local): Minor clarification
to buffer-local-variables doc.

Fixes: debbugs:10715
This commit is contained in:
Chong Yidong 2012-02-07 14:34:52 +08:00
parent 75ded89ba5
commit 0992bd9c06
5 changed files with 38 additions and 9 deletions

View File

@ -640,3 +640,14 @@ I think you also have to add them to 'tags' and 'tags_single_letter'
in /usr/share/perl5/Debbugs/Config.pm.
And update /var/www/Developer.html with a description of what the tag means.
And the "valid tags" list in /var/www/index.html.
** Backups
The FSF sysadmins handle multi-generational backups of the filesystem
on debbugs.gnu.org. But if you really want to have your own backup of
the bug database, you can use rsync (this requires login access to
debbugs.gnu.org):
rsync -azvv -e ssh USER@debbugs.gnu.org:/var/lib/debbugs/ DEST
Note that this occupies well over 1G of disk space.

View File

@ -1,3 +1,8 @@
2012-02-07 Chong Yidong <cyd@gnu.org>
* variables.texi (Creating Buffer-Local): Minor clarification
to buffer-local-variables doc (Bug#10715).
2012-02-07 Glenn Morris <rgm@gnu.org>
* display.texi (ImageMagick Images): General update.

View File

@ -1317,11 +1317,12 @@ value (@pxref{Default Value}) of @var{variable} instead.
@defun buffer-local-variables &optional buffer
This function returns a list describing the buffer-local variables in
buffer @var{buffer}. (If @var{buffer} is omitted, the current buffer is
used.) It returns an association list (@pxref{Association Lists}) in
which each element contains one buffer-local variable and its value.
However, when a variable's buffer-local binding in @var{buffer} is void,
then the variable appears directly in the resulting list.
buffer @var{buffer}. (If @var{buffer} is omitted, the current buffer
is used.) Normally, each list element has the form
@w{@code{(@var{sym} . @var{val})}}, where @var{sym} is a buffer-local
variable (a symbol) and @var{val} is its buffer-local value. But when
a variable's buffer-local binding in @var{buffer} is void, its list
element is just @var{sym}.
@example
@group

View File

@ -1,3 +1,9 @@
2012-02-07 Chong Yidong <cyd@gnu.org>
* buffer.c (Fbuffer_local_variables)
(buffer_lisp_local_variables): Handle unbound vars correctly;
don't let Qunbound leak into Lisp.
2012-02-07 Glenn Morris <rgm@gnu.org>
* image.c (Fimagemagick_types): Doc fix.

View File

@ -1022,7 +1022,10 @@ buffer_lisp_local_variables (struct buffer *buf)
if (buf != current_buffer)
val = XCDR (elt);
result = Fcons (Fcons (XCAR (elt), val), result);
result = Fcons (EQ (val, Qunbound)
? XCAR (elt)
: Fcons (XCAR (elt), val),
result);
}
return result;
@ -1064,9 +1067,12 @@ No argument or nil as argument means use current buffer as BUFFER. */)
idx = PER_BUFFER_IDX (offset);
if ((idx == -1 || PER_BUFFER_VALUE_P (buf, idx))
&& SYMBOLP (PER_BUFFER_SYMBOL (offset)))
result = Fcons (Fcons (PER_BUFFER_SYMBOL (offset),
PER_BUFFER_VALUE (buf, offset)),
result);
{
Lisp_Object sym = PER_BUFFER_SYMBOL (offset);
Lisp_Object val = PER_BUFFER_VALUE (buf, offset);
result = Fcons (EQ (val, Qunbound) ? sym : Fcons (sym, val),
result);
}
}
}