Subject: Re: bug#12079: 23.3; erroneous byte-compile-file warning

From: Glenn Morris <[email-masked]>
Date: Sun, 29 Jul 2012 19:12:47 -0400

Winston wrote:

>     (progn
>       (save-excursion
>         (set-buffer "foo")      ; I'd already created this
>         (barf-if-buffer-read-only)
>         )
>       (current-buffer)
>     )
>     #<buffer *scratch*>
>
> 3) However, when I write that code to foo.el and run byte-compile-file
>    on it, I get the following error:
>
>     Compiling file /home/wbe/foo.el at Sat Jul 28 09:07:28 2012
>     Entering directory `/home/wbe/'
> --> foo.el:1:1:Warning: `save-excursion' defeated by `set-buffer'
>
> It looks to me like the Warning message is untrue.

In an example such as you show, you should use with-current-buffer
instead of save-excursion+set-buffer. I think this has been discussed
several times on this list and/or emacs-devel.

The compilation warning is because save-excursion is pointless in the
code as shown. Eg it doesn't preserve point in buffer foo (unless foo
happened to be current beforehand).