Skip to content

Commit 76cad34

Browse files
authored
Request source from server when path is missing (#532)
1 parent c19da4d commit 76cad34

File tree

1 file changed

+23
-1
lines changed

1 file changed

+23
-1
lines changed

dap-mode.el

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -763,6 +763,28 @@ will be reversed."
763763
(dap-debug (dap--debug-session-launch-args debug-session)))
764764
(user-error "There is session to restart")))
765765

766+
(defun dap--request-source-for-frame-by-reference (debug-session stack-frame line column name)
767+
"Request source string for a STACK-FRAME using the sourceReference."
768+
(with-lsp-workspace (dap--debug-session-workspace debug-session)
769+
(-when-let* ((source (gethash "source" stack-frame))
770+
(sourceReference (gethash "sourceReference" source))
771+
(sourceReferenceKey (format "%s-%s" name sourceReference)))
772+
(select-window (get-mru-window (selected-frame) nil))
773+
(if-let* ((existing-buffer (get-buffer sourceReferenceKey)))
774+
(switch-to-buffer existing-buffer)
775+
(dap--send-message
776+
(dap--make-request "source" (list :sourceReference sourceReference))
777+
(dap--resp-handler
778+
(-lambda ((&hash "body" (&hash "content" content)))
779+
(switch-to-buffer (generate-new-buffer sourceReferenceKey))
780+
(insert content)
781+
(goto-char (point-min))
782+
(forward-line (1- line))
783+
(forward-char column))
784+
(lambda (errmsg)
785+
(message "No source code for %s. Cursor at %s:%s. Error: %s." name line column errmsg)))
786+
debug-session)))))
787+
766788
(defun dap--get-path-for-frame (stack-frame)
767789
"Get file path for a STACK-FRAME."
768790
(-when-let* ((source (gethash "source" stack-frame))
@@ -788,7 +810,7 @@ will be reversed."
788810
(goto-char (point-min))
789811
(forward-line (1- line))
790812
(forward-char column))
791-
(message "No source code for %s. Cursor at %s:%s." name line column))))
813+
(dap--request-source-for-frame-by-reference debug-session stack-frame line column name))))
792814
(run-hook-with-args 'dap-stack-frame-changed-hook debug-session)))
793815

794816
(defun dap--select-thread-id (debug-session thread-id &optional force)

0 commit comments

Comments
 (0)