From: David Kastrup <dak@gnu.org>
To: help-gnu-emacs@gnu.org
Subject: Re: `save-excursion' defeated by `set-buffer'
Date: Thu, 10 Mar 2011 23:40:47 +0100 [thread overview]
Message-ID: <87sjuulhu8.fsf@fencepost.gnu.org> (raw)
In-Reply-To: jwvfwr2ures.fsf-monnier+gnu.emacs.help@gnu.org
Stefan Monnier <monnier@iro.umontreal.ca> writes:
>> `save-excursion' defeated by `set-buffer'
> [...]
>> (save-excursion
>> (set-buffer blub)
>> ...
>> )
>
>> Save point, mark, and current buffer; execute BODY; restore those things
>
>> would expect previous buffer restored, don't understand
>> that warning.
>
> The difference between save-excursion and save-current-buffer is that
> the first doesn't just save&restore the current buffer but also "point &
> mark". But if you do `set-buffer' right after save-excursion then most
> likely you will change neither point nor mark in the original buffer,
"most likely". So `save-excursion' is most likely defeated by
`set-buffer'.
> so the extra work performed by save-excursion compared to
> save-current-buffer will be useless. Now that's just a waste of
> resources but is otherwise harmless.
>
> Unless of course `blub' is already the current buffer to start with.
>
> I.e. whether point movement in "..." is undone by save-excursion will
> depend dynamically upon whether the current buffer happens to be `blub',
> which leads to subtle bugs. Hence the warning.
So the warning tells us "`save-excursion' defeated by `set-buffer'" in
order to warn us against the possibility that `save-excursion' may
actually _not_ defeated by `set-buffer'.
Small wonder nobody understands what the warning is supposed to be for.
--
David Kastrup
next prev parent reply other threads:[~2011-03-10 22:40 UTC|newest]
Thread overview: 78+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <mailman.0.1299085819.4487.help-gnu-emacs@gnu.org>
2011-03-02 20:54 ` `save-excursion' defeated by `set-buffer' Uday Reddy
2011-03-05 4:28 ` Stefan Monnier
2011-03-10 19:57 ` Andreas Röhler
2011-03-11 1:07 ` Leo
2011-03-11 1:28 ` Stefan Monnier
2011-03-11 8:52 ` Andreas Röhler
[not found] ` <mailman.25.1299833256.26376.help-gnu-emacs@gnu.org>
2011-03-11 9:54 ` David Kastrup
2011-03-11 11:09 ` Andreas Röhler
[not found] ` <mailman.10.1299841456.13496.help-gnu-emacs@gnu.org>
2011-03-11 11:38 ` David Kastrup
2011-03-11 15:52 ` Stefan Monnier
2011-03-12 8:59 ` Eli Zaretskii
2011-03-12 19:00 ` Andreas Röhler
2011-03-12 19:56 ` Drew Adams
2011-03-12 20:27 ` Eli Zaretskii
2011-03-12 22:20 ` Drew Adams
2011-03-14 18:59 ` Juanma Barranquero
2011-03-14 21:17 ` Drew Adams
[not found] ` <mailman.6.1299959800.9013.help-gnu-emacs@gnu.org>
2011-03-13 3:00 ` Uday Reddy
2011-03-13 18:22 ` Drew Adams
[not found] ` <mailman.0.1300040583.10860.help-gnu-emacs@gnu.org>
2011-03-14 1:04 ` Uday Reddy
2011-03-14 8:43 ` Drew Adams
[not found] ` <mailman.4.1299956141.9013.help-gnu-emacs@gnu.org>
2011-03-12 22:29 ` Tim X
2011-03-13 7:15 ` Andreas Röhler
2011-03-13 18:23 ` Drew Adams
2011-03-13 12:46 ` Uday S Reddy
2011-03-14 8:47 ` Drew Adams
[not found] ` <mailman.7.1300092490.2602.help-gnu-emacs@gnu.org>
2011-03-14 12:22 ` Uday Reddy
2011-03-14 14:20 ` Uday S Reddy
2011-03-14 17:36 ` Drew Adams
2011-03-14 23:20 ` Uday S Reddy
2011-03-15 3:55 ` Drew Adams
[not found] ` <mailman.14.1300124226.2531.help-gnu-emacs@gnu.org>
2011-03-15 14:39 ` Stefan Monnier
2011-03-15 15:59 ` Drew Adams
[not found] ` <mailman.2.1300204800.1264.help-gnu-emacs@gnu.org>
2011-03-15 17:46 ` Stefan Monnier
2011-03-15 18:55 ` Drew Adams
2011-03-14 14:18 ` Andreas Röhler
[not found] ` <mailman.5.1300111985.27831.help-gnu-emacs@gnu.org>
2011-03-14 14:54 ` Uday Reddy
[not found] ` <mailman.5.1300000253.31664.help-gnu-emacs@gnu.org>
2011-03-13 14:16 ` Uday Reddy
2011-03-13 18:25 ` Drew Adams
[not found] ` <mailman.2.1300040743.10860.help-gnu-emacs@gnu.org>
2011-03-13 20:48 ` Uday Reddy
2011-03-14 0:31 ` Drew Adams
[not found] ` <mailman.4.1300066631.25374.help-gnu-emacs@gnu.org>
2011-03-14 14:34 ` Stefan Monnier
2011-03-13 2:11 ` Uday Reddy
2011-03-13 18:26 ` Drew Adams
[not found] ` <mailman.5.1299920357.7270.help-gnu-emacs@gnu.org>
2011-03-12 9:34 ` David Kastrup
2011-03-12 10:12 ` Eli Zaretskii
[not found] ` <mailman.10.1299924724.7270.help-gnu-emacs@gnu.org>
2011-03-12 10:42 ` David Kastrup
2011-03-12 12:28 ` Eli Zaretskii
2011-03-12 15:17 ` Uday Reddy
2011-03-12 15:25 ` David Kastrup
2011-03-13 2:40 ` Uday Reddy
2011-03-14 14:25 ` Stefan Monnier
2011-03-14 17:26 ` Andreas Röhler
[not found] ` <mailman.11.1300123292.2531.help-gnu-emacs@gnu.org>
2011-03-15 14:35 ` Stefan Monnier
2011-03-15 14:47 ` David Kastrup
2011-03-15 15:19 ` PJ Weisberg
2011-03-15 16:00 ` Drew Adams
[not found] ` <mailman.6.1300202904.14512.help-gnu-emacs@gnu.org>
2011-03-15 17:42 ` Stefan Monnier
[not found] ` <mailman.3.1300204850.1264.help-gnu-emacs@gnu.org>
2011-03-15 17:49 ` Stefan Monnier
2011-03-15 18:56 ` Drew Adams
2011-03-15 21:30 ` Stefan Monnier
2011-03-15 19:02 ` Jason Earl
2011-03-15 20:55 ` Drew Adams
2011-03-16 4:31 ` rusi
2011-03-16 8:11 ` David Kastrup
2011-03-17 3:46 ` rusi
2011-03-17 7:10 ` rusi
2011-03-17 8:29 ` Antoine Levitt
[not found] ` <mailman.1.1300215374.6982.help-gnu-emacs@gnu.org>
2011-03-16 12:05 ` Uday S Reddy
2011-03-12 22:18 ` Tim X
2011-03-11 23:06 ` Uday Reddy
2011-03-10 22:40 ` David Kastrup [this message]
2011-03-11 2:46 ` Stefan Monnier
2011-04-01 3:20 ` rusi
2011-04-01 12:39 ` Uday Reddy
2011-03-02 17:12 Andreas Röhler
2011-03-03 4:58 ` Le Wang
[not found] ` <mailman.7.1299128292.20537.help-gnu-emacs@gnu.org>
2011-03-13 15:05 ` Uday Reddy
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=87sjuulhu8.fsf@fencepost.gnu.org \
--to=dak@gnu.org \
--cc=help-gnu-emacs@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.
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).