all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: martin rudalics <rudalics@gmx.at>
To: Juri Linkov <juri@linkov.net>
Cc: 32850@debbugs.gnu.org
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	[thread overview]
Message-ID: <5BD57AD4.1090008@gmx.at> (raw)
In-Reply-To: <87lg6jysql.fsf@mail.linkov.net>

 > 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:
 >
 >     (#<killed buffer> #<marker in no buffer> #<marker in no buffer>)

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





  reply	other threads:[~2018-10-28  9:01 UTC|newest]

Thread overview: 78+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-09-26 23:39 bug#32850: 27.0.50; window-swap-states doesn't swap window prev/next-buffers Juri Linkov
2018-09-27 18:45 ` martin rudalics
2018-09-27 22:52   ` Juri Linkov
2018-09-30  8:00     ` martin rudalics
2018-09-30 20:00       ` Juri Linkov
2018-10-01  8:35         ` martin rudalics
2018-10-08 22:41           ` Juri Linkov
2018-10-09  7:44             ` martin rudalics
2018-10-15 20:48               ` Juri Linkov
2018-10-16  8:45                 ` martin rudalics
2018-10-16 22:37                   ` Juri Linkov
2018-10-17  7:31                     ` martin rudalics
2018-10-17 21:58                       ` Juri Linkov
2018-10-18  8:05                         ` martin rudalics
2018-10-18 22:37                           ` Juri Linkov
2018-10-19  7:40                             ` martin rudalics
2018-10-20 21:40                               ` Juri Linkov
2018-10-21  8:22                                 ` martin rudalics
2018-10-21 18:14                                   ` Juri Linkov
2018-10-22  9:07                                     ` martin rudalics
2018-10-23 20:45                                       ` Juri Linkov
2018-10-24  9:45                                         ` martin rudalics
2018-10-24 23:39                                           ` Juri Linkov
2018-10-25  6:04                                             ` martin rudalics
2018-10-25 19:19                                               ` Juri Linkov
2018-10-26  7:39                                                 ` martin rudalics
2018-10-26  7:59                                                   ` Eli Zaretskii
2018-10-27 20:09                                                   ` Juri Linkov
2018-10-28  9:00                                                     ` martin rudalics
2018-10-28 19:29                                                       ` Juri Linkov
2018-10-29  8:44                                                         ` martin rudalics
2018-10-29 22:45                                                           ` Juri Linkov
2018-10-30  9:00                                                             ` martin rudalics
2018-10-30 21:23                                                               ` Juri Linkov
2018-10-31  8:11                                                                 ` martin rudalics
2018-10-31 21:25                                                                   ` Juri Linkov
2018-11-01  9:03                                                                     ` martin rudalics
2018-11-01 22:30                                                                       ` Juri Linkov
2018-11-02  8:43                                                                         ` martin rudalics
2018-11-05 21:38                                                                           ` Juri Linkov
2018-11-06  3:26                                                                             ` Eli Zaretskii
2018-11-06 22:35                                                                               ` Juri Linkov
2018-11-06  8:46                                                                             ` martin rudalics
2018-11-10 21:56                                                   ` Juri Linkov
2018-11-11  8:53                                                     ` martin rudalics
2018-11-11 20:23                                                       ` Juri Linkov
2018-11-12  8:53                                                         ` martin rudalics
2018-11-12 23:47                                                           ` Juri Linkov
2018-11-13  9:09                                                             ` martin rudalics
2018-11-13 23:43                                                               ` Juri Linkov
2018-11-14  8:34                                                                 ` martin rudalics
2018-11-15  0:02                                                                   ` Juri Linkov
2018-11-15  9:12                                                                     ` martin rudalics
2018-11-15 21:30                                                                       ` Juri Linkov
2018-11-16  8:52                                                                         ` martin rudalics
2018-11-17 22:04                                                                           ` Juri Linkov
2018-11-18  9:23                                                                             ` martin rudalics
2018-11-17 17:01                                                                         ` Charles A. Roelli
2018-11-17 22:01                                                                           ` Juri Linkov
2018-11-18  9:23                                                                             ` martin rudalics
2018-11-18 22:47                                                                               ` Juri Linkov
2018-11-19  9:42                                                                                 ` martin rudalics
2018-11-19 22:28                                                                                   ` Juri Linkov
2018-11-20  9:27                                                                                     ` martin rudalics
2018-11-21  0:08                                                                                       ` Juri Linkov
2018-11-21  8:20                                                                                         ` martin rudalics
2018-11-21 23:44                                                                                           ` Juri Linkov
2018-11-22  7:41                                                                                             ` martin rudalics
2018-11-15  9:23                                                                     ` martin rudalics
2018-10-18 23:18                   ` Juri Linkov
2018-10-19  7:40                     ` martin rudalics
2018-10-25 19:31                       ` Juri Linkov
2018-10-26  7:41                         ` martin rudalics
2018-10-27 21:11                           ` Juri Linkov
2018-10-27 21:39                           ` Juri Linkov
2018-10-28  9:01                             ` martin rudalics [this message]
2018-10-28 19:09                               ` Juri Linkov
2018-10-29  8:43                                 ` martin rudalics

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

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=5BD57AD4.1090008@gmx.at \
    --to=rudalics@gmx.at \
    --cc=32850@debbugs.gnu.org \
    --cc=juri@linkov.net \
    /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.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.