From: Richard M. Stallman Date: Mon, 25 Dec 1995 19:14:56 +0000 (+0000) Subject: (split-window-vertically): Don't change point in old X-Git-Tag: emacs-19.34~2006 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=4464514e6e41f905c4f2e51797603d7f111d0c08;p=emacs.git (split-window-vertically): Don't change point in old window if both the original point and the end of the buffer are visible after splitting, when split-window-keep-point is nil. --- diff --git a/lisp/window.el b/lisp/window.el index 8701d121015..27c42efc5ba 100644 --- a/lisp/window.el +++ b/lisp/window.el @@ -167,7 +167,8 @@ new mode line." (let ((old-w (selected-window)) (old-point (point)) (size (and arg (prefix-numeric-value arg))) - new-w bottom switch) + (window-full-p nil) + new-w bottom switch moved) (and size (< size 0) (setq size (+ (window-height) size))) (setq new-w (split-window nil size)) (or split-window-keep-point @@ -175,18 +176,23 @@ new mode line." (save-excursion (set-buffer (window-buffer)) (goto-char (window-start)) - (vertical-motion (window-height)) + (setq moved (vertical-motion (window-height))) (set-window-start new-w (point)) (if (> (point) (window-point new-w)) (set-window-point new-w (point))) - (vertical-motion -1) - (setq bottom (point))) - (if (<= bottom (point)) - (set-window-point old-w (1- bottom))) - (if (< (window-start new-w) old-point) - (progn - (set-window-point new-w old-point) - (select-window new-w))))) + (and (= moved (window-height)) + (progn + (setq window-full-p t) + (vertical-motion -1))) + (setq bottom (point))) + (and window-full-p + (<= bottom (point)) + (set-window-point old-w (1- bottom))) + (and window-full-p + (<= (window-start new-w) old-point) + (progn + (set-window-point new-w old-point) + (select-window new-w))))) new-w)) (defun split-window-horizontally (&optional arg)