emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] Changes to emacs/lisp/simple.el,v


From: Kim F. Storm
Subject: [Emacs-diffs] Changes to emacs/lisp/simple.el,v
Date: Mon, 18 Sep 2006 11:13:05 +0000

CVSROOT:        /cvsroot/emacs
Module name:    emacs
Changes by:     Kim F. Storm <kfstorm>  06/09/18 11:13:04

Index: simple.el
===================================================================
RCS file: /cvsroot/emacs/emacs/lisp/simple.el,v
retrieving revision 1.822
retrieving revision 1.823
diff -u -b -r1.822 -r1.823
--- simple.el   16 Sep 2006 14:19:31 -0000      1.822
+++ simple.el   18 Sep 2006 11:13:04 -0000      1.823
@@ -3487,29 +3487,30 @@
          (set-window-vscroll nil (- vs (frame-char-height)) t)))
 
     ;; Move forward (down).
-    (let ((wvis (window-line-visibility)))
-      (when (or (null wvis)
-               (and (consp wvis)
-                    (or (>= (car wvis) (frame-char-height))
-                        (>= (cdr wvis) (frame-char-height)))))
+    (let* ((lh (window-line-height -1))
+          (vpos (nth 1 lh))
+          (ypos (nth 2 lh))
+          (rbot (nth 3 lh))
+          ppos py vs)
+      (when (or (null lh)
+               (>= rbot (frame-char-height))
+               (<= ypos (- (frame-char-height))))
+       (unless lh
        (let* ((wend (window-end nil t))
               (evis (or (pos-visible-in-window-p wend nil t)
-                        (pos-visible-in-window-p (1- wend) nil t)))
-              (rbot (nth 3 evis))
-              (vpos (nth 5 evis))
-              ppos py vs)
+                          (pos-visible-in-window-p (1- wend) nil t))))
+           (setq rbot (nth 3 evis)
+                 vpos (nth 5 evis))))
          (cond
-          ;; Last window line should be visible - fail if not.
-          ((null evis)
-           nil)
           ;; If last line of window is fully visible, move forward.
-          ((null rbot)
+        ((or (null rbot) (= rbot 0))
            nil)
           ;; If cursor is not in the bottom scroll margin, move forward.
-          ((< (setq ppos (posn-at-point)
+        ((and (> vpos 0)
+              (< (setq ppos (posn-at-point)
                     py (cdr (or (posn-actual-col-row ppos)
                                 (posn-col-row ppos))))
-              (min (- (window-text-height) scroll-margin 1) (1- vpos)))
+                 (min (- (window-text-height) scroll-margin 1) (1- vpos))))
            nil)
           ;; When already vscrolled, we vscroll some more if we can,
           ;; or clear vscroll and move forward at end of tall image.
@@ -3518,8 +3519,9 @@
              (set-window-vscroll nil (+ vs (min rbot (frame-char-height))) t)))
           ;; If cursor just entered the bottom scroll margin, move forward,
           ;; but also vscroll one line so redisplay wont recenter.
-          ((= py (min (- (window-text-height) scroll-margin 1)
-                      (1- vpos)))
+        ((and (> vpos 0)
+              (= py (min (- (window-text-height) scroll-margin 1)
+                         (1- vpos))))
            (set-window-vscroll nil (frame-char-height) t)
            (line-move-1 arg noerror to-end)
            t)
@@ -3529,7 +3531,7 @@
            t)
           ;; Finally, start vscroll.
           (t
-           (set-window-vscroll nil (frame-char-height) t))))))))
+         (set-window-vscroll nil (frame-char-height) t)))))))
 
 
 ;; This is like line-move-1 except that it also performs




reply via email to

[Prev in Thread] Current Thread [Next in Thread]