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

    Fix dape-select-stack when delayed stack trace loading is in effect
---
 dape.el | 18 +++++++++++++-----
 1 file changed, 13 insertions(+), 5 deletions(-)

diff --git a/dape.el b/dape.el
index 22512792f0..fa71d45e31 100644
--- a/dape.el
+++ b/dape.el
@@ -2440,12 +2440,20 @@ When SKIP-UPDATE is non nil, does not notify adapter 
about removal."
   "Selected current stack for adapter CONN by STACK-ID."
   (interactive
    (let* ((conn (dape--live-connection 'stopped))
+          (current-thread (dape--current-thread conn))
           (collection
-           (mapcar (lambda (stack) (cons (plist-get stack :name)
-                                         (plist-get stack :id)))
-                   (thread-first conn
-                                 (dape--current-thread)
-                                 (plist-get :stackFrames))))
+           (let (done)
+             ;; Need to fetch all frames as might only have 1 frame
+             ;; fetches see `dape--stack-trace' and
+             ;; `:supportsDelayedStackTraceLoading'.
+             (dape--with-request
+                 (dape--stack-trace conn current-thread 
dape-stack-trace-levels)
+               (setf done t))
+             (with-timeout (5 nil)
+               (while (not done) (accept-process-output nil 0.1)))
+             (mapcar (lambda (stack) (cons (plist-get stack :name)
+                                           (plist-get stack :id)))
+                     (plist-get current-thread :stackFrames))))
           (stack-name
            (completing-read (format "Select stack (current %s): "
                                     (thread-first conn

Reply via email to