--- Begin Message ---
Subject: |
23.1.95; `delete' modifies default value instead of buffer-local value |
Date: |
Sun, 18 Apr 2010 19:41:18 -0700 |
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'
--- End Message ---
--- Begin Message ---
Subject: |
Re: bug#5971: 23.1.95; `delete' modifies default value instead of buffer-local value |
Date: |
Mon, 19 Apr 2010 02:25:02 -0400 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.0.50 (gnu/linux) |
>> > 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).
--- End Message ---