Skip to content

Commit 81a192b

Browse files
committed
Clean up and use scrolling preserve.
1 parent f9b0d33 commit 81a192b

File tree

1 file changed

+9
-28
lines changed

1 file changed

+9
-28
lines changed

better-scroll.el

Lines changed: 9 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -48,10 +48,6 @@
4848

4949
;;; Util
5050

51-
(defun better-scroll--goto-line (ln)
52-
"Goto LN line number."
53-
(goto-char (point-min)) (forward-line (1- ln)))
54-
5551
(defun better-scroll--recenter-positions (type)
5652
"Return the recenter position value by TYPE."
5753
(cl-case type (top '(top)) (middle '(middle)) (bottom '(bottom))))
@@ -66,41 +62,26 @@
6662
(let ((recenter-positions (better-scroll--recenter-positions type)))
6763
(move-to-window-line-top-bottom)))
6864

69-
(defun better-scroll--first-display-line ()
70-
"Return the first display line number."
71-
(save-excursion (move-to-window-line 0) (line-number-at-pos nil t)))
72-
73-
(defun better-scroll--line-diff-to-first ()
74-
"Difference of first display line number and current line number."
75-
(- (line-number-at-pos nil t) (better-scroll--first-display-line)))
76-
7765
;;; Core
7866

79-
(defun better-scroll--do-relative (rel-ln)
80-
"Do the relative line action by REL-LN."
81-
(better-scroll--goto-line (+ (better-scroll--first-display-line) rel-ln)))
82-
83-
(defun better-scroll--do-by-type (rel-ln)
84-
"Do scroll action by passing all needed params, REL-LN."
85-
(cl-case better-scroll-align-type
86-
('center
87-
(better-scroll--move-to-window-line-top-bottom 'middle)
88-
(when (= (point) (point-max)) (better-scroll--recenter-top-bottom 'middle)))
89-
('relative (better-scroll--do-relative rel-ln))))
90-
9167
;;;###autoload
9268
(defun better-scroll-down ()
9369
"Scroll down."
9470
(interactive)
95-
(let ((rel-ln (better-scroll--line-diff-to-first)))
96-
(scroll-down) (better-scroll--do-by-type rel-ln)))
71+
(let ((scroll-preserve-screen-position (equal better-scroll-align-type 'relative)))
72+
(scroll-down)
73+
(when (equal better-scroll-align-type 'center)
74+
(better-scroll--move-to-window-line-top-bottom 'middle))))
9775

9876
;;;###autoload
9977
(defun better-scroll-up ()
10078
"Scroll up."
10179
(interactive)
102-
(let ((rel-ln (better-scroll--line-diff-to-first)))
103-
(scroll-up) (better-scroll--do-by-type rel-ln)))
80+
(let ((scroll-preserve-screen-position (equal better-scroll-align-type 'relative)))
81+
(scroll-up)
82+
(when (equal better-scroll-align-type 'center)
83+
(better-scroll--move-to-window-line-top-bottom 'middle)
84+
(when (= (point) (point-max)) (better-scroll--recenter-top-bottom 'middle)))))
10485

10586
;;;###autoload
10687
(defun better-scroll-down-other-window ()

0 commit comments

Comments
 (0)