-
Notifications
You must be signed in to change notification settings - Fork 51
Description
Deleting my previous issue because I have a working config, it is just very manual and I'm trying to figure out if there's a way to do this automatically.
Here's my use case. I am developing python, remotely via tramp over ssh, and my python is being launched by the bazel build system. This has a few implications:
- dape is unable to launch debugpy directly, because all launching is done by
bazel runwith a config option for debugpy. As a result, an attach config is necessary, and the debugpy config entry doesn't work - Since I am developing over ssh, the only way I can reach the debugpy port is using ssh port forwarding, so dape needs to connect to localhost
- Source paths to place the marker need to be prefixed by the tramp prefix for the current project
- Bazel has the lovely behavior that it doesn't launch code directly from the project directory, it makes a sandbox directory and symlinks python source back to it. Dape needs to map paths from the sandbox back to the source dir
Given all this, I was able to make dape work, beautifully I might add, with this config:
(add-to-list 'dape-configs
'(debugpy-attach .
(modes (python-mode python-ts-mode)
port 5678
host "localhost"
:request "attach"
:type "python"
:cwd dape-cwd
:program dape-buffer-default
:args []
:justMyCode nil
:console "integratedTerminal"
:showReturnValue t
:stopOnEntry nil
prefix-local "/ssh:dev:/home/jsadusk/my/project/dir/"
prefix-remote "/data/jsadusk/cache/bazel/_bazel_jsadusk/08376eed31abaac569ecaec66be8adad/execroot/waabi-av/bazel-out/k8-opt/bin/my-bazel-run/-arget.runfiles/base-path/"
)
)
)
(paths are not real for security reasons)
Setting prefix-local and prefix-remote made everything work. But there's no reason those can't be automatically determined.
First, /ssh:dev: is in the project root, but it looks like dape--path doesn't make use of the project dir.
Second, the file returned by the debugger inside the sandbox is a symlink. I think if dape-path followed symlinks it would be able to resolve this easily.
Does this seem like a reasonable enhancement? I may try to make a PR myself to do this if you don't mind.