branch: externals/dape
commit 043cf44d091e3a229d539818af2f0b549b25215b
Author: Daniel Pettersson <[email protected]>
Commit: Daniel Pettersson <[email protected]>

    `dape-info' now toggles buffers when called as a command
---
 dape.el | 66 ++++++++++++++++++++++++++++++++++++++---------------------------
 1 file changed, 39 insertions(+), 27 deletions(-)

diff --git a/dape.el b/dape.el
index 3ddfaf28f1..dceda60b69 100644
--- a/dape.el
+++ b/dape.el
@@ -2793,38 +2793,50 @@ FN is executed on mouse-2 and ?r, BODY is executed 
inside of let stmt."
   (dolist (buffer (dape--info-buffer-list))
     (dape--info-update conn buffer)))
 
-(defun dape-info ()
-  "Update and display *dape-info* buffers."
-  (interactive)
-  ;; Open breakpoints if not group-1 buffer displayed
-  (unless (seq-find (lambda (buffer)
-                      (and (get-buffer-window buffer)
-                           (with-current-buffer buffer
+(defun dape-info (&optional maybe-close)
+  "Update and display *dape-info* buffers.
+When called interactively MAYBE-CLOSE is non nil.
+When optional MAYBE-CLOSE is non nil close buffers if all *dape-info*
+buffers are already displayed."
+  (interactive (list t))
+  (let (buffer-displayed-p)
+    ;; Open breakpoints if not group-1 buffer displayed
+    (unless (seq-find (lambda (buffer)
+                        (and (get-buffer-window buffer)
+                             (with-current-buffer buffer
                                (or (dape--info-buffer-p 
'dape-info-breakpoints-mode)
                                    (dape--info-buffer-p 
'dape-info-threads-mode)))))
-                    (dape--info-buffer-list))
-    (dape--display-buffer
-     (dape--info-buffer 'dape-info-breakpoints-mode 'skip-update)))
-  ;; Open and update stack buffer
-  (unless (seq-find (lambda (buffer)
-                      (and (get-buffer-window buffer)
-                           (with-current-buffer buffer
+                      (dape--info-buffer-list))
+      (setq buffer-displayed-p t)
+      (dape--display-buffer
+       (dape--info-buffer 'dape-info-breakpoints-mode 'skip-update)))
+    ;; Open and update stack buffer
+    (unless (seq-find (lambda (buffer)
+                        (and (get-buffer-window buffer)
+                             (with-current-buffer buffer
                                (or (dape--info-buffer-p 'dape-info-stack-mode)
                                    (dape--info-buffer-p 
'dape-info-modules-mode)
                                    (dape--info-buffer-p 
'dape-info-sources-mode)))))
-                    (dape--info-buffer-list))
-    (dape--display-buffer
-     (dape--info-buffer 'dape-info-stack-mode 'skip-update)))
-  ;; Open stack 0 if not group-2 buffer displayed
-  (unless (seq-find (lambda (buffer)
-                      (and (get-buffer-window buffer)
-                           (with-current-buffer buffer
-                             (or (dape--info-buffer-p 'dape-info-scope-mode)
-                                 (dape--info-buffer-p 
'dape-info-watch-mode)))))
-                    (dape--info-buffer-list))
-    (dape--display-buffer
-     (dape--info-buffer 'dape-info-scope-mode 0 'skip-update)))
-  (dape-info-update (dape--live-connection t)))
+                      (dape--info-buffer-list))
+      (setq buffer-displayed-p t)
+      (dape--display-buffer
+       (dape--info-buffer 'dape-info-stack-mode 'skip-update)))
+    ;; Open stack 0 if not group-2 buffer displayed
+    (unless (seq-find (lambda (buffer)
+                        (and (get-buffer-window buffer)
+                             (with-current-buffer buffer
+                               (or (dape--info-buffer-p 'dape-info-scope-mode)
+                                   (dape--info-buffer-p 
'dape-info-watch-mode)))))
+                      (dape--info-buffer-list))
+      (setq buffer-displayed-p t)
+      (dape--display-buffer
+       (dape--info-buffer 'dape-info-scope-mode 0 'skip-update)))
+    (dape-info-update (dape--live-connection t))
+    (when (and maybe-close (not buffer-displayed-p))
+      (dolist (buffer (buffer-list))
+        (when (with-current-buffer buffer
+                (derived-mode-p 'dape-info-parent-mode))
+          (kill-buffer buffer))))))
 
 
 ;;; Info breakpoints buffer

Reply via email to