From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Andreas Politz Newsgroups: gmane.emacs.help Subject: Re: save-current-buffer Date: Tue, 21 Oct 2008 13:26:35 +0200 Organization: FH-Trier Message-ID: <1224588747.694138@arno.fh-trier.de> References: <1224362986.875430@arno.fh-trier.de> NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Trace: ger.gmane.org 1224589669 1044 80.91.229.12 (21 Oct 2008 11:47:49 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Tue, 21 Oct 2008 11:47:49 +0000 (UTC) To: help-gnu-emacs@gnu.org Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Tue Oct 21 13:48:48 2008 connect(): Connection refused Return-path: Envelope-to: geh-help-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.50) id 1KsFjC-0005ty-S2 for geh-help-gnu-emacs@m.gmane.org; Tue, 21 Oct 2008 13:48:47 +0200 Original-Received: from localhost ([127.0.0.1]:46888 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1KsFi2-0006vO-BH for geh-help-gnu-emacs@m.gmane.org; Tue, 21 Oct 2008 07:47:34 -0400 Original-Path: news.stanford.edu!headwall.stanford.edu!news.glorb.com!news2!news.k-dsl.de!news.uni-stuttgart.de!news.belwue.de!news.uni-kl.de!not-for-mail Original-Newsgroups: gnu.emacs.help Original-Lines: 65 Original-NNTP-Posting-Host: 143-93-54-11.arno.fh-trier.de Original-X-Trace: news.uni-kl.de 1224588772 15151 143.93.54.11 (21 Oct 2008 11:32:52 GMT) Original-X-Complaints-To: usenet@news.uni-kl.de Original-NNTP-Posting-Date: Tue, 21 Oct 2008 11:32:52 +0000 (UTC) User-Agent: Mozilla-Thunderbird 2.0.0.16 (X11/20080724) In-Reply-To: Cache-Post-Path: arno.fh-trier.de!unknown@dslb-084-059-210-085.pools.arcor-ip.net X-Cache: nntpcache 3.0.1 (see http://www.nntpcache.org/) Original-Xref: news.stanford.edu gnu.emacs.help:163639 X-BeenThere: help-gnu-emacs@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Users list for the GNU Emacs text editor List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Errors-To: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.help:58977 Archived-At: Nikolaj Schumacher wrote: > Andreas Politz wrote: > >> Is this a bug, or am I missing something ? >> Eval this in *scratch* buffer and you end up in the *Help* one. >> >> (save-current-buffer >> (switch-to-buffer "*Help*")) > > There is a subtle difference between the current-buffer and the window's > buffer. Any buffer can be current without being displayed. The > function for that is `set-buffer'. > > `switch-to-buffer' changes both the current-buffer and the selected window's > buffer. > > (progn > (message "%s/%s" (current-buffer) (window-buffer (selected-window))) > (save-current-buffer > (switch-to-buffer "*Help*") > (message "%s/%s" (current-buffer) (window-buffer (selected-window)))) > (message "%s/%s" (current-buffer) (window-buffer (selected-window)))) > > will output: > > *scratch*/*scratch* > *Help*/*Help* > *scratch*/*Help* > > As you can see, current-buffer is restored, but the window's > buffer is not. > > Replacing `save-current-buffer' with `save-window-excursion' > > gets you: > > *scratch*/*scratch* > *Help*/*Help* > *scratch*/*scratch* > > > But generally, `switch-to-buffer' should only be used when the user > wants to see the new buffer. Otherwise `set-buffer' is the better choice. > > > > regards, > Nikolaj Schumacher > > I see. I assume after the form is evaluated, some event will set the current-buffer to the one switch-to-buffer switched to. The reason I was asking is some problem I had with the recentf package. It's really a minor one, but I was just curious what to make of it and how things are working. The idiom from above is used in one of it's functions. (require 'recentf) (run-with-timer 0 nil 'recentf-open-files) Now pressing 'q' gives a read-only error, though it is bound to recentf-cancel-dialog. Pressing it twice works fine. -ap