Function: dape--info-threads-stack-info
dape--info-threads-stack-info is a natively compiled function defined
in dape.el.
Signature
(dape--info-threads-stack-info CONN CB)
Documentation
Populate stack frame info for CONNs threads.
See dape-request for expected CB signature.
Source Code
;; Defined in /nix/store/1fiaif8pifqj2jh65rbg3fkhg3i56q42-emacs-packages-deps/share/emacs/site-lisp/elpa/dape-0.27.1/dape.el
(defun dape--info-threads-stack-info (conn cb)
"Populate stack frame info for CONNs threads.
See `dape-request' for expected CB signature."
(let (threads)
(cond
;; Current CONN is benched
(dape--info-threads-skip-other-p
(dape--request-continue cb))
;; Stopped threads
((setq threads
(cl-remove-if (lambda (thread)
(plist-get thread :request-in-flight))
(dape--stopped-threads conn)))
(let ((start-time (current-time))
(responses 0))
(dolist (thread threads)
;; Keep track of requests in flight as `revert-buffer' might
;; be called at any time, and we want keep unnecessary
;; chatter at a minimum.
(plist-put thread :request-in-flight t)
(dape--with-request (dape--stack-trace conn thread 1)
(plist-put thread :request-in-flight nil)
;; Time response, if slow skip these kind of requests in
;; the future (saving state in buffer local variable)
(when (and (not dape--info-threads-skip-other-p)
(time-less-p (timer-relative-time
start-time dape-info--threads-tt-bench)
(current-time)))
(dape--warn "Disabling stack info for other threads (slow)")
(setq dape--info-threads-skip-other-p t))
;; When all request have resolved return
(when (length= threads (setf responses (1+ responses)))
(dape--request-continue cb))))))
;; No stopped threads
(t (dape--request-continue cb)))))