branch: elpa/dirvish
commit 6767a7ad0c8a4d0f35df1fed28571e8ab5ad0327
Author: Alex Lu <[email protected]>
Commit: Alex Lu <[email protected]>
refactor: `dirvish-selection-change-h` -> `dirvish--change-selected`
---
dirvish-widgets.el | 1 +
dirvish.el | 33 ++++++++++++---------------------
2 files changed, 13 insertions(+), 21 deletions(-)
diff --git a/dirvish-widgets.el b/dirvish-widgets.el
index 7b9f2ce1b9..b417128a9c 100644
--- a/dirvish-widgets.el
+++ b/dirvish-widgets.el
@@ -22,6 +22,7 @@
;;
;; Preview dispatchers:
;; `audio' `image', `gif', `video', `video-mtn', `epub', `archive', `pdf',
`pdf-preface'
+;; TODO: add `image-dired' preview dispatcher
;;; Code:
diff --git a/dirvish.el b/dirvish.el
index 34bb1868c3..bbb6bc2306 100644
--- a/dirvish.el
+++ b/dirvish.el
@@ -464,6 +464,10 @@ ALIST is window arguments passed to
`window--display-buffer'."
entry
(complete-with-action action completions string pred)))))
+(defun dirvish--change-selected (&rest _)
+ "Record `dirvish--selected-window'."
+ (setq dirvish--selected-window (frame-selected-window)))
+
(defun dirvish--selected-p (&optional dv)
"Return t if session DV (defaults to `dirvish-curr') is selected."
(when-let* ((dv (or dv (dirvish-curr))))
@@ -781,10 +785,6 @@ When FORCE, ensure the preview get refreshed."
(string-match-p (format " ?\\*Dirvish-.*-%s\\*" (dv-id dv)) bn)
do (dirvish--kill-buffer b)))))
-(defun dirvish-selection-change-h (&rest _)
- "Record `dirvish--selected-window'."
- (setq dirvish--selected-window (frame-selected-window)))
-
(defun dirvish-winconf-change-h ()
"Update UI for dirvish session."
(dirvish-update-body-h 'force-preview-update))
@@ -812,20 +812,12 @@ When FORCE, ensure the preview get refreshed."
;; by `*-other-tab|frame'
((or (null (equal old-frame frame)) (null (equal old-tab tab)))
(with-selected-window (dirvish--create-root-window dv)
- (setq dirvish--selected-window (frame-selected-window))
(dirvish-save-dedication
(switch-to-buffer (get-buffer-create "*scratch*")))
(setf (dv-winconf dv) (current-window-configuration))
(dirvish-save-dedication (switch-to-buffer (dired-noselect dir)))
(cl-loop for (k v) on sc by 'cddr do (dirvish-prop k v))
(dirvish--build-layout dv)))
- ;; rebuild a fullframe session as a single pane temporarily, for cases
when
- ;; a buried buffer is selected in minibuffer, e.g. using `consult-buffer'.
- ((and (active-minibuffer-window) layout)
- (setf (dv-curr-layout dv) nil)
- (with-selected-window window (dirvish--build-layout dv))
- (setf (dv-curr-layout dv) layout)
- (setf (dv-winconf dv) winconf))
(t (with-selected-window window (dirvish--build-layout dv))))))
;;;; Preview
@@ -1180,9 +1172,9 @@ Dirvish sets `revert-buffer-function' to this function."
tab-bar-new-tab-choice "*scratch*"
dired-hide-details-hide-symlink-targets nil
dired-kill-when-opening-new-dired-buffer nil)
- (add-hook 'window-selection-change-functions #'dirvish-selection-change-h
nil t)
- (add-hook 'window-buffer-change-functions #'dirvish-winbuf-change-h nil t)
+ (add-hook 'window-selection-change-functions #'dirvish--change-selected nil
t)
(add-hook 'window-configuration-change-hook #'dirvish-winconf-change-h nil t)
+ (add-hook 'window-buffer-change-functions #'dirvish-winbuf-change-h nil t)
(add-hook 'post-command-hook #'dirvish-update-body-h nil t)
(add-hook 'kill-buffer-hook #'dirvish-kill-buffer-h nil t)
(set-buffer-modified-p nil))
@@ -1329,7 +1321,7 @@ INHIBIT-SETUP is non-nil."
(dirvish--init-util-buffers dv)
(dirvish--setup-mode-line dv)
(when w-order (let ((ignore-window-parameters t)) (delete-other-windows)))
- (setq dirvish--selected-window (frame-selected-window))
+ (dirvish--change-selected)
(dolist (pane w-order)
(let* ((buf (dirvish--util-buffer pane dv nil (eq pane 'preview)))
(args (alist-get pane w-args))
@@ -1348,7 +1340,7 @@ INHIBIT-SETUP is non-nil."
(dirvish--maybe-toggle-details)))
(defun dirvish--reuse-or-create (path &optional dwim)
- "Find PATH in dirvish , check `one-window-p' if DWIM."
+ "Find PATH in dirvish, check `one-window-p' for DWIM."
(let* ((dir (or path default-directory))
(visible? (cl-loop for w in (window-list)
for b = (window-buffer w)
@@ -1417,7 +1409,6 @@ are killed and the Dired buffer(s) in the selected window
are buried."
(dired-up-directory dirvish-up-dir-a :around)
(dired-noselect dirvish-dired-noselect-a :around)
(dired-insert-subdir dirvish-insert-subdir-a :after)
- (image-dired-create-thumbnail-buffer dirvish-thumb-buf-a
:around)
(wdired-change-to-wdired-mode dirvish-wdired-enter-a :after)
(wdired-change-to-dired-mode dirvish-init-dired-buffer
:after))))
(if dirvish-override-dired-mode
@@ -1427,16 +1418,16 @@ are killed and the Dired buffer(s) in the selected
window are buried."
;;;###autoload
(defun dirvish (&optional path)
"Open PATH in a fullframe Dirvish session.
-With \\[universal-arguments], prompt for a PATH; otherwise, PATH default
-to `default-directory'."
+Prompt for PATH if called with \\[universal-arguments], otherwise PATH
+defaults to `default-directory'."
(interactive (list (and current-prefix-arg (read-directory-name "Dirvish:
"))))
(dirvish--reuse-or-create path))
;;;###autoload
(defun dirvish-dwim (&optional path)
"Open PATH in a fullframe session if selected window is the only window.
-With \\[universal-arguments], prompt for a PATH; otherwise, PATH default
-to `default-directory'. If there are other windows exist in the
+Prompt for PATH if called with \\[universal-arguments], otherwise PATH
+defaults to `default-directory'. If there are other windows exist in the
selected frame, the session occupies only the selected window."
(interactive (list (and current-prefix-arg (read-directory-name "Dirvish:
"))))
(dirvish--reuse-or-create path 'dwim))