[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/dired-preview 29829a63c8 56/67: Refactor how parameters
From: |
ELPA Syncer |
Subject: |
[elpa] externals/dired-preview 29829a63c8 56/67: Refactor how parameters are set |
Date: |
Sat, 8 Jul 2023 15:57:55 -0400 (EDT) |
branch: externals/dired-preview
commit 29829a63c8cdb4f5e9b131f954444116e7ccbfe2
Author: Protesilaos Stavrou <info@protesilaos.com>
Commit: Protesilaos Stavrou <info@protesilaos.com>
Refactor how parameters are set
This should fix inconsistencies with how preview windows are treated.
I want them to be deleted at all times as soon as we are out of Dired.
Before, this was not working with mouse clicking to focus a window, so
I tried to generally not close previews. That caused effects that I
would consider counter-intuitive. I prefer preview windows to be
"ephemeral" and thus be treated specially.
---
dired-preview.el | 58 ++++++++++++++++++++++++++++++++------------------------
1 file changed, 33 insertions(+), 25 deletions(-)
diff --git a/dired-preview.el b/dired-preview.el
index 3d58a0e003..c4a0ff8f16 100644
--- a/dired-preview.el
+++ b/dired-preview.el
@@ -114,17 +114,23 @@ details."
(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."
- (when (and delay-mode-hooks (current-buffer))
- ;; FIXME 2023-07-05: When we remove the window parameters, we
- ;; disconnect the window from the preview. Then what is the point
- ;; of trying to close previews outside of Dired? Which previews?
- (set-window-parameter (selected-window) 'dired-preview-window nil)
- (set-window-parameter (selected-window) 'dedicated 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)))
+ (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.
@@ -132,11 +138,11 @@ 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)))
+ (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."
@@ -193,17 +199,16 @@ checked against `split-width-threshold' or
((>= width (window-body-height)))
((>= width split-width-threshold)))
`(:side right :dimension window-width :size
,(dired-preview-return-window-size :width))
- `(:side below :dimension window-height :size
,(dired-preview-return-window-size :height))))
+ `(:side bottom :dimension window-height :size
,(dired-preview-return-window-size :height))))
(defun dired-preview-display-action-alist-dwim ()
"Reference function for `dired-preview-display-action-alist-function'.
Return a `display-buffer' action alist, as described in the
aforementioned user option."
(let ((properties (dired-preview-display-action-side)))
- `((display-buffer-in-direction)
- (direction . ,(plist-get properties :side))
- (,(plist-get properties :dimension) . ,(plist-get properties :size))
- (dedicated . t))))
+ `((display-buffer-in-side-window)
+ (side . ,(plist-get properties :side))
+ (,(plist-get properties :dimension) . ,(plist-get properties :size)))))
(defvar dired-preview-trigger-commands
'(dired-next-line dired-previous-line dired-mark dired-goto-file)
@@ -233,12 +238,16 @@ aforementioned user option."
"Kill preview buffers."
(mapc
(lambda (buffer)
- (when (and (not (eq buffer (current-buffer)))
- (dired-preview--window-parameter-p (get-buffer-window buffer)))
- (ignore-errors
- (kill-buffer-if-not-modified buffer))))
- (dired-preview--get-buffers))
- (setq dired-preview--buffers nil))
+ (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."
@@ -266,8 +275,7 @@ Only do it with the current major mode is Dired."
(when-let ((buffer (dired-preview--return-preview-buffer file)))
(dired-preview--display-buffer buffer)
(when-let ((window (get-buffer-window buffer)))
- (with-selected-window window
- (set-window-parameter window 'dired-preview-window :preview)))))
+ (dired-preview--set-window-parameters window t))))
(defun dired-preview--preview-p (file)
"Return non-nil if FILE can be previewed."
- [elpa] externals/dired-preview b367550663 28/67: Rewrite how the timer is started, (continued)
- [elpa] externals/dired-preview b367550663 28/67: Rewrite how the timer is started, ELPA Syncer, 2023/07/08
- [elpa] externals/dired-preview c20af9c9eb 31/67: Fix how the window is set up and closed outside Dired, ELPA Syncer, 2023/07/08
- [elpa] externals/dired-preview 8c1c73716e 37/67: Tighten the event loop to avoid inconsistencies, ELPA Syncer, 2023/07/08
- [elpa] externals/dired-preview 18b607fc48 40/67: Simplify dired-preview-return-window-size, ELPA Syncer, 2023/07/08
- [elpa] externals/dired-preview 86e11c105b 41/67: Make dired-preview-display-file delete windows eagerly, ELPA Syncer, 2023/07/08
- [elpa] externals/dired-preview ca176e11e4 36/67: Simplify dired-preview--run-mode-hooks, ELPA Syncer, 2023/07/08
- [elpa] externals/dired-preview b3ef9a2595 43/67: Define predicate function to check for window parameter, ELPA Syncer, 2023/07/08
- [elpa] externals/dired-preview 11bb038063 47/67: Do not try to delete selected preview window, ELPA Syncer, 2023/07/08
- [elpa] externals/dired-preview 077f24db3c 45/67: Tweak how window size is calculated, ELPA Syncer, 2023/07/08
- [elpa] externals/dired-preview f52ed4774c 48/67: Remove 'dedicated' parameter from selected window, ELPA Syncer, 2023/07/08
- [elpa] externals/dired-preview 29829a63c8 56/67: Refactor how parameters are set,
ELPA Syncer <=
- [elpa] externals/dired-preview 8d19b43469 66/67: Fix typos, ELPA Syncer, 2023/07/08
- [elpa] externals/dired-preview a3dd67d46f 59/67: Refine dired-preview-get-window-size, ELPA Syncer, 2023/07/08
- [elpa] externals/dired-preview 33a27a68dc 64/67: Add README.org, which GNU ELPA converts into the Info manual, ELPA Syncer, 2023/07/08
- [elpa] externals/dired-preview 959299b18a 39/67: Add FIXME for dired-preview-return-window-size, ELPA Syncer, 2023/07/08
- [elpa] externals/dired-preview 0dceaef04d 35/67: Use a function to return the display-buffer action, ELPA Syncer, 2023/07/08
- [elpa] externals/dired-preview d8ba2d0884 11/67: Simplify value of dired-preview-ignored-extensions-regexp, ELPA Syncer, 2023/07/08
- [elpa] externals/dired-preview 6bdcc34f68 52/67: Use "below" instead of "bottom" for direction, ELPA Syncer, 2023/07/08
- [elpa] externals/dired-preview 22f44d083c 10/67: Clear previewed buffers after they are killed, ELPA Syncer, 2023/07/08
- [elpa] externals/dired-preview 91fc74d122 49/67: Stop using a side window for previews, ELPA Syncer, 2023/07/08
- [elpa] externals/dired-preview 24bf5bce79 50/67: Add FIXME for dired-preview-display-action-alist-dwim, ELPA Syncer, 2023/07/08