Open filipdutescu opened 1 year ago
For the variable views (the top pane called Locals -- it's technically variables), the idea was to repurpose the tree component from https://github.com/helix-editor/helix/pull/2377 / https://github.com/helix-editor/helix/pull/5768
For the variable views (the top pane called Locals -- it's technically variables), the idea was to repurpose the tree component from https://github.com/helix-editor/helix/pull/2377 / https://github.com/helix-editor/helix/pull/5768
Yes, I plan on using the exact same mechanism as proposed by you. That part (local pane) and the quick watch one would be dependent on either of the two linked PRs.
@CptPotato proposed a new design for the debug panel,which I like quite a bit. This is what I propose, moving forward:
Update on the current debug line (#5952). Latest developments lead me to this current implementation, which is a good MVP in my opinion. Further work can be done to improve the ability to customise components such as selection and cursor highlights, but they'll be out of scope for the current PR.
Dracula theme example:
Onedark example:
Ayu light example:
Update on the default theme. After talking some more with @archseer, we landed on this colour for the debug highlight, which I find beautiful:
Latest update: #5952 was merged, hope it is a pleasant addition and a nice start to the overhaul! Thanks a lot to @pascalkuthe and @archseer for the help with the issue!
Would a disasm split or register view be something to consider? Debugging low level code these features in gdb are incredibly helpful
I hope this proposal is going on, the helix is fantastic, but the debug is really experimental.
I have had some personal problems keeping me from dedicating sufficient time to tuis initiative. But all should start to clear up during summer, when I plan to get up to date with any progress made and pick it back up. Not sure what progress was made in the meantime though.
Adding mouse actions like resizing the left pane would be nice, making the side pane windows collapsible would be another awesome addition too. By the way, who's had any luck using the debugger?
This feature would be amazing! @filipdutescu would it be possible to have also console output to be displayed? This can be also useful to debug console applications that require user input. I actually thought about making a TUI specifically for Delve in Go as an addition to my Helix workflow. Your idea would even better as it would directly integrated into Helix.
To throw another "good to have" feature on the heap, it would be great if the interface supports data viewers of different languages.
E.g. having C
+ Rust
is pretty common. And there are quite some bugs which occur during the interaction of the two.
If the debugger switches from a Rust file to a C file, it should be able to seamlessly show the C types.
I just can't find an IDE which does this without problems (RustRover doesn't show C types and in VSCode, Rust debugging is broken with complicated building scenarios).
Curious what the progress has been here. I love Helix and debugging!
Description
The current debugging experience is less than ideal. While challenges are expected with TUI editors, the current experience is, to put it bluntly, raw. It is hard to launch or stop sessions, view variables, see which line the session is paused at etc. You also have no way to drill down into variable values (or if you have, it is so hidden I have yet to find it) or edit their values during a debugging session.
There is much more that should be done to ensure a smooth experience, including:
target/debug/myexe
) which should be overridable inlanguage.toml
as well5927
Proposal
To address some of those pain points, I propose the following overhaul and redesign:
NOR
,INS
,SEL
: theDBG
mode, which would be basicallyNOR
with extra configurable keybindings for the debugging commands. This would also remove the need for the sticky popup, which could be turned on by a new keybinding, such as?
, for example - #5951;Related issues
5927
5951
5952
5954
5955
5956
6238
UI/UX mockups
New UI for debugging:
Help popup (using the current one as example):
Expanding a variable's value (same prompt and cursor highlighting should be used for watches as well):
Quick watch popup: