Skip to content

Commit f64f9e0

Browse files
committed
perf: Use only one window change functions
1 parent a6b4dae commit f64f9e0

File tree

1 file changed

+13
-20
lines changed

1 file changed

+13
-20
lines changed

line-reminder.el

Lines changed: 13 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -173,6 +173,8 @@
173173
(declare-function undo-tree-current "ext:undo-tree.el")
174174
(declare-function undo-tree-node-previous "ext:undo-tree.el")
175175

176+
(defvar line-reminder-thumbnail)
177+
176178
;;
177179
;; (@* "Util" )
178180
;;
@@ -395,9 +397,7 @@ Argument LINE is passed in by `linum-format' variable."
395397
;; it will be much faster for large operations (paste, save, etc)
396398
(progn
397399
(add-hook 'window-scroll-functions #'line-reminder--scroll)
398-
(add-hook 'window-size-change-functions #'line-reminder--size-change)
399-
(add-hook 'window-scroll-functions #'line-reminder--thumb-scroll)
400-
(add-hook 'window-size-change-functions #'line-reminder--thumb-size-change)))
400+
(add-hook 'window-size-change-functions #'line-reminder--size-change)))
401401

402402
(defun line-reminder--disable ()
403403
"Disable `line-reminder' in current buffer."
@@ -410,9 +410,7 @@ Argument LINE is passed in by `linum-format' variable."
410410
;; it will be much faster for large operations (paste, save, etc)
411411
(progn
412412
(remove-hook 'window-scroll-functions #'line-reminder--scroll)
413-
(remove-hook 'window-size-change-functions #'line-reminder--size-change)
414-
(remove-hook 'window-scroll-functions #'line-reminder--thumb-scroll)
415-
(remove-hook 'window-size-change-functions #'line-reminder--thumb-size-change)))
413+
(remove-hook 'window-size-change-functions #'line-reminder--size-change)))
416414

417415
;;;###autoload
418416
(define-minor-mode line-reminder-mode
@@ -603,15 +601,21 @@ and END."
603601
(lambda (line sign)
604602
(line-reminder--mark-line line (line-reminder--get-face sign)))))
605603

606-
(defun line-reminder--size-change (&optional frame &rest _)
604+
(defun line-reminder--size-change (&optional _frame &rest _)
607605
"Render for all visible windows from FRAME."
608606
(line-reminder--with-no-redisplay
609-
(dolist (win (window-list frame)) (line-reminder--render-window win))))
607+
(dolist (win (get-buffer-window-list))
608+
(line-reminder--render-window win)
609+
(when line-reminder-thumbnail
610+
(line-reminder--thumb-render-window win)))))
610611

611612
(defun line-reminder--scroll (&optional window &rest _)
612613
"Render on WINDOW."
613614
(line-reminder--with-no-redisplay
614-
(line-reminder--render-window (or window (selected-window)))))
615+
(let ((window (or window (selected-window))))
616+
(line-reminder--render-window window)
617+
(when line-reminder-thumbnail
618+
(line-reminder--thumb-render-window window)))))
615619

616620
(defun line-reminder--render-buffer ()
617621
"Render indicators for current buffer."
@@ -766,17 +770,6 @@ and END."
766770
`(,sign . ,(line-reminder--thumb-create-ov face))))))
767771
line-reminder--line-status)))))))
768772

769-
(defun line-reminder--thumb-size-change (&optional _frame &rest _)
770-
"Render thumbnail for all visible windows in FRAME."
771-
(line-reminder--with-no-redisplay
772-
(dolist (win (get-buffer-window-list))
773-
(line-reminder--thumb-render-window win))))
774-
775-
(defun line-reminder--thumb-scroll (&optional window &rest _)
776-
"Render thumbnail on WINDOW."
777-
(line-reminder--with-no-redisplay
778-
(line-reminder--thumb-render-window (or window (selected-window)))))
779-
780773
(defun line-reminder--thumb-render-buffer ()
781774
"Render indicators for current buffer."
782775
(dolist (win (get-buffer-window-list nil nil t))

0 commit comments

Comments
 (0)