|
18 | 18 | ;; Author: Ivan Yonchovski <[email protected]>
|
19 | 19 | ;; Keywords: languages, debug
|
20 | 20 | ;; URL: https://github.com/emacs-lsp/dap-mode
|
21 |
| -;; Package-Requires: ((emacs "26.1") (dash "2.18.0") (lsp-mode "6.0") (bui "1.1.0") (f "0.20.0") (s "1.12.0") (lsp-treemacs "0.1") (posframe "0.7.0")) |
| 21 | +;; Package-Requires: ((emacs "26.1") (dash "2.18.0") (lsp-mode "6.0") (bui "1.1.0") (f "0.20.0") (s "1.12.0") (lsp-treemacs "0.1") (posframe "0.7.0") (ht "2.3")) |
22 | 22 | ;; Version: 0.6
|
23 | 23 |
|
24 | 24 | ;;; Commentary:
|
|
34 | 34 | (require 'cl-lib)
|
35 | 35 | (require 'ansi-color)
|
36 | 36 | (require 'posframe)
|
| 37 | +(require 'ht) |
37 | 38 |
|
38 | 39 | (require 'dap-launch)
|
39 | 40 |
|
@@ -278,8 +279,8 @@ locations."
|
278 | 279 | (thread-stack-frames (make-hash-table :test 'eql) :read-only t)
|
279 | 280 | ;; the arguments that were used to start the debug session.
|
280 | 281 | (launch-args nil)
|
281 |
| - ;; The result of initialize request. It holds the server capabilities. |
282 |
| - (initialize-result nil) |
| 282 | + ;; Currently-available server capabilities |
| 283 | + (current-capabilities (make-hash-table :test 'equal)) |
283 | 284 | (error-message nil)
|
284 | 285 | (loaded-sources nil)
|
285 | 286 | (program-proc)
|
@@ -961,6 +962,9 @@ PARAMS are the event params.")
|
961 | 962 | (-let [(&hash "body" (&hash "source")) event]
|
962 | 963 | (cl-pushnew source (dap--debug-session-loaded-sources debug-session))
|
963 | 964 | (run-hook-with-args 'dap-loaded-sources-changed-hook debug-session)))
|
| 965 | + ("capabilities" |
| 966 | + (-let [(&hash "body" (&hash "capabilities")) event] |
| 967 | + (ht-update! (dap--debug-session-current-capabilities debug-session) capabilities))) |
964 | 968 | (_ (dap-handle-event (intern event-type) debug-session body)))))
|
965 | 969 |
|
966 | 970 | (defcustom dap-default-terminal-kind "integrated"
|
@@ -1231,12 +1235,11 @@ DEBUG-SESSION is the active debug session."
|
1231 | 1235 | #'equal))
|
1232 | 1236 |
|
1233 | 1237 | (defun dap--set-exception-breakpoints (debug-session callback)
|
1234 |
| - (-let [(&dap-session 'initialize-result 'launch-args (&plist :type)) debug-session] |
| 1238 | + (-let [(&dap-session 'current-capabilities 'launch-args (&plist :type)) debug-session] |
1235 | 1239 | (dap--send-message
|
1236 | 1240 | (dap--make-request "setExceptionBreakpoints"
|
1237 | 1241 | (list :filters
|
1238 |
| - (or (-some->> initialize-result |
1239 |
| - (gethash "body") |
| 1242 | + (or (-some->> current-capabilities |
1240 | 1243 | (gethash "exceptionBreakpointFilters")
|
1241 | 1244 | (-keep (-lambda ((&hash "default" "filter"))
|
1242 | 1245 | (when (dap--breakpoint-filter-enabled filter type default)
|
@@ -1618,10 +1621,10 @@ before starting the debug process."
|
1618 | 1621 | (dap--initialize-message type)
|
1619 | 1622 | (dap--session-init-resp-handler
|
1620 | 1623 | debug-session
|
1621 |
| - (lambda (initialize-result) |
| 1624 | + (-lambda ((&hash "body" capabilities)) |
1622 | 1625 | (-let [debug-sessions (dap--get-sessions)]
|
1623 | 1626 |
|
1624 |
| - (setf (dap--debug-session-initialize-result debug-session) initialize-result) |
| 1627 | + (ht-update! (dap--debug-session-current-capabilities debug-session) capabilities) |
1625 | 1628 |
|
1626 | 1629 | (dap--set-sessions (cons debug-session debug-sessions)))
|
1627 | 1630 | (dap--send-message
|
|
0 commit comments