# HG changeset patch # User Jim Blandy # Date 739791920 0 # Node ID e14773d3f849873a980403043d0214c09d6b10a8 # Parent a846352be1a00f6f408293ed24113c34f03177e9 * simple.el (hscroll-point-visible): Work as documented in the docstring for hscroll-step. diff -r a846352be1a0 -r e14773d3f849 lisp/simple.el --- a/lisp/simple.el Fri Jun 11 07:29:55 1993 +0000 +++ b/lisp/simple.el Fri Jun 11 09:45:20 1993 +0000 @@ -1477,16 +1477,28 @@ (defun hscroll-point-visible () "Scrolls the window horizontally to make point visible." - (let* ((min (window-hscroll)) - (max (- (+ min (window-width)) 2)) - (here (current-column)) - (delta (if (zerop hscroll-step) (/ (window-width) 2) hscroll-step)) - ) - (if (< here min) - (scroll-right (max 0 (+ (- min here) delta))) - (if (>= here max) - (scroll-left (- (- here min) delta)) - )))) + (let* ((here (current-column)) + (left (window-hscroll)) + (right (- (+ left (window-width)) 3))) + (cond + ;; Should we recenter? + ((or (< here (- left hscroll-step)) + (> here (+ right hscroll-step))) + (set-window-hscroll + (selected-window) + ;; Recenter, but don't show too much white space off the end of + ;; the line. + (max 0 + (min (- (save-excursion (end-of-line) (current-column)) + (window-width) + -5) + (- here (/ (window-width) 2)))))) + ;; Should we scroll left? + ((> here right) + (scroll-left hscroll-step)) + ;; Or right? + ((< here left) + (scroll-right hscroll-step))))) ;; rms: (1) The definitions of arrow keys should not simply restate ;; what keys they are. The arrow keys should run the ordinary commands.