branch: externals/dape commit 8b2707bf8bb3ae8a2c840e3deb6fe683714f5182 Author: Daniel Pettersson <dan...@dpettersson.net> Commit: Daniel Pettersson <dan...@dpettersson.net>
Add history support for dape-info's buffer displaying --- dape.el | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/dape.el b/dape.el index 6aefdecb48..bc5b7de1da 100644 --- a/dape.el +++ b/dape.el @@ -3468,6 +3468,8 @@ Buffer is displayed with `dape-display-source-buffer-action'." (defvar dape--info-buffers nil "List containing `dape-info' buffers.") +(defvar dape--info-buffer-display-history nil "History list in (MODE INDEX).") + (defun dape--info-buffer-list () "Return all live `dape-info-parent-mode'." (setq dape--info-buffers @@ -3502,6 +3504,7 @@ REVERSED selects previous." (not (dape--info-buffer-p mode index)))) (cadr)) (car dape--info-buffer-related)))) + (push `(,mode ,index) dape--info-buffer-display-history) (gdb-set-window-buffer (dape--info-get-buffer-create mode index) t))) (defvar dape-info-parent-mode-map @@ -3555,6 +3558,7 @@ with HELP-ECHO string, MOUSE-FACE and FACE." (let ((buffer (dape--info-get-buffer-create mode index))) (with-current-buffer buffer (revert-buffer)) + (push `(,mode ,index) dape--info-buffer-display-history) (gdb-set-window-buffer buffer t))))) (map (make-sparse-keymap))) (define-key map (vector 'header-line 'mouse-1) command) @@ -3644,7 +3648,19 @@ buffers get displayed and how they are grouped." (setq buffer-displayed-p t) (dape--display-buffer (apply #'dape--info-get-buffer-create - (ensure-list (car group))))) + (or + ;; Try to re-create the last window setup + (cl-find-if + (pcase-lambda (`(,hist-mode ,hist-index)) + (cl-some + (pcase-lambda (`(,spec-mode ,spec-index)) + (and (eq hist-mode spec-mode) + (eq hist-index spec-index))) + group + :key #'ensure-list)) + dape--info-buffer-display-history) + ;; ...or fallback to car if no history + (ensure-list (car group)))))) (when (and maybe-kill (not buffer-displayed-p)) (cl-loop for buffer in (dape--info-buffer-list) do (kill-buffer buffer)))