fix source markup parsing, release notes for source-defined watch annotations

This commit is contained in:
Ryan Fleury
2025-03-26 11:49:15 -07:00
parent bd35ea83fc
commit 48f0702e05
3 changed files with 18 additions and 7 deletions
+12 -2
View File
@@ -35,11 +35,21 @@
// common case is debugging a small number of programs, usually 1, and for
// those purposes, the `Threads` view is sufficient if not desirable, and
// the extra information provided by `Processes` and `Machines`, while useful
// in other contexts, is not useful in that common case.
// in other contexts, is not useful in that common case. The `Machines` view
// now shows a superset of the information previosuly found in the
// `Scheduler` view.
// - The two separate interfaces for editing threads, breakpoints, and watch
// pins (the right-click context menu and the dedicated tabs) have been
// merged.
// - Added the ability to add per-target environment strings.
// - Added the ability to add a list environment strings to targets.
// - Added support for watch annotations derived from source code markup,
// rather than only from configuration. Instances of
// `raddbg_pin(<expr>, <view_rule>)` will be parsed, and used to create watch
// annotations inline with source code, in the same way that watch pins do.
// For instance, `raddbg_pin(dynamic_array, slice)` will visualize
// `dynamic_array` with a `slice` view rule;
// `raddbg_pin(some_function, disasm)` will visualize `some_function` as
// disassembly; and so on.
// - Fixed an annoyance where the debugger would open a console window, even
// for graphical programs, causing a flicker.
+2 -1
View File
@@ -1910,9 +1910,10 @@ rd_code_slice(RD_CodeSliceParams *params, TxtPt *cursor, TxtPt *mark, S64 *prefe
U64 arg_start_off = 0;
for(U64 contents_off = 0; contents_off <= contents.size; contents_off += 1)
{
if(contents_off == contents.size || contents.str[contents_off] == ',')
if(nest == 0 && (contents_off == contents.size || contents.str[contents_off] == ','))
{
String8 arg = str8_substr(contents, r1u64(arg_start_off, contents_off));
arg = str8_skip_chop_whitespace(arg);
str8_list_push(scratch.arena, &args, arg);
arg_start_off = contents_off+1;
}