From: Helmut Eller <eller.helmut@gmail.com>
To: 9469@debbugs.gnu.org
Subject: bug#9469: buffer-local variables seem to remember previous values
Date: Sun, 11 Sep 2011 21:37:25 +0200 [thread overview]
Message-ID: <m2obyq98ga.fsf@gmail.com> (raw)
In-Reply-To: <CAM=K+ipbSAqy1PLo=qHRb_SqtKU+M6B1RRDv_LPym3P1ir2W4Q@mail.gmail.com>
* Lars Magne Ingebrigtsen [2011-09-11 18:54] writes:
> Le Wang <l26wang@gmail.com> writes:
>
>>> This has nothing to do with the use of quote, but with the use of
>>> destructive functions (setcdr) on a shared data structure.
>>
>> Of course you're technically right, but should the manual mention in
>> the "quoting" section that using quote the way I did results in a
>> shared data structure? This part was surprising to me.
>
> If I read your code correctly, Andreas is correct and precise as usual,
> if a bit terse. :-)
>
> The thing you're seeing has absolutely nothing to do with the use of
> quote.
>
> You're destructively altering a single list and expecting to see the
> list be different in various buffers.
Well, quote is tricky! It wouldn't hurt to point out that modifying a
quoted list often means modifying your code. E.g.
(defun foo ()
(let ((list '(1 2 3)))
(setcdr list (cddr list))))
(equal (copy-tree (symbol-function 'foo))
(progn
(foo)
(symbol-function 'foo)))
returns nil. I think few beginners will see that using setcdr here not
only modifies the value stored in the variable list but also modifies
the s-exp stored in 'foo.
Helmut
next prev parent reply other threads:[~2011-09-11 19:37 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-09-10 17:07 bug#9469: buffer-local variables seem to remember previous values Le Wang
2011-09-10 17:44 ` Drew Adams
2011-09-11 16:57 ` Le Wang
2011-09-11 17:56 ` Drew Adams
2011-09-11 18:08 ` Andreas Schwab
2011-09-11 18:49 ` Le Wang
2011-09-11 18:54 ` Lars Magne Ingebrigtsen
2011-09-11 19:18 ` Le Wang
2011-09-11 19:54 ` Lars Magne Ingebrigtsen
2011-09-12 4:39 ` Le Wang
2011-09-12 7:57 ` Andreas Schwab
2011-09-12 8:23 ` Le Wang
2011-09-12 8:35 ` Andreas Schwab
2011-09-12 14:30 ` Drew Adams
2011-09-12 15:06 ` Le Wang
2011-09-13 12:54 ` Stefan Monnier
2011-09-13 13:12 ` Le Wang
2011-09-13 15:00 ` Helmut Eller
2011-09-13 18:02 ` Johan Bockgård
2011-09-13 18:52 ` Drew Adams
2011-09-13 20:42 ` Helmut Eller
2011-09-15 18:14 ` Le Wang
2011-09-11 19:37 ` Helmut Eller [this message]
2011-09-11 19:46 ` Andreas Schwab
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=m2obyq98ga.fsf@gmail.com \
--to=eller.helmut@gmail.com \
--cc=9469@debbugs.gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).