mirror of
git://git.sv.gnu.org/emacs.git
synced 2025-12-15 10:30:25 -08:00
(recenter-top-bottom): Determine top and bottom positions using
scroll-margin instead of scroll-conservatively.
This commit is contained in:
parent
0444738fa2
commit
46f2aa14ba
1 changed files with 14 additions and 15 deletions
|
|
@ -1436,26 +1436,25 @@ top, middle, or bottom on successive calls.
|
|||
|
||||
The cycling order is: middle -> top -> bottom.
|
||||
|
||||
Top and bottom destinations are actually `scroll-conservatively' lines
|
||||
from true window top and bottom."
|
||||
Top and bottom destinations are actually `scroll-margin' lines
|
||||
the from true window top and bottom."
|
||||
(interactive "P")
|
||||
(cond
|
||||
(arg (recenter arg)) ; Always respect ARG.
|
||||
((not (eq this-command last-command))
|
||||
;; First time - save mode and recenter.
|
||||
((or (not (eq this-command last-command))
|
||||
(eq recenter-last-op 'bottom))
|
||||
(setq recenter-last-op 'middle)
|
||||
(recenter))
|
||||
(t ;; repeat: loop through various options.
|
||||
(setq recenter-last-op
|
||||
(cond ((eq recenter-last-op 'middle)
|
||||
(recenter scroll-conservatively)
|
||||
'top)
|
||||
((eq recenter-last-op 'top)
|
||||
(recenter (1- (- scroll-conservatively)))
|
||||
'bottom)
|
||||
((eq recenter-last-op 'bottom)
|
||||
(recenter)
|
||||
'middle))))))
|
||||
(t
|
||||
(let ((this-scroll-margin
|
||||
(min (max 0 scroll-margin)
|
||||
(truncate (/ (window-body-height) 4.0)))))
|
||||
(cond ((eq recenter-last-op 'middle)
|
||||
(setq recenter-last-op 'top)
|
||||
(recenter this-scroll-margin))
|
||||
((eq recenter-last-op 'top)
|
||||
(setq recenter-last-op 'bottom)
|
||||
(recenter (- -1 this-scroll-margin))))))))
|
||||
|
||||
(define-key global-map [?\C-l] 'recenter-top-bottom)
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue