Fix split-window-below for the case when split-window-keep-point is nil.

* lisp/window.el (split-window-below): Don't try to move point when
split-window-keep-point is nil and window-to-split is not the selected window
or nil (that defaults to the selected window) because code makes sense
only for the selected window.
(split-window-below, split-window-right): Improve docstrings (bug#60886)
This commit is contained in:
Juri Linkov 2023-01-18 20:24:26 +02:00
parent 8e9783b4ce
commit 758ac5eabb

View file

@ -5670,7 +5670,8 @@ the original point in both windows."
(defun split-window-below (&optional size window-to-split) (defun split-window-below (&optional size window-to-split)
"Split WINDOW-TO-SPLIT into two windows, one above the other. "Split WINDOW-TO-SPLIT into two windows, one above the other.
WINDOW-TO-SPLIT is above. The newly split-off window is WINDOW-TO-SPLIT defaults to the selected window and and will be above
the other window after splitting. The newly split-off window is
below and displays the same buffer. Return the new window. below and displays the same buffer. Return the new window.
If optional argument SIZE is omitted or nil, both windows get the If optional argument SIZE is omitted or nil, both windows get the
@ -5691,7 +5692,9 @@ amount of redisplay; this is convenient on slow terminals."
;; `split-window' would not signal an error here. ;; `split-window' would not signal an error here.
(error "Size of new window too small")) (error "Size of new window too small"))
(setq new-window (split-window window-to-split size)) (setq new-window (split-window window-to-split size))
(unless split-window-keep-point (when (and (null split-window-keep-point)
(or (null window-to-split)
(eq window-to-split (selected-window))))
(with-current-buffer (window-buffer window-to-split) (with-current-buffer (window-buffer window-to-split)
;; Use `save-excursion' around vertical movements below ;; Use `save-excursion' around vertical movements below
;; (Bug#10971). Note: When WINDOW-TO-SPLIT's buffer has a ;; (Bug#10971). Note: When WINDOW-TO-SPLIT's buffer has a
@ -5732,8 +5735,9 @@ handled as in `split-window-below'."
(defun split-window-right (&optional size window-to-split) (defun split-window-right (&optional size window-to-split)
"Split WINDOW-TO-SPLIT into two side-by-side windows. "Split WINDOW-TO-SPLIT into two side-by-side windows.
WINDOW-TO-SPLIT is on the left. The newly split-off window is on WINDOW-TO-SPLIT defaults to the selected window and and will be on the
the right and displays the same buffer. Return the new window. left after splitting. The newly split-off window is on the right and
displays the same buffer. Return the new window.
If optional argument SIZE is omitted or nil, both windows get the If optional argument SIZE is omitted or nil, both windows get the
same width, or close to it. If SIZE is positive, the left-hand same width, or close to it. If SIZE is positive, the left-hand