# HG changeset patch # User Kim F. Storm # Date 1106358296 0 # Node ID 1d33b3da115710db1d1b6ff1019b90949fb3b8f8 # Parent 0e7e54a3da103f049b7a6fa4a48d1ab00c6b2e97 (line-move-1): Rename from line-move. (line-move): New function that adjusts vscroll for partially visible rows, and calls line-move-1 otherwise. diff -r 0e7e54a3da10 -r 1d33b3da1157 lisp/simple.el --- a/lisp/simple.el Sat Jan 22 01:43:55 2005 +0000 +++ b/lisp/simple.el Sat Jan 22 01:44:56 2005 +0000 @@ -3179,10 +3179,31 @@ (or (memq prop buffer-invisibility-spec) (assq prop buffer-invisibility-spec))))) +;; Perform vertical scrolling of tall images if necessary. +(defun line-move (arg &optional noerror to-end) + (if auto-window-vscroll + (let ((forward (> arg 0)) + (pvis (pos-visible-in-window-p (window-start) nil t))) + (if (and pvis (null (nth 2 pvis)) + (> (nth (if forward 4 3) pvis) 0)) + (set-window-vscroll nil + (if forward + (+ (window-vscroll nil t) + (min (nth 4 pvis) + (* (frame-char-height) arg))) + (max 0 + (- (window-vscroll nil t) + (min (nth 3 pvis) + (* (frame-char-height) (- arg)))))) + t) + (set-window-vscroll nil 0) + (line-move-1 arg noerror to-end))) + (line-move-1 arg noerror to-end))) + ;; This is the guts of next-line and previous-line. ;; Arg says how many lines to move. ;; The value is t if we can move the specified number of lines. -(defun line-move (arg &optional noerror to-end) +(defun line-move-1 (arg &optional noerror to-end) ;; Don't run any point-motion hooks, and disregard intangibility, ;; for intermediate positions. (let ((inhibit-point-motion-hooks t)