branch: elpa/dirvish
commit 6df1a9cb979350a6406d3ee89713ab568c98a7d0
Author: Alex Lu <hellosimon1...@hotmail.com>
Commit: Alex Lu <hellosimon1...@hotmail.com>

    fix(core): error on `dirvish-winbuf-change-h`
---
 dirvish.el | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/dirvish.el b/dirvish.el
index c1e2d9e15e..926074aaa6 100644
--- a/dirvish.el
+++ b/dirvish.el
@@ -810,7 +810,18 @@ When FORCE, ensure the preview get refreshed."
 (defun dirvish-winbuf-change-h (window)
   "Rebuild layout once buffer in WINDOW changed."
   (with-current-buffer (window-buffer window)
-    (when-let* ((dv (dirvish-curr))) (dirvish--init-session dv))))
+    (when-let* ((dv (dirvish-curr)))
+      (let ((saved-layout (car (dv-layout dv)))
+            (saved-winconf (dv-winconf dv)))
+        ;; rebuild a fullframe session as a single pane session temporarily, 
for
+        ;; cases when a buried dirvish buffers is selected by minibuffer
+        ;; commands such as `consult-buffer'.
+        (cond ((and (active-minibuffer-window) saved-layout)
+               (setcar (dv-layout dv) nil)
+               (dirvish--init-session dv)
+               (setcar (dv-layout dv) saved-layout)
+               (setf (dv-winconf dv) saved-winconf))
+              (t (dirvish--init-session dv)))))))
 
 (defun dirvish-tab-new-post-h (_tab)
   "Do not reuse sessions from other tabs."

Reply via email to