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

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

[elpa] externals/dape 5fb09d2713 1/4: Rework display buffer actions


From: ELPA Syncer
Subject: [elpa] externals/dape 5fb09d2713 1/4: Rework display buffer actions
Date: Mon, 8 Jul 2024 18:58:15 -0400 (EDT)

branch: externals/dape
commit 5fb09d2713d9e0782cb012abcbc2399184bf42d8
Author: Daniel Pettersson <daniel@dpettersson.net>
Commit: Daniel Pettersson <daniel@dpettersson.net>

    Rework display buffer actions
    
    * Enable more varied window configurations by limiting source buffers
      to be displayed over (info|repl|shell) buffers.
    * Let (info|repl|shell) buffers to reuse window as the first option to
      let user change window configuration around during session.
---
 dape.el | 69 ++++++++++++++++++++++++++++++++++++-----------------------------
 1 file changed, 38 insertions(+), 31 deletions(-)

diff --git a/dape.el b/dape.el
index c181d94a90..de6e86873c 100644
--- a/dape.el
+++ b/dape.el
@@ -476,7 +476,15 @@ Each element should look like (MIME-TYPE . MODE) where
   :type 'key-sequence)
 
 (defcustom dape-display-source-buffer-action
-  '(display-buffer-same-window)
+  `((display-buffer-use-some-window display-buffer-pop-up-window)
+    (some-window
+     . (lambda (&rest _)
+         (cl-loop for w in (window-list) unless
+                  (buffer-match-p '(or (derived-mode . dape-repl-mode)
+                                       (derived-mode . dape-shell-mode)
+                                       (derived-mode . dape-info-parent-mode))
+                                  (window-buffer w))
+                  return w))))
   "`display-buffer' action used when displaying source buffer."
   :type 'sexp)
 
@@ -1096,36 +1104,35 @@ On SKIP-PROCESS-BUFFERS skip deletion of buffers which 
has processes."
 
 (defun dape--display-buffer (buffer)
   "Display BUFFER according to `dape-buffer-window-arrangement'."
-  (display-buffer
-   buffer
-   (let* ((mode (with-current-buffer buffer major-mode))
-          (group (cl-position-if (lambda (group) (memq mode group))
-                                 dape-info-buffer-window-groups)))
-     (pcase dape-buffer-window-arrangement
-       ((or 'left 'right)
-        (cons '(display-buffer-in-side-window)
-              (pcase (cons mode group)
-                (`(dape-repl-mode . ,_) '((side . bottom) (slot . -1)))
-                (`(shell-mode . ,_) '((side . bottom) (slot . 0)))
-                (`(,_ . 0) `((side . ,dape-buffer-window-arrangement) (slot . 
-1)))
-                (`(,_ . 1) `((side . ,dape-buffer-window-arrangement) (slot . 
0)))
-                (`(,_ . 2) `((side . ,dape-buffer-window-arrangement) (slot . 
1)))
-                (_ (error "Unable to display buffer of mode `%s'" mode)))))
-       ('gud
-        (pcase (cons mode group)
-          (`(dape-repl-mode . ,_)
-           '((display-buffer-in-side-window) (side . top) (slot . -1)))
-          (`(shell-mode . ,_)
-           '((display-buffer-reuse-window) (display-buffer-pop-up-window)
-             (direction . right) (dedicated . t)))
-          (`(,_ . 0)
-           '((display-buffer-in-side-window) (side . top) (slot . 0)))
-          (`(,_ . 1)
-           '((display-buffer-in-side-window) (side . bottom) (slot . -1)))
-          (`(,_ . 2)
-           '((display-buffer-in-side-window) (side . bottom) (slot . 1)))
-          (_ (error "Unable to display buffer of mode `%s'" mode))))
-       (_ (user-error "Invalid value of `dape-buffer-window-arrangement'"))))))
+  (pcase-let* ((mode (with-current-buffer buffer major-mode))
+               (group (cl-position-if (lambda (group) (memq mode group))
+                                      dape-info-buffer-window-groups))
+               (`(,fns . ,alist)
+                (pcase dape-buffer-window-arrangement
+                  ((or 'left 'right)
+                   (cons '(display-buffer-in-side-window)
+                         (pcase (cons mode group)
+                           (`(dape-repl-mode . ,_) '((side . bottom) (slot . 
-1)))
+                           (`(shell-mode . ,_) '((side . bottom) (slot . 0)))
+                           (`(,_ . 0) `((side . 
,dape-buffer-window-arrangement) (slot . -1)))
+                           (`(,_ . 1) `((side . 
,dape-buffer-window-arrangement) (slot . 0)))
+                           (`(,_ . 2) `((side . 
,dape-buffer-window-arrangement) (slot . 1)))
+                           (_ (error "Unable to display buffer of mode `%s'" 
mode)))))
+                  ('gud
+                   (pcase (cons mode group)
+                     (`(dape-repl-mode . ,_)
+                      '((display-buffer-in-side-window) (side . top) (slot . 
-1)))
+                     (`(shell-mode . ,_)
+                      '((display-buffer-pop-up-window)
+                        (direction . right) (dedicated . t)))
+                     (`(,_ . 0)
+                      '((display-buffer-in-side-window) (side . top) (slot . 
0)))
+                     (`(,_ . 1)
+                      '((display-buffer-in-side-window) (side . bottom) (slot 
. -1)))
+                     (`(,_ . 2)
+                      '((display-buffer-in-side-window) (side . bottom) (slot 
. 1)))
+                     (_ (error "Unable to display buffer of mode `%s'" 
mode)))))))
+    (display-buffer buffer `((display-buffer-reuse-window . ,fns) . ,alist))))
 
 (defmacro dape--mouse-command (name doc command)
   "Create mouse command with NAME, DOC which call COMMAND."



reply via email to

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