]> git.eshelyaron.com Git - emacs.git/commitdiff
(split-window-vertically): Don't change point in old
authorRichard M. Stallman <rms@gnu.org>
Mon, 25 Dec 1995 19:14:56 +0000 (19:14 +0000)
committerRichard M. Stallman <rms@gnu.org>
Mon, 25 Dec 1995 19:14:56 +0000 (19:14 +0000)
window if both the original point and the end of the buffer are
visible after splitting, when split-window-keep-point is nil.

lisp/window.el

index 8701d1210153aa29c71068d1c3a288d1e1c2fe93..27c42efc5baab58c43474983d33a74a44698c64e 100644 (file)
@@ -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)