GNU bug report logs - #5971
23.1.95; `delete' modifies default value instead of buffer-local value

Previous Next

Package: emacs;

Reported by: "Drew Adams" <drew.adams <at> oracle.com>

Date: Mon, 19 Apr 2010 02:43:02 UTC

Severity: minor

Tags: notabug, wontfix

Done: Glenn Morris <rgm <at> gnu.org>

Bug is archived. No further changes may be made.

Full log


Message #61 received at 5971 <at> debbugs.gnu.org (full text, mbox):

From: "Drew Adams" <drew.adams <at> oracle.com>
To: "'Andreas Schwab'" <schwab <at> linux-m68k.org>
Cc: 5971 <at> debbugs.gnu.org, tracker <at> debbugs.gnu.org,
	'Stefan Monnier' <monnier <at> iro.umontreal.ca>,
	'GNU bug Tracking System' <help-debbugs <at> gnu.org>
Subject: RE: bug#5971: 23.1.95;
	`delete' modifies default value instead of buffer-local value
Date: Mon, 19 Apr 2010 15:06:08 -0700
> > If there is _no_ buffer-local value, then the default value 
> > is returned for the var.
> 
> Exactly.

OK, I get it.

The problem was that the defvar defined a default value that was a particular
cons cell. Then, I set the buffer-local value to (a modification of) that list
structure, since the initial value returned by the variable was the default one.
IOW, in the setq, it was the right-hand side, where the variable's value was
used, that was the problem.

Before closing the bug, please consider adding something to the doc that might
make this gotcha clearer. Perhaps something like this:

Although `make-variable-buffer-local' makes its argument variable become buffer
local whenever it is set, any references to the variable before it is set return
its default value. That includes any occurrences of the variable in an
expression used to calculate the new, buffer-local value.

Thanks.





This bug report was last modified 13 years and 321 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.