* 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>
We checked if the user passed in an lldb-dap path after we searched for lldb-dap in PATH.
I switched around the order so if there's a user_installed_path passed through it takes
priority
* 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>
* Add debug panel flow tests
* Wip debug
* Wip fix test
Co-Authored-By: Anthony Eid <56899983+Anthony-Eid@users.noreply.github.com>
* WIP Get test_show_debug_panel to run
while the test now runs without panicing dued to parked with nothing left to run
the debug panel item is not being spawned
* Get test_show_debug_panel to pass & clean up
* Make clippy pass
* Assert debug panel item is removed when client shutdown
* Move send event back to dapstore
---------
Co-authored-by: Anthony Eid <56899983+Anthony-Eid@users.noreply.github.com>
Co-authored-by: Anthony Eid <hello@anthonyeid.me>
* 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
* Go DAP WIP
* Start work on getting go adapter working
* Get beta version of go adapter working & fix breakpoint line msgs
This adapter only works if a user has Go & delve in their PATH. It doesn't automatically download & updates itself because the official download process from the Delve docs would add delve to a user's PATH. I want to discuss with the Zed dev team & Remco if that is behavior we're ok with because typical downloads don't affect a user's PATH.
This PR also fixes a bug where some breakpoint line numbers were incorrect when sending to active DAP servers.
* Rename StopDebugAdapters to ShutdownDebugAdapters
* Remove debug config from install methods
* Move requests methods to background executor
* Wip attach with picker
* Move find client to the first line of the method
The client should always be there at this point.
* Fix correctly determine when to restart
While debugging an reverse request issue, the top level client did send terminated event with `restart: false` but we tried to restart the client resulting in the client never being cleaned up by us.
Because before this change we always assumed if we got a json value we are going to restart the client, which is wrong.
We no try to restart the client if:
- restart arg is a boolean and its true
- restart arg is a json value but no boolean
* Clean up response to adapter
* Fix clippy errors
* WIP tasks
* Simplified debug task schema
This changes debug.json to look for adapter: adapter_name instead of
and object when a user selects a debug adatper and fixes the default
behavior of request (to launch)
Co-authored-by: Remco Smits <djsmits12@gmail.com>
* Make default and flatten work for request
* Rename enum case
* Remove dbg
* Dismiss when candidate is not found
* Add docs for why we update the process id on the config
* Show error when `attach` request is selected but not supported
---------
Co-authored-by: Anthony Eid <hello@anthonyeid.me>
* 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>
* Make program optional in debug task format
* Remove default config for skipFile JavaScript debugger
* Add Debug case to TerminalKind
* Don't allow serializing debug terminals
* Add respond method so we can send response back for reverse requests
* Implement run in terminal reverse request
* Move client calls to dap store
This commit also fixes an issue with not sending a response for the `StartDebugging` reverse request.
* Make clippy happy
* 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>