|
58 | 58 | :type 'boolean |
59 | 59 | :group 'ivy-file-preview) |
60 | 60 |
|
| 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 | + |
61 | 66 | (defvar ivy-file-preview--preview-files '() |
62 | 67 | "Files that are previewing, and will be closed after action is done.") |
63 | 68 |
|
|
76 | 81 | (defvar ivy-file-preview--ivy-text "" |
77 | 82 | "Record down the ivy text to prevent make overlay if not need to.") |
78 | 83 |
|
| 84 | +(defvar ivy-file-preview--overlay-timer nil |
| 85 | + "Timer to make overlays in buffer.") |
| 86 | + |
79 | 87 | ;;; Util |
80 | 88 |
|
81 | 89 | (defun ivy-file-preview--project-path () |
|
87 | 95 | (goto-char (point-min)) |
88 | 96 | (forward-line (1- ln))) |
89 | 97 |
|
| 98 | +(defun ivy-file-preview--safe-kill-timer (tmr) |
| 99 | + "Kill TMR safely." |
| 100 | + (when (timerp tmr) (cancel-timer tmr))) |
| 101 | + |
90 | 102 | (defun ivy-file-preview--convert-pos-delta (ln col) |
91 | 103 | "Convert LN and COL to position point." |
92 | 104 | (save-excursion |
@@ -178,6 +190,12 @@ If CURRENT-OV is non-nil it create overlay that are currently selected." |
178 | 190 | (ivy-file-preview--make-current-overlay pos len) |
179 | 191 | (ivy-file-preview--make-overlay pos (+ pos len)))))) |
180 | 192 |
|
| 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 | + |
181 | 199 | (defun ivy-file-preview--open-file (fn pos) |
182 | 200 | "Open the file path (FN) and move to POS. |
183 | 201 | 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: |
216 | 234 | (if (and (string= ivy-file-preview--ivy-text ivy-text) |
217 | 235 | ivy-file-preview--current-overlay) |
218 | 236 | (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))) |
221 | 241 | (setq ivy-file-preview--ivy-text ivy-text))))) |
222 | 242 |
|
223 | 243 | (defun ivy-file-preview--after-select (&rest _) |
|
0 commit comments