Skip to content

Commit

Permalink
dap-python: support debugging of 3rd modules
Browse files Browse the repository at this point in the history
- Add configuration handling to support step into 3rd modules.
- justMyCode is the single configuration needed to be specified
  regardless the selected back end debugger.
- DebugStdLib is also supported for backward compatibility, and
  a warning message will be printed suggesting for a migration
  if debugpy is selected as the debugger.
  • Loading branch information
f279801 committed Oct 13, 2020
1 parent 2d861a3 commit a8b14a6
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 5 deletions.
18 changes: 15 additions & 3 deletions dap-python.el
Original file line number Diff line number Diff line change
Expand Up @@ -194,7 +194,9 @@ overriden in individual `dap-python' launch configurations."
(plist-get conf :program)
(buffer-file-name)))
(module (plist-get conf :module))
(debugger (plist-get conf :debugger)))
(debugger (plist-get conf :debugger))
(justmycode (plist-get conf :justMyCode))
(debug-options (plist-get conf :debugOptions)))
(cl-remf conf :debugger)
(pcase (or debugger dap-python-debugger)
('ptvsd
Expand All @@ -216,7 +218,12 @@ overriden in individual `dap-python' launch configurations."
(plist-put conf :debugServer debug-port)
(plist-put conf :port debug-port)
(plist-put conf :hostName host)
(plist-put conf :host host)))
(plist-put conf :host host)
(when (and (not (null justmycode))
(equal justmycode :json-false))
(setq debug-options (cl-pushnew "DebugStdLib" debug-options :test #'equal))
(plist-put conf :debugOptions debug-options)
(cl-remf conf :justMyCode))))
('debugpy
;; If certain properties are nil, issues will arise, as debugpy expects
;; them to unspecified instead. Some templates in this file set such
Expand All @@ -238,7 +245,12 @@ overriden in individual `dap-python' launch configurations."
(cl-remf conf :module))
(unless (plist-get conf :cwd)
(cl-remf conf :cwd))

(when (and debug-options
(sequencep debug-options)
(seq-contains debug-options "DebugStdLib")
(null justmycode))
(warn "DebugStdLib is deprecated, use justMyCode, please consider to update your configuration.")
(plist-put conf :justMyCode :json-false))
(plist-put conf :dap-server-path
(list python-executable "-m" "debugpy.adapter"))))
(plist-put conf :program program)
Expand Down
6 changes: 4 additions & 2 deletions docs/page/configuration.md
Original file line number Diff line number Diff line change
Expand Up @@ -95,8 +95,9 @@ settings.
A template named "Python :: Run Configuration" will appear, which
will execute the currently visited module. This will fall short
whenever you need to specify arguments, environment variables or
execute a setuptools based script. In such case, define a template:
whenever you need to specify arguments, environment variables,
enable debugging of 3rd modules or execute a setuptools based script.
In such case, define a template:
``` elisp
(dap-register-debug-template "My App"
Expand All @@ -105,6 +106,7 @@ settings.
:cwd nil
:env '(("DEBUG" . "1"))
:target-module (expand-file-name "~/src/myapp/.env/bin/myapp")
:justMyCode :json-false
:request "launch"
:name "My App"))
```
Expand Down

0 comments on commit a8b14a6

Please sign in to comment.