branch: externals/dired-preview commit de4e65e0c8258198eca44f05776bb508a4390b86 Author: Protesilaos Stavrou <i...@protesilaos.com> Commit: Protesilaos Stavrou <i...@protesilaos.com>
Remove delay for mode hooks We already have a delay of our own, so this is not necessary. Plus it makes our code more complicated. --- dired-preview.el | 40 +++++++++++++++------------------------- 1 file changed, 15 insertions(+), 25 deletions(-) diff --git a/dired-preview.el b/dired-preview.el index 563ab14181..ac84172ba4 100644 --- a/dired-preview.el +++ b/dired-preview.el @@ -155,13 +155,11 @@ until it drops below this number.") (catch 'stop (mapc (lambda (buffer) - (if (>= (dired-preview--get-buffer-cumulative-size) - dired-preview--buffers-threshold) - (when (and (buffer-local-value 'delayed-mode-hooks buffer) - (not (eq buffer (current-buffer)))) - (ignore-errors (kill-buffer-if-not-modified buffer)) - (setq buffers (delq buffer buffers))) - (throw 'stop t))) + (when (and (>= (dired-preview--get-buffer-cumulative-size) dired-preview--buffers-threshold) + (not (eq buffer (current-buffer)))) + (ignore-errors (kill-buffer-if-not-modified buffer)) + (setq buffers (delq buffer buffers))) + (throw 'stop t)) buffers)) (setq dired-preview--buffers (delq nil (nreverse buffers))))) @@ -212,16 +210,12 @@ See user option `dired-preview-ignored-extensions-regexp'." (set-window-parameter window 'dedicated value) (set-window-parameter window 'no-other-window value))) -(defun dired-preview--run-mode-hooks () - "Run mode hooks in current buffer, if `delayed-mode-hooks' is non-nil." - (cond - ((window-parameter (selected-window) 'dired-preview-window) - (dired-preview--delete-windows)) - ((and delay-mode-hooks (current-buffer)) +(defun dired-preview--clean-up-window () + "Delete or clean up preview window." + (if (window-parameter (selected-window) 'dired-preview-window) + (dired-preview--delete-windows) (dired-preview--set-window-parameters (selected-window) nil) - (apply #'run-hooks (delete-dups delayed-mode-hooks)) - (kill-local-variable 'delayed-mode-hooks) - (remove-hook 'post-command-hook #'dired-preview--run-mode-hooks :local)))) + (remove-hook 'post-command-hook #'dired-preview--clean-up-window :local))) ;; TODO 2024-04-22: Add PDF type and concomitant method to display its buffer. (defun dired-preview--infer-type (file) @@ -257,8 +251,7 @@ FILE." (inhibit-message t) (enable-dir-local-variables nil) (enable-local-variables :safe) - (non-essential t) - (delay-mode-hooks t)) + (non-essential t)) (find-file-noselect file :nowarn)))) (defun dired-preview--add-truncation-message () @@ -290,8 +283,7 @@ The size of the leading chunk is specified by (inhibit-message t) (enable-dir-local-variables nil) (enable-local-variables :safe) - (non-essential t) - (delay-mode-hooks t)) + (non-essential t)) (if-let* ((buffer (or (get-file-buffer file) (find-buffer-visiting file) (alist-get file dired-preview--large-files-alist @@ -323,8 +315,7 @@ The size of the leading chunk is specified by (inhibit-message t) (enable-dir-local-variables nil) (enable-local-variables :safe) - (non-essential t) - (delay-mode-hooks t)) + (non-essential t)) (dired-noselect file)))) ;; FIXME 2024-04-22: Best way to preview images and PDF files? For now @@ -337,8 +328,7 @@ The size of the leading chunk is specified by (inhibit-message t) (enable-dir-local-variables nil) (enable-local-variables :safe) - (non-essential t) - (delay-mode-hooks t)) + (non-essential t)) (find-file-noselect file :nowarn)))) (defun dired-preview--add-to-previews (file) @@ -350,7 +340,7 @@ Always return FILE buffer." buffer (setq buffer (dired-preview--get-buffer (dired-preview--infer-type file)))) (with-current-buffer buffer - (add-hook 'post-command-hook #'dired-preview--run-mode-hooks nil :local)) + (add-hook 'post-command-hook #'dired-preview--clean-up-window nil :local)) (add-to-list 'dired-preview--buffers buffer) buffer)))