branch: externals/dired-preview
commit 4af91a6b7c6d64ecbdfcb3b048a4035f9fb49be7
Author: Protesilaos Stavrou <[email protected]>
Commit: Protesilaos Stavrou <[email protected]>
Re-order large portions of the file
---
dired-preview.el | 140 +++++++++++++++++++++++++++----------------------------
1 file changed, 70 insertions(+), 70 deletions(-)
diff --git a/dired-preview.el b/dired-preview.el
index c4a0ff8f16..a98282b428 100644
--- a/dired-preview.el
+++ b/dired-preview.el
@@ -101,49 +101,6 @@ details."
(defvar dired-preview--buffers nil
"List with buffers of previewed files.")
-(defun dired-preview--find-file-no-select (file)
- "Call `find-file-noselect' on FILE with appropriate settings."
- ;; NOTE: I learnt about `non-essential' and `delay-mode-hooks' from
- ;; Daniel Mendler's `consult' package, which imnplements a preview
- ;; functionality as well (more sophisticated than mine):
- ;; <https://github.com/minad/consult>.
- (let ((inhibit-message t)
- (enable-dir-local-variables nil)
- (enable-local-variables :safe)
- (non-essential t)
- (delay-mode-hooks t))
- (find-file-noselect file :nowarn)))
-
-(defun dired-preview--set-window-parameters (window value)
- "Set desired WINDOW parameters to VALUE."
- (with-selected-window window
- (set-window-parameter window 'dired-preview-window value)
- (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))
- (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))))
-
-(defun dired-preview--add-to-previews (file)
- "Add FILE to `dired-preview--buffers', if not already in a buffer.
-Always return FILE buffer."
- (let ((buffer (find-buffer-visiting file)))
- (if (buffer-live-p buffer)
- buffer
- (setq buffer (dired-preview--find-file-no-select file)))
- (with-current-buffer buffer
- (add-hook 'post-command-hook #'dired-preview--run-mode-hooks nil :local))
- (add-to-list 'dired-preview--buffers buffer)
- buffer))
-
(defun dired-preview--get-buffers ()
"Return buffers that show previews."
(seq-filter
@@ -157,10 +114,37 @@ Always return FILE buffer."
"Return non-nil if WINDOW has `dired-preview-window' parameter."
(window-parameter window 'dired-preview-window))
+;; TODO 2023-07-05: We need a garbage collection function so that we
+;; do not accummulate too many buffers that exceed a given threshold.
+(defun dired-preview--kill-buffers ()
+ "Kill preview buffers."
+ (mapc
+ (lambda (buffer)
+ (let ((window (get-buffer-window buffer)))
+ (cond
+ ((and (dired-preview--window-parameter-p window)
+ (current-buffer))
+ (delete-window (get-buffer-window buffer)))
+ ((dired-preview--window-parameter-p window)
+ (ignore-errors
+ (kill-buffer-if-not-modified buffer)
+ (setq dired-preview--buffers (delq buffer
dired-preview--buffers)))))))
+ (dired-preview--get-buffers)))
+
(defun dired-preview--get-windows ()
"Return windows that show previews."
(seq-filter #'dired-preview--window-parameter-p (window-list)))
+(defun dired-preview--delete-windows ()
+ "Delete preview windows."
+ (mapc
+ (lambda (window)
+ (unless (or (one-window-p)
+ (eq window (minibuffer-window))
+ (eq window (selected-window)))
+ (delete-window window)))
+ (dired-preview--get-windows)))
+
(defun dired-preview--file-ignored-p (file)
"Return non-nil if FILE extension is among the ignored extensions.
See user option `dired-preview-ignored-extensions-regexp'."
@@ -177,6 +161,49 @@ See user option `dired-preview-ignored-extensions-regexp'."
(window (get-buffer-window buffer)))
(window-live-p window)))
+(defun dired-preview--set-window-parameters (window value)
+ "Set desired WINDOW parameters to VALUE."
+ (with-selected-window window
+ (set-window-parameter window 'dired-preview-window value)
+ (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))
+ (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))))
+
+(defun dired-preview--find-file-no-select (file)
+ "Call `find-file-noselect' on FILE with appropriate settings."
+ ;; NOTE: I learnt about `non-essential' and `delay-mode-hooks' from
+ ;; Daniel Mendler's `consult' package, which imnplements a preview
+ ;; functionality as well (more sophisticated than mine):
+ ;; <https://github.com/minad/consult>.
+ (let ((inhibit-message t)
+ (enable-dir-local-variables nil)
+ (enable-local-variables :safe)
+ (non-essential t)
+ (delay-mode-hooks t))
+ (find-file-noselect file :nowarn)))
+
+(defun dired-preview--add-to-previews (file)
+ "Add FILE to `dired-preview--buffers', if not already in a buffer.
+Always return FILE buffer."
+ (let ((buffer (find-buffer-visiting file)))
+ (if (buffer-live-p buffer)
+ buffer
+ (setq buffer (dired-preview--find-file-no-select file)))
+ (with-current-buffer buffer
+ (add-hook 'post-command-hook #'dired-preview--run-mode-hooks nil :local))
+ (add-to-list 'dired-preview--buffers buffer)
+ buffer))
+
(defun dired-preview--return-preview-buffer (file)
"Return buffer to preview FILE in."
(dired-preview--add-to-previews file))
@@ -222,33 +249,6 @@ aforementioned user option."
(when (timerp dired-preview--timer)
(cancel-timer dired-preview--timer)))
-(defun dired-preview--delete-windows ()
- "Delete preview windows."
- (mapc
- (lambda (window)
- (unless (or (one-window-p)
- (eq window (minibuffer-window))
- (eq window (selected-window)))
- (delete-window window)))
- (dired-preview--get-windows)))
-
-;; TODO 2023-07-05: We need a garbage collection function so that we
-;; do not accummulate too many buffers that exceed a given threshold.
-(defun dired-preview--kill-buffers ()
- "Kill preview buffers."
- (mapc
- (lambda (buffer)
- (let ((window (get-buffer-window buffer)))
- (cond
- ((and (dired-preview--window-parameter-p window)
- (current-buffer))
- (delete-window (get-buffer-window buffer)))
- ((dired-preview--window-parameter-p window)
- (ignore-errors
- (kill-buffer-if-not-modified buffer)
- (setq dired-preview--buffers (delq buffer
dired-preview--buffers)))))))
- (dired-preview--get-buffers)))
-
(defun dired-preview--close-previews ()
"Kill preview buffers and delete their windows."
(dired-preview--cancel-timer)