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