emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/dired-preview 9dd08f8ad3: Revert "Remove alist for 'dis


From: ELPA Syncer
Subject: [elpa] externals/dired-preview 9dd08f8ad3: Revert "Remove alist for 'display-buffer'"
Date: Thu, 23 Nov 2023 06:57:47 -0500 (EST)

branch: externals/dired-preview
commit 9dd08f8ad39c9fb3ae1a9e2e47ef5d9f597c02f4
Author: Protesilaos Stavrou <info@protesilaos.com>
Commit: Protesilaos Stavrou <info@protesilaos.com>

    Revert "Remove alist for 'display-buffer'"
    
    This reverts commit 06f85ad8188a9b7ab4e815afe66df50e1f2ec637.
    
    I have not had time to work on the alternative to this. Better bring
    it back until I can revisit this project in earnest. Controlling the
    display-buffer in some "smart" way is better than nothing, given that
    the absence of this results in an unpleasant experience while
    previewing files.
---
 README.org       |  3 ---
 dired-preview.el | 52 +++++++++++++++++++++++++++++++++++++++++++++++++---
 2 files changed, 49 insertions(+), 6 deletions(-)

diff --git a/README.org b/README.org
index d685f68066..fa8bc322ee 100644
--- a/README.org
+++ b/README.org
@@ -109,9 +109,6 @@ users.
 :CUSTOM_ID: h:25135eb2-04a9-403e-bc3a-8ee287ac36cf
 :END:
 
-[ DEPRECATED as part of {{{development-version}}}, though I plan to
-  include documentation herein on how to achieve this at the user level. ]
-
 #+vindex: dired-preview-display-action-alist-function
 The user option ~dired-preview-display-action-alist-function~
 speficies a function to handle the display of the preview.  The
diff --git a/dired-preview.el b/dired-preview.el
index 2aae2622c1..a95378df3e 100644
--- a/dired-preview.el
+++ b/dired-preview.el
@@ -83,6 +83,17 @@ everything."
   :group 'dired-preview
   :type 'natnum)
 
+(defcustom dired-preview-display-action-alist-function
+  #'dired-preview-display-action-alist-dwim
+  "Function to return 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.  See the reference function
+`dired-preview-display-action-alist-dwim' for the implementation
+details."
+  :group 'dired-preview
+  :type 'function)
+
 (defcustom dired-preview-delay 0.7
   "Time in seconds to wait before previewing."
   :group 'dired-preview
@@ -295,6 +306,38 @@ Always return FILE buffer."
   "Return buffer to preview FILE in."
   (dired-preview--add-to-previews file))
 
+(defvar dired-preview-buffer-name "*dired-preview*"
+  "Name of preview buffer.")
+
+(defun dired-preview-get-window-size (dimension)
+  "Return window size by checking for DIMENSION.
+DIMENSION is either a `:width' or `:height' keyword.  It is
+checked against `split-width-threshold' or
+`split-height-threshold'"
+  (pcase dimension
+    (:width (if-let ((window-width (floor (window-total-width) 2))
+                     ((> window-width fill-column)))
+                window-width
+              fill-column))
+    (:height (floor (window-height) 2))))
+
+(defun dired-preview-display-action-side ()
+  "Pick a side window that is appropriate for the given frame."
+  (if-let ((width (window-body-width))
+           ((>= width (window-body-height)))
+           ((>= width split-width-threshold)))
+      `(:side right :dimension window-width :size 
,(dired-preview-get-window-size :width))
+    `(:side bottom :dimension window-height :size 
,(dired-preview-get-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-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-unmark 
dired-unmark-backward dired-del-marker dired-goto-file dired-find-file)
   "List of Dired commands that trigger a preview.")
@@ -321,10 +364,13 @@ Always return FILE buffer."
     (remove-hook 'window-state-change-hook 
#'dired-preview--close-previews-outside-dired)
     (put 'dired-preview-start 'function-executed nil)))
 
-;; TODO 2023-10-05: We may no longer need this function.
 (defun dired-preview--display-buffer (buffer)
-  "Call `display-buffer' for BUFFER."
-  (display-buffer buffer))
+  "Call `display-buffer' for BUFFER.
+Only do it with the current major mode is Dired."
+  (display-buffer
+   buffer
+   (funcall (or dired-preview-display-action-alist-function
+                #'dired-preview-display-action-alist-dwim))))
 
 (defun dired-preview-display-file (file)
   "Display preview of FILE if appropriate."



reply via email to

[Prev in Thread] Current Thread [Next in Thread]