@@ -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" 
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" " 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" 
@@ -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