From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: martin rudalics Newsgroups: gmane.emacs.bugs Subject: bug#32850: 27.0.50; window-swap-states doesn't swap window prev/next-buffers Date: Sun, 28 Oct 2018 10:01:08 +0100 Message-ID: <5BD57AD4.1090008@gmx.at> References: <875zyrrhk8.fsf@mail.linkov.net> <5BAD2538.1060609@gmx.at> <871s9e1syw.fsf@mail.linkov.net> <5BB082A6.6040709@gmx.at> <87o9cepxfv.fsf@mail.linkov.net> <5BB1DC5D.2070903@gmx.at> <87ftxgqcx0.fsf@mail.linkov.net> <5BBC5C61.4090901@gmx.at> <87ftx79brv.fsf@mail.linkov.net> <5BC5A536.7020603@gmx.at> <87o9bqlu7y.fsf@mail.linkov.net> <5BC98A76.9070207@gmx.at> <87in1pltn3.fsf@mail.linkov.net> <5BD2C50E.2090508@gmx.at> <87lg6jysql.fsf@mail.linkov.net> NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Trace: blaine.gmane.org 1540717208 8502 195.159.176.226 (28 Oct 2018 09:00:08 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Sun, 28 Oct 2018 09:00:08 +0000 (UTC) Cc: 32850@debbugs.gnu.org To: Juri Linkov Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Sun Oct 28 10:00:04 2018 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gGgvT-00025r-PI for geb-bug-gnu-emacs@m.gmane.org; Sun, 28 Oct 2018 10:00:03 +0100 Original-Received: from localhost ([::1]:39340 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gGgxa-0004QP-5D for geb-bug-gnu-emacs@m.gmane.org; Sun, 28 Oct 2018 05:02:14 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:45404) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gGgxT-0004QB-GN for bug-gnu-emacs@gnu.org; Sun, 28 Oct 2018 05:02:08 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gGgxO-0007ao-Hy for bug-gnu-emacs@gnu.org; Sun, 28 Oct 2018 05:02:07 -0400 Original-Received: from debbugs.gnu.org ([208.118.235.43]:42400) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1gGgxO-0007aa-D2 for bug-gnu-emacs@gnu.org; Sun, 28 Oct 2018 05:02:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1gGgxO-0008PY-5v for bug-gnu-emacs@gnu.org; Sun, 28 Oct 2018 05:02:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: martin rudalics Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 28 Oct 2018 09:02:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 32850 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: Original-Received: via spool by 32850-submit@debbugs.gnu.org id=B32850.154071728032283 (code B ref 32850); Sun, 28 Oct 2018 09:02:02 +0000 Original-Received: (at 32850) by debbugs.gnu.org; 28 Oct 2018 09:01:20 +0000 Original-Received: from localhost ([127.0.0.1]:46658 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gGgwi-0008Oc-77 for submit@debbugs.gnu.org; Sun, 28 Oct 2018 05:01:20 -0400 Original-Received: from mout.gmx.net ([212.227.15.18]:52735) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gGgwg-0008OP-4L for 32850@debbugs.gnu.org; Sun, 28 Oct 2018 05:01:18 -0400 Original-Received: from [192.168.1.101] ([212.95.5.102]) by mail.gmx.com (mrgmx003 [212.227.17.190]) with ESMTPSA (Nemesis) id 0MI4yc-1gIKq01FaY-003uKd; Sun, 28 Oct 2018 10:01:10 +0100 Original-Received: from [192.168.1.101] ([212.95.5.102]) by mail.gmx.com (mrgmx003 [212.227.17.190]) with ESMTPSA (Nemesis) id 0MI4yc-1gIKq01FaY-003uKd; Sun, 28 Oct 2018 10:01:10 +0100 In-Reply-To: <87lg6jysql.fsf@mail.linkov.net> X-Provags-ID: V03:K1:FlypEPT7xjNyAPMPRigbKhnx+A51HjkZ1tP0KXV9xZv8SZyh1qj vQMSREFe4/6tct4aMTbGZHqsbk8KMxap/3hGP4UR0V+R6do3GrP+XWLQW0mVueBA41Yc/AD YRsLjXxrAcgCgp+WGswJoLRnUEkcSvyYxC2BaZN9j7zVt5WfZVMzA1aBf5RweF2oo0Xf8+l TMG2npomocTWzYmWg/dOg== X-UI-Out-Filterresults: notjunk:1;V01:K0:ZkRQf86d2Og=:gjYLxZ4RJubdMgWMvZBhLd T63Kz5qyM2tAzbvYQ81OyR4fpOEXeDNzkw78WEYq18VE+cIeKW6tYKeYB4v5ovq/FtkWOhOr4 Pz7wL2lZzq+0fDG1AxoW8uUG7tqKDyD0l1JWsesfO1ZWS346MQb5rQNweRtaziHC2/XdOH0oG 9qsbMsJ3EQZfdLR63EhRXTaiGsch+c5M3YaqJzl9gipVOEQcMfHlNYCFr1T41t68zpvRp0Oa5 L89z2lCnCxuhoE3BGx+M5l/ukZjpTkAlfzr2mhQwwZ28hjVRxELBPIGgfCyKaGJT4S66U3zhp W9yDa2mT3/qnB0DxGlGXmP2bof9kO1ERmrBjhln5r/9+bLqQSvT8E/7hiQBKxt0NW34zA8d1i RqSj/Z/vTNbR/A3GhJHZSOdoihYnaLJQsin6q5zwJUyka3VAGFOUr55BuNPA461U0xKEhCkQM 9LsurpOo0KvzOACZxYFGetX5VqgbUSb6kfBcoIZfN43u2PFpxCH7b+EawQFdb3lp38Md8L/sF 3vFni6qWxcQIlW6dWkZi3v35M6ZjcDyGCFsaMXCMCi1+tSMg0ejC2Cym5E2f4hmfoSzjn34/K bIrvWO2F2wkHydMsZWE1ucwX/x3fFqLOL9c8PZeKsGDWLHo5Nqs6D7jwozj2Q9h0TsT5ThstG WOJwkcLPmSVHgNr81i3mcIz0SmvBOTHRvVbKeiFcjR4xzOyR85bhlYh3/yJxf4yZwJTfeY5c/ O6DTGCrhhtksz9901yRvFhxHjAX1AlRCGtG2Y9sTyTFoaFL6VLJWSChSC9WNPN0SZFJD+hln X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 208.118.235.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.org gmane.emacs.bugs:151736 Archived-At: > Now I found a reproducible test case: > > 1. create and remember a window-configuration > > 2. switch to a different window-configuration > > 3. kill the buffer that was in prev-buffers of the > first window-configuration > > 4. restore the first window-configuration > > 5. look into its prev-buffers, it contains: > > (# # #) Hmmm... so even live windows can make troubles as soon as they are stored in a configuration. You have probably seen the tribulations of 'switch-to-prev-buffer' and 'switch-to-next-buffer' when they encounter a killed buffer in one of these lists. > 6. (window-state-get nil t) on the window with such prev-buffers > produces: > > (nil nil nil) > > I believe this patch should fix the problem: > > diff --git a/lisp/window.el b/lisp/window.el > index 27d7e42280..ad8164052f 100644 > --- a/lisp/window.el > +++ b/lisp/window.el > @@ -5552,9 +5552,14 @@ window--state-get-1 > (buffer (window-buffer window)) > (selected (eq window (selected-window))) > (next-buffers (when (window-live-p window) > - (window-next-buffers window))) > + (delq nil (mapcar (lambda (buffer) > + (and (buffer-live-p buffer) buffer)) > + (window-next-buffers window))))) > (prev-buffers (when (window-live-p window) > - (window-prev-buffers window))) > + (delq nil (mapcar (lambda (entry) > + (and (buffer-live-p (nth 0 entry)) > + entry)) > + (window-prev-buffers window))))) > (head > `(,type > ,@(unless (window-next-sibling window) `((last . t))) OK. Wouldn't 'window-state-put' run into a similar problem when a buffer in some prev or next list gets killed in between getting and putting? martin