From 16c2f92f01ba1eb18a8f5fcfc9efb4243848a512 Mon Sep 17 00:00:00 2001 From: "Kim F. Storm" Date: Sat, 22 Jan 2005 01:44:56 +0000 Subject: [PATCH] (line-move-1): Rename from line-move. (line-move): New function that adjusts vscroll for partially visible rows, and calls line-move-1 otherwise. --- lisp/simple.el | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/lisp/simple.el b/lisp/simple.el index fbcb776c7dc..e2476577fe3 100644 --- a/lisp/simple.el +++ b/lisp/simple.el @@ -3179,10 +3179,31 @@ Outline mode sets this." (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) -- 2.39.5