From: Juri Linkov <juri@linkov.net>
To: martin rudalics <rudalics@gmx.at>
Cc: 32850@debbugs.gnu.org
Subject: bug#32850: 27.0.50; window-swap-states doesn't swap window prev/next-buffers
Date: Mon, 05 Nov 2018 23:38:27 +0200 [thread overview]
Message-ID: <87ftwfyzq9.fsf@mail.linkov.net> (raw)
In-Reply-To: <5BDC0E49.6020200@gmx.at> (martin rudalics's message of "Fri, 02 Nov 2018 09:43:53 +0100")
> Sounds reasonable (Bug#16793 just wants a live window there and
> splitting and deleting the old one should do that trivially). Feel
> free to install if you see no further problems.
After reading bug#16793, I see that the original intention was
to restore a window state on the same frame where the subtree of
the specified internal window is. If this is important, then
a better change is:
diff --git a/doc/lispref/windows.texi b/doc/lispref/windows.texi
index 772bcdf9a6..49698f45bf 100644
--- a/doc/lispref/windows.texi
+++ b/doc/lispref/windows.texi
@@ -5706,9 +5706,10 @@ Window Configurations
The argument @var{state} should be the state of a window returned by
an earlier invocation of @code{window-state-get}, see above. The
optional argument @var{window} can be either a live window or an
-internal window (@pxref{Windows and Frames}) and defaults to the
-selected one. If @var{window} is not live, it is replaced by a live
-window before putting @var{state} into it.
+internal window (@pxref{Windows and Frames}). If @var{window} is not
+live, it is replaced by a new live window created on the same subtree
+before putting @var{state} into it. If @var{window} is nil, it puts
+the window state into a new window.
If the optional argument @var{ignore} is non-@code{nil}, it means to ignore
minimum window sizes and fixed-size restrictions. If @var{ignore}
diff --git a/lisp/window.el b/lisp/window.el
index bcd4fa2959..b8a8b81af3 100644
--- a/lisp/window.el
+++ b/lisp/window.el
@@ -5889,29 +5889,34 @@ window-state-put
"Put window state STATE into WINDOW.
STATE should be the state of a window returned by an earlier
invocation of `window-state-get'. Optional argument WINDOW must
-specify a valid window and defaults to the selected one. If
-WINDOW is not live, replace WINDOW by a live one before putting
-STATE into it.
+specify a valid window. If WINDOW is not live, replace WINDOW
+by a new live one created on the same subtree. If WINDOW is nil,
+create a new window before putting STATE into it.
Optional argument IGNORE non-nil means ignore minimum window
sizes and fixed size restrictions. IGNORE equal `safe' means
windows can get as small as `window-safe-min-height' and
`window-safe-min-width'."
(setq window-state-put-stale-windows nil)
- (setq window (window-normalize-window window))
- ;; When WINDOW is internal, reduce it to a live one to put STATE into,
- ;; see Bug#16793.
+ ;; When WINDOW is internal or nil, reduce it to a live one,
+ ;; then create a new window on the same subtree to put STATE into.
(unless (window-live-p window)
(let ((root window))
- (setq window (catch 'live
- (walk-window-subtree
- (lambda (window)
- (when (and (window-live-p window)
- (not (window-parameter window 'window-side)))
- (throw 'live window)))
- root)))
- (delete-other-windows-internal window root)))
+ (setq window (if root
+ (catch 'live
+ (walk-window-subtree
+ (lambda (window)
+ (when (and (window-live-p window)
+ (not (window-parameter
+ window 'window-side)))
+ (throw 'live window)))
+ root))
+ (selected-window)))
+ (delete-other-windows-internal window root)
+ ;; Create a new window to replace the existing one.
+ (setq window (prog1 (split-window window)
+ (delete-window window)))))
(set-window-dedicated-p window nil)
next prev parent reply other threads:[~2018-11-05 21:38 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 [this message]
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
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=87ftwfyzq9.fsf@mail.linkov.net \
--to=juri@linkov.net \
--cc=32850@debbugs.gnu.org \
--cc=rudalics@gmx.at \
/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.