From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Juri Linkov Newsgroups: gmane.emacs.devel Subject: Re: Window configurations Date: Tue, 11 May 2010 19:45:52 +0300 Organization: JURTA Message-ID: <87r5liqv8f.fsf@mail.jurta.org> References: <4BB4CF6B.2000007@alice.it> <87vdbhgqgd.fsf@mail.jurta.org> <828BB36311A84C43B96D1F2A559DACAE@us.oracle.com> <87d3xo662u.fsf@mail.jurta.org> <69D40D69CC6F4982A8E91D8D8F0F494F@us.oracle.com> <87r5m4hz39.fsf@mail.jurta.org> <4BD40821.70808@gmx.at> <87zl0rtmqy.fsf@mail.jurta.org> <871vdu6qn5.fsf@mail.jurta.org> <87bpcv1wvt.fsf@mail.jurta.org> <4BE13828.2030609@gmx.at> <87vdb2qo82.fsf@mail.jurta.org> <4BE27C17.3030005@gmx.at> <87vdav4vx5.fsf@mail.jurta.org> <4BE900E7.3090402@gmx.at> NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Trace: dough.gmane.org 1273600415 24019 80.91.229.12 (11 May 2010 17:53:35 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Tue, 11 May 2010 17:53:35 +0000 (UTC) Cc: Ken Hori , Emacs To: martin rudalics Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Tue May 11 19:53:32 2010 connect(): No such file or directory Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1OBte6-0007HE-DG for ged-emacs-devel@m.gmane.org; Tue, 11 May 2010 19:53:30 +0200 Original-Received: from localhost ([127.0.0.1]:39986 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1OBte5-0007PU-TE for ged-emacs-devel@m.gmane.org; Tue, 11 May 2010 13:53:29 -0400 Original-Received: from [140.186.70.92] (port=46936 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1OBta8-0004ct-4E for emacs-devel@gnu.org; Tue, 11 May 2010 13:49:26 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1OBta6-0007KE-DJ for emacs-devel@gnu.org; Tue, 11 May 2010 13:49:23 -0400 Original-Received: from smtp-out2.starman.ee ([85.253.0.4]:50843 helo=mx2.starman.ee) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1OBsis-0004Zz-Lj for emacs-devel@gnu.org; Tue, 11 May 2010 12:54:25 -0400 X-Virus-Scanned: by Amavisd-New at mx2.starman.ee Original-Received: from mail.starman.ee (82.131.68.105.cable.starman.ee [82.131.68.105]) by mx2.starman.ee (Postfix) with ESMTP id DF3153F40EB; Tue, 11 May 2010 19:54:16 +0300 (EEST) In-Reply-To: <4BE900E7.3090402@gmx.at> (martin rudalics's message of "Tue, 11 May 2010 09:01:59 +0200") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.0.50 (x86_64-pc-linux-gnu) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6, seldom 2.4 (older, 4) X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:124708 Archived-At: > ... where `quit-restore-window' here replaces `quit-window' which has > too obscure semantics for my taste. And obviously, exiting `view-mode' > calls `quit-restore-window' here too. Yes, `quit-window' is useless because it doesn't help to avoid the mess that occurs after killing buffers. Please look at two examples: 1. +---------+---------+ | | | | dired 1 | dired 2 | | | | | | | +---------+---------+ Now view a file in dired 1, select the second window, view another file in dired 2, select the first window, quit view-mode with `q', select the second window, quit view-mode with `q': `v C-x o v C-x o q C-x o q' The window configuration is exactly as was before - very good. Now do the same without using `view-mode' - visit a file in dired 1 with RET, select the second window, visit another file in dired 2, select the first window, kill the buffer, select the second window, kill the buffer: `RET C-x o RET C-x o C-x k C-x o C-x k' The window configuration is broken with original buffers exchanged their windows: +---------+---------+ | | | | dired 2 | dired 1 | | | | | | | +---------+---------+ 2. Another example - visit the same buffer in two windows, and put point at different positions of the same buffer. +---------+---------+ | | | | dired 1 | dired 1 | | | | | | | +---------+---------+ Now view a file in the first window, and quit: `v q'. The window configuration is correctly restored (without using `set-window-configuration') - good. Now do the same without `view-mode': `RET C-x k'. Instead of the original buffer, some random buffer is displayed in this window. It seems your implementation of `quit-restore-window' will fix this problem, but I don't see how it will work without a window history as a list? This list could be saved as a window parameter `window-history' where each element is like you implemented for the `quit-restore' parameter. Then every switch-to-buffer could add a `quit-restore' element to the window history parameter, and every kill-buffer could remove it from the history stack (and call its function at the same time). -- Juri Linkov http://www.jurta.org/emacs/