* 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>
* 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>
* 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>
* 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
* 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>
* 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
* 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
* 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>
* 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
* 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>