views autocompletion; view doc coverage

This commit is contained in:
Ryan Fleury
2026-04-22 19:57:08 -07:00
parent 05d76b416a
commit 3c214cfbb5
7 changed files with 216 additions and 105 deletions
+67 -63
View File
@@ -224,11 +224,11 @@ RD_VocabTable:
////////////////////////////////
//~ rjf: Schemas
@table(name schema) RD_SchemaTable:
@table(name is_view schema) RD_SchemaTable:
{
//- rjf: @schema users
//- rjf: @schema user
{
user,
user, 0,
```
@expand_commands(edit_user_theme) x:
{
@@ -312,8 +312,8 @@ RD_VocabTable:
// string and put it into a table cell...
//
{
project
```
project, 0,
```
@expand_commands(edit_project_theme) x:
{
@display_name('Project Name') 'name': string,
@@ -414,7 +414,7 @@ RD_VocabTable:
//- rjf: @schema theme_color
{
theme_color,
theme_color, 0,
```
@collection_commands(add_theme_color, fork_theme, save_theme, save_and_set_theme)
@row_commands(duplicate_cfg, remove_cfg)
@@ -428,7 +428,7 @@ RD_VocabTable:
//- rjf: @schema window
{
window,
window, 0,
```
x:
{
@@ -459,7 +459,7 @@ RD_VocabTable:
//- rjf: @schema tab
{
tab,
tab, 0,
```
@row_commands(@file copy_tab_full_path, @file show_file_in_explorer, duplicate_tab, close_tab)
x:
@@ -471,50 +471,50 @@ RD_VocabTable:
}
//- rjf: @schema bin
{bin ```x:{ @description('An expression to which the 2-radix display should apply.') 'expression': expr_string }```}
{bin 1 ```x:{ @description('An expression to which the 2-radix display should apply.') 'expression': expr_string }```}
//- rjf: @schema oct
{oct ```x:{ @description('An expression to which the 8-radix display should apply.') 'expression': expr_string }```}
{oct 1 ```x:{ @description('An expression to which the 8-radix display should apply.') 'expression': expr_string }```}
//- rjf: @schema hex
{hex ```x:{ @description('An expression to which the 16-radix display should apply.') 'expression': expr_string }```}
{hex 1 ```x:{ @description('An expression to which the 16-radix display should apply.') 'expression': expr_string }```}
//- rjf: @schema digits
{digits ```x:{ @description('An expression to which the digit display should apply.') 'expression': expr_string, @description('The minimum number of digits to display.') 'digit_count': u64 }```}
{digits 1 ```x:{ @description('An expression to which the digit display should apply.') 'expression': expr_string, @description('The minimum number of digits to display.') 'digit_count': u64 }```}
//- rjf: @schema no_string
{no_string ```x:{ @description('The expression for which string visualization should be disabled.') 'expression': expr_string}```}
{no_string 1 ```x:{ @description('The expression for which string visualization should be disabled.') 'expression': expr_string}```}
//- rjf: @schema no_char
{no_char ```x:{ @description('The expression for which character visualization should be disabled.') 'expression': expr_string}```}
{no_char 1 ```x:{ @description('The expression for which character visualization should be disabled.') 'expression': expr_string}```}
//- rjf: @schema no_addr
{no_addr ```x:{ @description('The expression for which address visualization should be disabled.') 'expression': expr_string}```}
{no_addr 1 ```x:{ @description('The expression for which address visualization should be disabled.') 'expression': expr_string}```}
//- rjf: @schema sequence
{sequence ```x:{ @description('The number of expansions to generate.') 'count': expr_string}```}
{sequence 1 ```x:{ @description('The number of expansions to generate.') 'count': expr_string}```}
//- rjf: @schema rows
{rows ```x:{ @description('The expression for which rows should be generated.') 'expression': expr_string, @description('A list of expressions which will be used to generate rows.') '...'}```}
{rows 1 ```x:{ @description('The expression for which rows should be generated.') 'expression': expr_string, @description('A list of expressions which will be used to generate rows.') '...'}```}
//- rjf: @schema columns
{columns ```x:{ @description('The expression for whose expansions columns should be generated.') 'expression': expr_string, @description('A list of expressions which will be used to generate columns for each expansion from `expression`.') '...'}```}
{columns 1 ```x:{ @description('The expression for whose expansions columns should be generated.') 'expression': expr_string, @description('A list of expressions which will be used to generate columns for each expansion from `expression`.') '...'}```}
//- rjf: @schema omit
{omit ```x:{ @description('The expression for which certain members should be omitted.') 'expression': expr_string, @description('A list of member names to omit from the expansion.') '...'}```}
{omit 1 ```x:{ @description('The expression for which certain members should be omitted.') 'expression': expr_string, @description('A list of member names to omit from the expansion.') '...'}```}
//- rjf: @schema range1
{range1 ```x:{ @description('The expression which should be bounded by `min` and `max`.') 'expression': expr_string, @description('The lower bound.') min, @description('The upper bound.') max}```}
{range1 1 ```x:{ @description('The expression which should be bounded by `min` and `max`.') 'expression': expr_string, @description('The lower bound.') min, @description('The upper bound.') max}```}
//- rjf: @schema array
{array ```x:{ @description('An expression of the base address of the array.') 'base_address': expr_string, @description('The number of elements in the array.') count}```}
{array 1 ```x:{ @description('An expression of the base address of the array.') 'base_address': expr_string, @description('The number of elements in the array.') count}```}
//- rjf: @schema slice
{slice ```x:{ @description('An expression of a structure that is to be interpreted as a slice.') 'expression': expr_string}```}
{slice 1 ```x:{ @description('An expression of a structure that is to be interpreted as a slice.') 'expression': expr_string}```}
//- rjf: @schema list
{
list,
list, 1,
```
x:
{
@@ -528,7 +528,7 @@ RD_VocabTable:
//- rjf: @schema watch
{
watch,
watch, 0,
```
@inherit(tab) x:
{
@@ -544,15 +544,15 @@ RD_VocabTable:
//- rjf: @schema text
{
text,
text, 1,
```
@inherit(tab) @expand_commands(@output clear_output) x:
{
@description("An expression to describe data which should be viewed as text or code.")
'expression': expr_string,
@description("The language that the text should be interpreted as being within. Used for syntax highlighting and other parsing features.")
@optional @description("The language that the text should be interpreted as being within. Used for syntax highlighting and other parsing features.")
'lang': code_string,
@default(1) @description("Controls whether or not line numbers are shown.")
@no_callee_helper @default(1) @description("Controls whether or not line numbers are shown.")
'show_line_numbers':bool,
@no_callee_helper @default(1) @display_name('Line Wrapping') @description("Splits textual lines into multiple visual lines, so that all text is within the visible area.")
'line_wrapping': bool,
@@ -566,15 +566,18 @@ RD_VocabTable:
//- rjf: @schema disasm
{
disasm,
disasm, 1,
```
@inherit(tab) x:
{
@description("An expression to describe the base address or offset of the disassembly.")
'expression': expr_string,
'arch': code_string,
'syntax': code_string,
'size': expr_string,
@optional @description("The maximum number of bytes to disassemble.")
'size': expr_string,
@optional @description("The architecture to interpret the data as when disassembling.")
'arch': code_string,
@optional @description("The syntax style to use when displaying the disassembly textually.")
'syntax': code_string,
@no_callee_helper @default(1) @description("Controls whether or not addresses are shown in the disassembly text.")
'show_addresses': bool,
@no_callee_helper @default(0) @description("Controls whether or not code bytes are shown in the disassembly text.")
@@ -591,35 +594,35 @@ RD_VocabTable:
//- rjf: @schema memory
{
memory,
memory, 1,
```
@inherit(tab) x:
{
@display_name("Zoom") @description("The zoom level for displaying bytes in the memory view.")
@default(1.0) 'zoom': @range[0.5, 2] f32,
@display_name("Base Address") @description("An expression which refers to the base address of data which should be viewed as memory.")
'expression': expr_string,
@display_name("Address Range Size") @description("The number of bytes of the viewed memory range.")
@no_callee_helper @display_name("Zoom") @description("The zoom level for displaying bytes in the memory view.")
@default(1.0) 'zoom': @range[0.5, 2] f32,
@optional @display_name("Address Range Size") @description("The number of bytes of the viewed memory range.")
'size': expr_string,
@display_name("Cursor Address") @description("The address of the cursor.")
@no_callee_helper @display_name("Cursor Address") @description("The address of the cursor.")
'cursor': expr_string,
@default(1) @display_name("Cursor Size") @description("The size, in bytes, of the cursor.")
@no_callee_helper @default(1) @display_name("Cursor Size") @description("The size, in bytes, of the cursor.")
'cursor_size': @range[1, 16] u64,
@expand_if("!$.auto_columns") @default(16) @description("The number of columns to build before building new rows.")
@optional @expand_if("!$.auto_columns") @default(16) @description("The number of columns to build before building new rows.")
'num_columns': @range[1, 64] u64,
@default(16) @display_name("Default Radix") @description("The default radix with which numeric values should be displayed, when peeking.")
@optional @default(16) @display_name("Default Radix") @description("The default radix with which numeric values should be displayed, when peeking.")
@or(2, 8, 10, 16)
'default_radix': u64,
@default(1) @display_name("Track Mark To Cursor") @description("Ensures that the mark always follows the cursor, if the cursor value is updated.")
@no_callee_helper @default(1) @display_name("Track Mark To Cursor") @description("Ensures that the mark always follows the cursor, if the cursor value is updated.")
'track_mark_to_cursor': bool,
@default(1) @display_name("Allow Mutation") @description("Allows operations which mutate memory.")
@no_callee_helper @default(1) @display_name("Allow Mutation") @description("Allows operations which mutate memory.")
'allow_mutation': bool,
@default(0) @display_name("Automatically Size Columns") @description("Determines the number of columns based on the available space.")
@no_callee_helper @default(0) @display_name("Automatically Size Columns") @description("Determines the number of columns based on the available space.")
'auto_columns': bool,
@default(1) @display_name("Peek As Unsigned") 'peek_as_unsigned': bool,
@default(1) @display_name("Peek As Signed") 'peek_as_signed': bool,
@default(1) @display_name("Peek As Float") 'peek_as_float': bool,
@display_name("Extra Peek Types") @description("A list of types as which to interpret selected memory.")
@no_callee_helper @default(1) @display_name("Peek As Unsigned") 'peek_as_unsigned': bool,
@no_callee_helper @default(1) @display_name("Peek As Signed") 'peek_as_signed': bool,
@no_callee_helper @default(1) @display_name("Peek As Float") 'peek_as_float': bool,
@no_callee_helper @display_name("Extra Peek Types") @description("A list of types as which to interpret selected memory.")
'peek_types': set,
}
```
@@ -627,7 +630,7 @@ RD_VocabTable:
//- rjf: @schema bitmap
{
bitmap,
bitmap, 1,
```
@inherit(tab) x:
{
@@ -643,7 +646,7 @@ RD_VocabTable:
//- rjf: @schema color
{
color,
color, 1,
```
@inherit(tab) x:
{
@@ -655,7 +658,7 @@ RD_VocabTable:
//- rjf: @schema geo3d
{
geo3d,
geo3d, 1,
```
@inherit(tab) x:
{
@@ -673,7 +676,7 @@ RD_VocabTable:
//- rjf: @schema getting_started
{
getting_started,
getting_started, 0,
```
@inherit(tab) x:
{
@@ -683,7 +686,7 @@ RD_VocabTable:
//- rjf: @schema target
{
target,
target, 0,
```
@row_commands(@cmd_line save_cfg_to_project, enable_cfg, launch_and_run, launch_and_step_into, duplicate_cfg, remove_cfg)
@collection_commands(add_target)
@@ -706,7 +709,7 @@ RD_VocabTable:
//- rjf: @schema breakpoint
{
breakpoint,
breakpoint, 0,
```
@row_commands(enable_cfg, duplicate_cfg, remove_cfg)
@collection_commands(toggle_breakpoint, add_breakpoint, add_address_breakpoint, add_function_breakpoint, clear_breakpoints)
@@ -728,7 +731,7 @@ RD_VocabTable:
//- rjf: @schema watch_pin
{
watch_pin,
watch_pin, 0,
```
@row_commands(duplicate_cfg, remove_cfg)
@collection_commands(add_watch_pin, toggle_watch_pin)
@@ -743,7 +746,7 @@ RD_VocabTable:
//- rjf: @schema debug_info
{
debug_info,
debug_info, 0,
```
@row_commands(enable_cfg, duplicate_cfg, remove_cfg)
@collection_commands(load_debug_info)
@@ -758,49 +761,49 @@ RD_VocabTable:
//- rjf: @schema file_path_map
{
file_path_map,
file_path_map, 0,
```@collection_commands(add_file_path_map) @row_commands(remove_cfg) x:{'source': @no_relativize path, 'dest': @no_relativize path}```,
}
//- rjf: @schema type_view
{
type_view,
type_view, 0,
```@collection_commands(add_type_view) @row_commands(remove_cfg) x:{'type':expr_string, 'expr':expr_string}```,
}
//- rjf: @schema recent_project
{
recent_project,
recent_project, 0,
```x:{'path':path}```,
}
//- rjf: @schema recent_file
{
recent_file,
recent_file, 0,
```x:{'path':path}```,
}
//- rjf: @schema machine
{
machine,
machine, 0,
```x:{'label':code_string, @no_expand 'active':bool, 'unattached_processes':set, 'processes':set}```,
}
//- rjf: @schema process
{
process,
process, 0,
```x:{'label':code_string, 'id':u64, @no_expand 'active':bool, 'modules':set, 'threads':set}```,
}
//- rjf: @schema module
{
module,
module, 0,
```x:{'exe':path, 'dbg':path, 'vaddr_range':vaddr_range}```,
}
//- rjf: @schema thread
{
thread,
thread, 0,
```x:{'label':code_string, 'id':u64, @no_expand 'active':bool, 'call_stack':set}```,
}
}
@@ -808,12 +811,13 @@ RD_VocabTable:
@struct RD_NameSchemaInfo:
{
`String8 name`;
`B32 is_view`;
`String8 schema`;
}
@data(RD_NameSchemaInfo) rd_name_schema_info_table:
{
@expand(RD_SchemaTable a) `{str8_lit_comp("$(a.name)"), str8_lit_comp("$(a.schema)")}`
@expand(RD_SchemaTable a) `{str8_lit_comp("$(a.name)"), $(a.is_view), str8_lit_comp("$(a.schema)")}`
}
////////////////////////////////