Subject: bug#5971 closed by Stefan Monnier <[email-masked]> (Re: bug#5971: 23.1.95; `delete' modifies default value instead of buffer-local value)

From: [email-masked] (GNU bug Tracking System)
Date: Mon, 19 Apr 2010 07:29:02 +0000

This is an automatic notification regarding your bug report
which was filed against the emacs package:

#5971: 23.1.95; `delete' modifies default value instead of buffer-local value

It has been closed by Stefan Monnier <[email-masked]>.

Their explanation is attached below along with your original report.
If this explanation is unsatisfactory and you have not received a
better one in a separate message then please contact Stefan Monnier <[email-masked]> by
replying to this email.

-- 
5971: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=5971
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#5971: 23.1.95; `delete' modifies default value instead of buffer-local value
From: Stefan Monnier <[email-masked]>
To: "Drew Adams" <[email-masked]>
Date: Mon, 19 Apr 2010 02:25:02 -0400
List-Id: <debbugs-submit.debbugs.gnu.org>

>> > This doesn't seem right to me.
>> Why not?  That's the whole reason for the existence of two functions:
>> `delete' and `remove'.
> I'm aware that `delete' modifies the list structure and `remove' uses
> a copy.  What I don't understand is the interaction with a default
> value instead of a buffer-local value.  Why would `delete' cause the
> behavior described?

Why not?

        Stefan

PS: Closing this.  You can continue the discussion on gnu.emacs.help
(or even comp.lang.lisp, tho I never read that one and they're probably
not that familiar with buffer-local variables).

Subject: 23.1.95; `delete' modifies default value instead of buffer-local value
From: "Drew Adams" <[email-masked]>
To: <[email-masked]>
Date: Sun, 18 Apr 2010 19:41:18 -0700
List-Id: <debbugs-submit.debbugs.gnu.org>

Visit this file, without loading it:
http://www.emacswiki.org/emacs/wide-n.el
 
Change this line:
(setq wide-n-restrictions
      (remove (cons mrk1 mrk2) wide-n-restrictions))
 
To this:
(setq wide-n-restrictions
      (delete (cons mrk1 mrk2) wide-n-restrictions))
 
Then load the file (with `delete'). Then:
 
In some buffer X, do `C-x n n', then `C-x n x'.
Check the value of variable `wide-n-restrictions'.
 
In another buffer Y, just check the value of the variable. You will see
that the default value, which should be `(all)', has been changed to be what the
new value is for buffer X.
 
Try the same thing again (starting from scratch), but using `remove' (the
original code) instead of `delete'. There is no problem now: only the
buffer-local value is ever set.

This doesn't seem right to me.
 
In GNU Emacs 23.1.95.1 (i386-mingw-nt5.1.2600)
 of 2010-04-03 on G41R2F1
Windowing system distributor `Microsoft Corp.', version 5.1.2600
configured using `configure --with-gcc (3.4) --no-opt --cflags
-Ic:/imagesupport/include'