Skip to content

Commit c2e4f7c

Browse files
committed
Use timer for delay display overlays.
1 parent 4190128 commit c2e4f7c

File tree

1 file changed

+22
-2
lines changed

1 file changed

+22
-2
lines changed

ivy-file-preview.el

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,11 @@
5858
:type 'boolean
5959
:group 'ivy-file-preview)
6060

61+
(defcustom ivy-file-preview-overlay-delay-time 0.4
62+
"Time to delay before display overlays."
63+
:type 'float
64+
:group 'ivy-file-preview)
65+
6166
(defvar ivy-file-preview--preview-files '()
6267
"Files that are previewing, and will be closed after action is done.")
6368

@@ -76,6 +81,9 @@
7681
(defvar ivy-file-preview--ivy-text ""
7782
"Record down the ivy text to prevent make overlay if not need to.")
7883

84+
(defvar ivy-file-preview--overlay-timer nil
85+
"Timer to make overlays in buffer.")
86+
7987
;;; Util
8088

8189
(defun ivy-file-preview--project-path ()
@@ -87,6 +95,10 @@
8795
(goto-char (point-min))
8896
(forward-line (1- ln)))
8997

98+
(defun ivy-file-preview--safe-kill-timer (tmr)
99+
"Kill TMR safely."
100+
(when (timerp tmr) (cancel-timer tmr)))
101+
90102
(defun ivy-file-preview--convert-pos-delta (ln col)
91103
"Convert LN and COL to position point."
92104
(save-excursion
@@ -178,6 +190,12 @@ If CURRENT-OV is non-nil it create overlay that are currently selected."
178190
(ivy-file-preview--make-current-overlay pos len)
179191
(ivy-file-preview--make-overlay pos (+ pos len))))))
180192

193+
(defun ivy-file-preview--delay-make-overlays ()
194+
"Seconds to delay display overlays."
195+
(with-selected-window minibuffer-scroll-window
196+
(ivy-file-preview--delete-overlays)
197+
(ivy-file-preview--make-overlays)))
198+
181199
(defun ivy-file-preview--open-file (fn pos)
182200
"Open the file path (FN) and move to POS.
183201
If POS is nil then it won't moves."
@@ -216,8 +234,10 @@ FN is the file path. POS can either be one of the following type:
216234
(if (and (string= ivy-file-preview--ivy-text ivy-text)
217235
ivy-file-preview--current-overlay)
218236
(ivy-file-preview--swap-current-overlay)
219-
(ivy-file-preview--delete-overlays)
220-
(ivy-file-preview--make-overlays))
237+
(ivy-file-preview--safe-kill-timer ivy-file-preview--overlay-timer)
238+
(setq ivy-file-preview--overlay-timer
239+
(run-with-timer ivy-file-preview-overlay-delay-time nil
240+
#'ivy-file-preview--delay-make-overlays)))
221241
(setq ivy-file-preview--ivy-text ivy-text)))))
222242

223243
(defun ivy-file-preview--after-select (&rest _)

0 commit comments

Comments
 (0)