|
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