Commit Graph

22 Commits

Author SHA1 Message Date
Remco Smits
fa3cf3e1df Remove is_fake field on DebugAdapterBinary instead always use fake adapter for test mode/feature 2025-02-27 19:05:53 +01:00
Remco Smits
43bf537bba Require port in TcpArguments and use configured host 2025-02-27 17:21:13 +01:00
Remco Smits
f4cb78f5c6 Fix a few clippy errors 2025-02-19 14:41:11 +01:00
Anthony Eid
5908d5d5fd Cherry pick from remove-dap-session 2025-02-18 10:47:56 -05:00
Piotr Osiewicz
06338963f3 WIP 2025-02-17 17:24:50 +01:00
Piotr Osiewicz
95590967eb WIP 2025-02-17 16:51:39 +01:00
Remco Smits
dfe978b06a Add toolchain support for python debug adapter (#90)
* WIP add toolchain for python

Co-Authored-By: Anthony Eid <56899983+Anthony-Eid@users.noreply.github.com>

* Integrate toolchain store with dap_store & use it for debugpy

* Wip require worktree to start debug session

* Move start debug session to project for determing the worktree

* Make all tests pass again

* Make collab tests pass

* Use notify instead of manual notification

* Use reference instead of clone

* Revert "Use reference instead of clone"

This reverts commit 61469bb1679bc35d5d3bf0b93e5b7cfc94357c80.

* Revert "Use notify instead of manual notification"

This reverts commit a0b9bf52a1d948dfb244c4b7040576a34ec6f465.

* Revert debugger branch merge

* Revert "Revert debugger branch merge"

This reverts commit 56c883d4dba4877826ea2185a8177fddefa0d054.

* Clean up

* Make node runtime required

* Pass worktree id into get_environment

* Fix use the resolved debug adapter config

* Add fallback if toolchain could not be found to common binary names

---------

Co-authored-by: Anthony Eid <56899983+Anthony-Eid@users.noreply.github.com>
Co-authored-by: Anthony Eid <hello@anthonyeid.me>
2025-01-29 20:55:57 +01:00
Anthony Eid
d7fa7c208d WIP Implement Debugger Collab Functionality (#69)
* Initial WIP for impl FollowableItem for DebugPanelItem

* Implment DebuggerThreadState proto functions

* Add Debug panel item variable list definition to zed.proto

* Add more debug panel item messages to zed.proto

* WIP

* Fix compile errors

Co-authored-by: Remco Smits <djsmits12@gmail.com>

* More WIP

Co-authored-by: Remco Smits <djsmits12@gmail.com>

* Further WIP lol

* Start working on fake adapter WIP

Co-authored-by: Remco Smits <djsmits12@gmail.com>
Co-authored-by: Mikayla Maki  <mikayla@zed.dev>

* Merge with Remco's mock debug adapter client branch

* Fix false positive clippy error

This error was a match variant not being covered when the variant wasn't possible dued
to a feature flag. I'm pretty sure this is a bug in clippy/rust-analyzer and will
open an issue on their repos

* Add todo to change in dap adapter downloads

* WIP Get variable to send during variable list

* Get variable list from/to_proto working

Note: For some reason variable entries aren't rendering even though
everything is being sent

* Fix warning messages

* Fix typo

* Impl stack from list from/to_proto for debug panel item

* Change order of set_from_proto for debug panel item

* Impl Variable list variables to/from proto funcs

* Start work on Set Debugger Panel Item event

* WIP with remco

Co-authored-by: Remco Smits <djsmits12@gmail.com>

* Get SetDebugPanelItem proto message sending and handled

Co-authored-by: Remco Smits <djsmits12@gmail.com>

* Setup UpdateDebugAdapter collab message & send live stack frame list updates

* Use proto enums instead of hardcoded integers

* Use read instead of update

* Send variable list update message each time we build the entries

* Send stack frame message when we selected the active stackframe

* Add more mappings

* Remove debug and rename method to be more inline with others

* Use the correct entries to reset

* Add tests to validate we can go and from proto ScopeVariableIndex

* Rename test

* Create UpdateAdapter ModuleList variant WIP

* Change proto conversion trait to have some types return Result enums

* Get clippy to pass

I removed some proto message we used in DebugPanelItem FollowableItem implmentation
because they were causing clippy errors and will need to be change in the near
future anyway

---------

Co-authored-by: Remco Smits <djsmits12@gmail.com>
Co-authored-by: Mikayla Maki <mikayla@zed.dev>
2024-12-18 11:45:21 -05:00
Remco Smits
1a0ecf0c16 Add FakeAdapter and FakeTransport for testing purposes (#73)
* Move process to transport struct itself

* Add test to make sure we can send request and receive a response

* Align other handle methods

* Fix issues inside cargo.toml require test features inside the correct *-dependencies

* Remove comments that are not needed

* Add as_fake instead of downcasting

* Clean up

* Override get_binary method so we don't fail on install

* Fix false positive clippy error

This error was a match variant not being covered when the variant wasn't possible dued
to a feature flag. I'm pretty sure this is a bug in clippy/rust-analyzer and will
open an issue on their repos

* Remove not needed clone

* Panic when we receive an event/reverse request inside the test

* reuse the type of the closure

* Add a way to fake receiving events

* Oops remove fake event from different test

* Clipppyyyy

---------

Co-authored-by: Anthony Eid <hello@anthonyeid.me>
2024-12-09 20:16:06 +01:00
Remco Smits
2b8ae367c7 Rework download adapters and allow multiple download formats (#72)
* Rework download adapters and allow multiple download formats

* Move version path check up, so we don't have to check always 2 paths

* Add user installed binary back

* Fix dynamic ports don't work for javascript when using start debugging path
2024-12-06 20:31:21 +01:00
Remco Smits
b6dc3ca86f Send cwd to PHP and Python adapter 2024-11-15 23:18:39 +01:00
Anthony Eid
56df4fbe6e Get users python binary path based on which instead of python3 & pass shell_env to Adapters (#63)
* Add ProjectEnvironment to Dap Store & use get users python3 path from which command

* Pass shell env to debug adapters
2024-11-06 16:26:55 -05:00
Remco Smits
d226de3230 Add current working directory to adapter (#59)
* Add current working directory to adapter

* Prio use resolve cwd
2024-11-01 22:47:43 +01:00
Anthony Eid
5efdaf3ca7 Allow users to set debug adapter path to use from settings 2024-11-01 17:18:23 -04:00
Anthony Eid
0c647ae071 Switch debugpy to use TCP instead of STDIO
Co-authored-by: Remco Smits <djsmits12@gmail.com>
2024-10-27 07:41:52 -04:00
Remco Smits
f7eb5213a5 Allow users to configure host, port and timeout for build in TCP adapters (#56)
* Remove space in cargo.toml

* Add TCPHost for Javascript and PHP adapter

* Allow falling back to first open port

* Add some more docs to TCPHost

* Fix cached binaries prevent from having multiple debug sessions for one adapters

This was an issue, because we stored the port arg inside the DebugAdapterBinary which was cached so could not change anymore.

Co-authored-by: Anthony Eid <hello@anthonyeid.me>

* Add default setting for tcp timeout

Co-Authored-By: Anthony Eid <56899983+Anthony-Eid@users.noreply.github.com>

---------

Co-authored-by: Anthony Eid <hello@anthonyeid.me>
Co-authored-by: Anthony Eid <56899983+Anthony-Eid@users.noreply.github.com>
2024-10-27 12:16:09 +01:00
Anthony Eid
290c76daef Enable Debug Adapter Updates (#53)
* Get debug adapter to update when new versions are avaliable

* Debug adapter download only happens if there's a new version avaliable

* Use DebugAdapter.name() instead of string literals

* Fix bug where some daps wouldn't update/install correctly

* Clean up download adapter from github function

* Add debug adapter caching

* Add basic notification event to dap_store
2024-10-23 11:17:12 -04:00
Anthony Eid
61daad2377 Clean up DAP install code (#51)
* Clean up dap adapter install_binary functions 

* Get lldb-dap working when on macos

* Add release tag to name of downloaded DAPs

* Check if adapter is already installed before installing one
2024-10-23 04:45:02 -04:00
Remco Smits
fc78c40385 Move how we connect to an debug adpater to the transport layer (#52)
* Move how we connect to an debug adpater to the transport layer

This PR cleans up how we connect to a debug adapter.
Previously, this was done inside the debug adapter implementation.

While reviewing the debugger RPC log view PR,
I noticed that we could simplify the transport/client code,
making it easier to attach handlers for logging RPC messages.

* Remove not needed async block

* Change hardcoded delay before connecting to tcp adapter to timeout approach

Co-Authored-By: Anthony Eid <hello@anthonyeid.me>

---------

Co-authored-by: Anthony Eid <hello@anthonyeid.me>
2024-10-20 19:29:34 +02:00
Remco Smits
177ae28ab2 Add support for custom adapters
Also simplify the DebugAdapterBInary struct
2024-10-10 21:07:17 +02:00
Remco Smits
7e2c1386fc Cleanup adapters code and add javascript adapter (#48)
* Clean up how adapters install and fetch their binary

Before this was in one method, which was hard to read and doing to many things.

* Add javascript debug adapter

* Get node binary from node_runtime

* Undo remove request args for lldb

* Remove initialize value for now

* Remove default values

* Fix did not compile javascript

* Fix php did not build
2024-10-09 15:47:07 +02:00
Anthony Eid
187d909736 DapAdapter Updates (#40)
* Pass http client to dap store

* Set up DapAdapterDelegate to use for DAP binary fetches

* WIP to get debug adapters to use zed directory for installs

* Get debugpy automatic download working

* Change DapAdapter fetch_or_install to return a Result

* Add node_runtime to dap delegate

Co-authored-by: Remco Smits <djsmits12@gmail.com>

* Create dap_adapter crate & move language dap adapter code to that crate

This is the first phase of dap::client refactor to organize debug adapters with zed lsp adapters.
Eventually dap::client will have a TransportParams pass to it instead of an adapter, and adapters
will handle custom debug events.

Co-authored-by: Remco Smits <djsmits12@gmail.com>

* Move language specific dap adapter code to their own files

* Move DebugAdapter member out of ClientDebugAdapter struct

This change was done to make dap::client more in line with zed's lsp::client, it might be reverted depending
on if this solution is cleaner or not.

* Get php debug adapter to auto download when needed

* Get adapter_path argument to work with auto download dap adapters

---------

Co-authored-by: Remco Smits <djsmits12@gmail.com>
2024-10-07 16:33:03 -04:00