Index: emacs/lisp/simple.el
diff -c emacs/lisp/simple.el:1.737 emacs/lisp/simple.el:1.738
*** emacs/lisp/simple.el:1.737  Sat Jul  9 20:46:26 2005
--- emacs/lisp/simple.el        Wed Jul 13 10:29:38 2005
***************
*** 3447,3460 ****
                          (signal 'end-of-buffer nil)
                        (setq done t)))
                  (when (and (not done)
                             (not (integerp selective-display))
                             (not (line-move-invisible-p (point))))
!                   (unless (overlays-in (max (1- pos-before) (point-min))
!                                        (min (1+ (point)) (point-max)))
!                     ;; We avoid vertical-motion when possible
!                     ;; because that has to fontify.
!                     (forward-line 1)
!                     (setq line-done t)))
                  (and (not done) (not line-done)
                       ;; Otherwise move a more sophisticated way.
                       (zerop (vertical-motion 1))
--- 3447,3459 ----
                          (signal 'end-of-buffer nil)
                        (setq done t)))
                  (when (and (not done)
+                            (> arg 1)  ;; Use vertical-motion for last move
                             (not (integerp selective-display))
                             (not (line-move-invisible-p (point))))
!                   ;; We avoid vertical-motion when possible
!                   ;; because that has to fontify.
!                   (forward-line 1)
!                   (setq line-done t))
                  (and (not done) (not line-done)
                       ;; Otherwise move a more sophisticated way.
                       (zerop (vertical-motion 1))
***************
*** 3474,3485 ****
                          (signal 'beginning-of-buffer nil)
                        (setq done t)))
                  (when (and (not done)
                             (not (integerp selective-display))
                             (not (line-move-invisible-p (1- (point)))))
!                   (unless (overlays-in (max (1- (point)) (point-min))
!                                        (min (1+ pos-before) (point-max)))
!                     (forward-line -1)
!                     (setq line-done t)))
                  (and (not done) (not line-done)
                       (zerop (vertical-motion -1))
                       (if (not noerror)
--- 3473,3483 ----
                          (signal 'beginning-of-buffer nil)
                        (setq done t)))
                  (when (and (not done)
+                            (< arg -1) ;; Use vertical-motion for last move
                             (not (integerp selective-display))
                             (not (line-move-invisible-p (1- (point)))))
!                   (forward-line -1)
!                   (setq line-done t))
                  (and (not done) (not line-done)
                       (zerop (vertical-motion -1))
                       (if (not noerror)


_______________________________________________
Emacs-diffs mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/emacs-diffs

Reply via email to