branch: externals/dired-preview commit b3675506632db37a51fec6bc4dcf31d5d6cf8d45 Author: Protesilaos Stavrou <i...@protesilaos.com> Commit: Protesilaos Stavrou <i...@protesilaos.com>
Rewrite how the timer is started This is the right place to put it. It does not block Emacs while moving quickly between files. The old design would eagerly do find-file on the file at point and only delay the 'display-buffer' part. --- dired-preview.el | 33 +++++++++++++++------------------ 1 file changed, 15 insertions(+), 18 deletions(-) diff --git a/dired-preview.el b/dired-preview.el index b59dcd2dd5..d276374d7e 100644 --- a/dired-preview.el +++ b/dired-preview.el @@ -263,38 +263,35 @@ Only do it with the current major mode is Dired." buffer dired-preview-display-action-alist))) -(defvar dired-preview--timer nil - "Most recent timer object to display a preview.") - -(defun dired-preview--cancel-timer () - "Cancel `dired-preview--timer' if it is a timer object." - (when (timerp dired-preview--timer) - (cancel-timer dired-preview--timer))) - -(defun dired-preview--display-buffer-with-delay (buffer) - "Display BUFFER with `dired-preview-delay'." - (dired-preview--cancel-timer) - (setq dired-preview--timer - (run-with-idle-timer - dired-preview-delay - nil #'dired-preview--display-buffer buffer))) - (defun dired-preview-display-file () "Display preview of `dired-file-name-at-point' if appropriate. Return buffer object of displayed buffer." (if-let* ((file (dired-file-name-at-point)) (buffer (dired-preview--return-preview-buffer file))) - (dired-preview--display-buffer-with-delay buffer) + (dired-preview--display-buffer buffer) (dired-preview--close-previews))) (defvar dired-preview-trigger-commands '(dired-next-line dired-previous-line dired-mark dired-goto-file) "List of Dired commands that trigger a preview.") +(defvar dired-preview--timer nil + "Most recent timer object to display a preview.") + +(defun dired-preview--cancel-timer () + "Cancel `dired-preview--timer' if it is a timer object." + (when (timerp dired-preview--timer) + (cancel-timer dired-preview--timer))) + (defun dired-preview-trigger () "Trigger display of file at point after `dired-preview-trigger-commands'." (when (memq this-command dired-preview-trigger-commands) - (dired-preview-display-file))) + (dired-preview--cancel-timer) + (setq dired-preview--timer + (run-with-idle-timer + dired-preview-delay + nil + #'dired-preview-display-file)))) (defun dired-preview-disable-preview () "Disable Dired preview."