[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/dired-preview c20af9c9eb 31/67: Fix how the window is s
From: |
ELPA Syncer |
Subject: |
[elpa] externals/dired-preview c20af9c9eb 31/67: Fix how the window is set up and closed outside Dired |
Date: |
Sat, 8 Jul 2023 15:57:53 -0400 (EDT) |
branch: externals/dired-preview
commit c20af9c9eb5d6941159cbc476aca4103fa0c2b6b
Author: Protesilaos Stavrou <info@protesilaos.com>
Commit: Protesilaos Stavrou <info@protesilaos.com>
Fix how the window is set up and closed outside Dired
Thanks to Bruno Boal for taking a look into this with me:
<https://git.sr.ht/~bboal>. This was done in a private channel and
the information is shared with permission.
---
dired-preview.el | 51 +++++++++++++++++++++------------------------------
1 file changed, 21 insertions(+), 30 deletions(-)
diff --git a/dired-preview.el b/dired-preview.el
index 4ccaa827c9..b61f5ded41 100644
--- a/dired-preview.el
+++ b/dired-preview.el
@@ -94,10 +94,6 @@ Used by the default value of
`dired-preview-display-action-alist'."
(slot . -1)
(window-width . 0.3)
(dedicated . t)
- ;; FIXME 2023-06-29: Should `dired-preview-set-up-preview-window'
- ;; be part of the `body-function'? It seems wrong as the user may
- ;; omit this entry from the alist, thus breaking the preview.
- (body-function . dired-preview-set-up-preview-window)
(window-parameters . ((no-other-window . t)
(mode-line-format . ("%e"
mode-line-front-space
@@ -105,11 +101,7 @@ Used by the default value of
`dired-preview-display-action-alist'."
"The `display-buffer' action for the preview.
This is the same data that is passed to `display-buffer-alist'.
Read Info node `(elisp) Displaying Buffers'. As such, it is
-meant for experienced users.
-
-To ensure best results, the `body-function' in the alist must be
-set to `dired-preview-set-up-preview-window', as shown in this
-user option's default value."
+meant for experienced users."
:group 'dired-preview
:type 'alist)
@@ -170,8 +162,7 @@ Always return FILE buffer."
"Return windows that show previews."
(seq-filter
(lambda (window)
- (when (window-parameter window 'dired-preview-window)
- window))
+ (window-parameter window 'dired-preview-window))
(window-list)))
(defun dired-preview--file-ignored-p (file)
@@ -210,8 +201,7 @@ See user option `dired-preview-ignored-extensions-regexp'."
(mapc
(lambda (buffer)
(when (and (not (eq buffer (current-buffer)))
- (window-parameter (get-buffer-window buffer)
'dired-preview-window)
- delayed-mode-hooks)
+ (window-parameter (get-buffer-window buffer)
'dired-preview-window))
(ignore-errors
(kill-buffer-if-not-modified buffer))))
(dired-preview--get-buffers))
@@ -219,8 +209,8 @@ See user option `dired-preview-ignored-extensions-regexp'."
(defun dired-preview--close-previews ()
"Kill preview buffers and delete their windows."
- (dired-preview--delete-windows)
- (dired-preview--kill-buffers))
+ (dired-preview--kill-buffers)
+ (dired-preview--delete-windows))
(defun dired-preview--return-preview-buffer (file)
"Return buffer to preview FILE in.
@@ -235,13 +225,10 @@ conforms with `dired-preview--preview-p'."
(dired-preview--close-previews)
(remove-hook 'window-state-change-hook
#'dired-preview--close-previews-outside-dired)))
-;; NOTE 2023-06-29: See the FIXME for `dired-preview-display-action-alist'.
-(defun dired-preview-set-up-preview-window (window &rest _)
- "Set WINDOW `:preview' parameter.
-Use this as the `body-function' in the user option
-`dired-preview-display-action-alist'."
- (set-window-parameter window 'dired-preview-window :preview)
- (with-current-buffer (window-buffer window)
+(defun dired-preview-set-up-preview-window (buffer)
+ "Set BUFFER window `:preview' parameter."
+ (when-let ((window (get-buffer-window buffer)))
+ (set-window-parameter window 'dired-preview-window :preview)
(add-hook 'window-state-change-hook
#'dired-preview--close-previews-outside-dired)))
(defun dired-preview--display-buffer (buffer)
@@ -262,7 +249,8 @@ Only do it with the current major mode is Dired."
((eq buffer (get-file-buffer file))))
(display-buffer
buffer
- dired-preview-display-action-alist)))
+ dired-preview-display-action-alist)
+ (dired-preview-set-up-preview-window buffer)))
(defun dired-preview-display-file ()
"Display preview of `dired-file-name-at-point' if appropriate.
@@ -286,13 +274,16 @@ Return buffer object of displayed buffer."
(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--cancel-timer)
- (setq dired-preview--timer
- (run-with-idle-timer
- dired-preview-delay
- nil
- #'dired-preview-display-file))))
+ (if (and (eq major-mode 'dired-mode)
+ (memq this-command dired-preview-trigger-commands))
+ (progn
+ (dired-preview--cancel-timer)
+ (setq dired-preview--timer
+ (run-with-idle-timer
+ dired-preview-delay
+ nil
+ #'dired-preview-display-file)))
+ (dired-preview--close-previews-outside-dired)))
(defun dired-preview-disable-preview ()
"Disable Dired preview."
- [elpa] externals/dired-preview 16a2e9e835 18/67: Fix test for current command in dired-preview-trigger, (continued)
- [elpa] externals/dired-preview 16a2e9e835 18/67: Fix test for current command in dired-preview-trigger, ELPA Syncer, 2023/07/08
- [elpa] externals/dired-preview 5ffcfb0c85 24/67: Tweak the format of the timer call, ELPA Syncer, 2023/07/08
- [elpa] externals/dired-preview e2da14de12 30/67: Fix scope of action to close preview upon buffer switch, ELPA Syncer, 2023/07/08
- [elpa] externals/dired-preview 75f1b11e99 29/67: Add FIXME for the scope of dired-preview--close-previews-outside-dired, ELPA Syncer, 2023/07/08
- [elpa] externals/dired-preview 3f2588abb3 32/67: Make all preview state be handled by the trigger, ELPA Syncer, 2023/07/08
- [elpa] externals/dired-preview 49bea8f6d4 34/67: Delete windows, then kill buffers, ELPA Syncer, 2023/07/08
- [elpa] externals/dired-preview 070f02a1b0 42/67: Stop changing the mode-line-format, ELPA Syncer, 2023/07/08
- [elpa] externals/dired-preview 5338f5c1a7 26/67: Make commit 3ba4c3f more resilient, ELPA Syncer, 2023/07/08
- [elpa] externals/dired-preview ec09d4b856 27/67: Fix how delayed-mode-hooks are handled, ELPA Syncer, 2023/07/08
- [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 <=
- [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, 2023/07/08
- [elpa] externals/dired-preview 8d19b43469 66/67: Fix typos, ELPA Syncer, 2023/07/08