From: Chong Yidong Date: Tue, 7 Feb 2012 06:34:52 +0000 (+0800) Subject: Fix and doc-fix for `buffer-local-variables'. X-Git-Tag: emacs-pretest-24.0.94~262 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=0992bd9c06b90c8f316187467bcc005cbe51050e;p=emacs.git 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 --- diff --git a/admin/notes/bugtracker b/admin/notes/bugtracker index dd1ea46ceb2..3c24212ea10 100644 --- a/admin/notes/bugtracker +++ b/admin/notes/bugtracker @@ -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. diff --git a/doc/lispref/ChangeLog b/doc/lispref/ChangeLog index 1a7c71232c6..04d1234be06 100644 --- a/doc/lispref/ChangeLog +++ b/doc/lispref/ChangeLog @@ -1,3 +1,8 @@ +2012-02-07 Chong Yidong + + * variables.texi (Creating Buffer-Local): Minor clarification + to buffer-local-variables doc (Bug#10715). + 2012-02-07 Glenn Morris * display.texi (ImageMagick Images): General update. diff --git a/doc/lispref/variables.texi b/doc/lispref/variables.texi index bdb16cd10a8..ab3a4edc0ac 100644 --- a/doc/lispref/variables.texi +++ b/doc/lispref/variables.texi @@ -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 diff --git a/src/ChangeLog b/src/ChangeLog index 5e4d995d857..71af862cdac 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,9 @@ +2012-02-07 Chong Yidong + + * 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 * image.c (Fimagemagick_types): Doc fix. diff --git a/src/buffer.c b/src/buffer.c index 01418956c8d..a6f61a1936a 100644 --- a/src/buffer.c +++ b/src/buffer.c @@ -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); + } } }