Skip to content

Commit 88b79b2

Browse files
committed
turn off transient tab creation with explicit open/switch command
1 parent e4aae5b commit 88b79b2

File tree

4 files changed

+43
-29
lines changed

4 files changed

+43
-29
lines changed

src/raddbg/generated/raddbg.meta.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -454,7 +454,7 @@ RD_NameSchemaInfo rd_name_schema_info_table[26] =
454454
{str8_lit_comp("thread"), str8_lit_comp("x:{'label':code_string, 'id':u64, @no_expand 'active':bool, 'call_stack':query}")},
455455
};
456456

457-
String8 rd_reg_slot_code_name_table[47] =
457+
String8 rd_reg_slot_code_name_table[48] =
458458
{
459459
{0},
460460
str8_lit_comp("machine"),
@@ -499,13 +499,14 @@ str8_lit_comp("do_lister"),
499499
str8_lit_comp("do_big_rows"),
500500
str8_lit_comp("all_windows"),
501501
str8_lit_comp("non_graphical"),
502+
str8_lit_comp("prefer_new_tab"),
502503
str8_lit_comp("dir2"),
503504
str8_lit_comp("string"),
504505
str8_lit_comp("cmd_name"),
505506
str8_lit_comp("os_event"),
506507
};
507508

508-
Rng1U64 rd_reg_slot_range_table[47] =
509+
Rng1U64 rd_reg_slot_range_table[48] =
509510
{
510511
{0},
511512
{OffsetOf(RD_Regs, machine), OffsetOf(RD_Regs, machine) + sizeof(CTRL_Handle)},
@@ -550,6 +551,7 @@ Rng1U64 rd_reg_slot_range_table[47] =
550551
{OffsetOf(RD_Regs, do_big_rows), OffsetOf(RD_Regs, do_big_rows) + sizeof(B32)},
551552
{OffsetOf(RD_Regs, all_windows), OffsetOf(RD_Regs, all_windows) + sizeof(B32)},
552553
{OffsetOf(RD_Regs, non_graphical), OffsetOf(RD_Regs, non_graphical) + sizeof(B32)},
554+
{OffsetOf(RD_Regs, prefer_new_tab), OffsetOf(RD_Regs, prefer_new_tab) + sizeof(B32)},
553555
{OffsetOf(RD_Regs, dir2), OffsetOf(RD_Regs, dir2) + sizeof(Dir2)},
554556
{OffsetOf(RD_Regs, string), OffsetOf(RD_Regs, string) + sizeof(String8)},
555557
{OffsetOf(RD_Regs, cmd_name), OffsetOf(RD_Regs, cmd_name) + sizeof(String8)},

src/raddbg/generated/raddbg.meta.h

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ RD_RegSlot_DoLister,
5151
RD_RegSlot_DoBigRows,
5252
RD_RegSlot_AllWindows,
5353
RD_RegSlot_NonGraphical,
54+
RD_RegSlot_PreferNewTab,
5455
RD_RegSlot_Dir2,
5556
RD_RegSlot_String,
5657
RD_RegSlot_CmdName,
@@ -489,6 +490,7 @@ B32 do_lister;
489490
B32 do_big_rows;
490491
B32 all_windows;
491492
B32 non_graphical;
493+
B32 prefer_new_tab;
492494
Dir2 dir2;
493495
String8 string;
494496
String8 cmd_name;
@@ -587,6 +589,7 @@ Z(getting_started)\
587589
.do_big_rows = rd_regs()->do_big_rows,\
588590
.all_windows = rd_regs()->all_windows,\
589591
.non_graphical = rd_regs()->non_graphical,\
592+
.prefer_new_tab = rd_regs()->prefer_new_tab,\
590593
.dir2 = rd_regs()->dir2,\
591594
.string = rd_regs()->string,\
592595
.cmd_name = rd_regs()->cmd_name,\
@@ -597,8 +600,8 @@ extern String8 rd_tab_fast_path_view_name_table[25];
597600
extern String8 rd_tab_fast_path_query_name_table[25];
598601
extern RD_VocabInfo rd_vocab_info_table[358];
599602
extern RD_NameSchemaInfo rd_name_schema_info_table[26];
600-
extern String8 rd_reg_slot_code_name_table[47];
601-
extern Rng1U64 rd_reg_slot_range_table[47];
603+
extern String8 rd_reg_slot_code_name_table[48];
604+
extern Rng1U64 rd_reg_slot_range_table[48];
602605
extern String8 rd_binding_version_remap_old_name_table[8];
603606
extern String8 rd_binding_version_remap_new_name_table[8];
604607
extern String8 rd_icon_kind_text_table[75];

src/raddbg/raddbg.mdesk

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -797,6 +797,7 @@ RD_RegTable:
797797
{B32 do_big_rows DoBigRows }
798798
{B32 all_windows AllWindows }
799799
{B32 non_graphical NonGraphical }
800+
{B32 prefer_new_tab PreferNewTab }
800801
{Dir2 dir2 Dir2 }
801802
{String8 string String }
802803
{String8 cmd_name CmdName }

src/raddbg/raddbg_core.c

Lines changed: 33 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -13515,7 +13515,7 @@ rd_frame(void)
1351513515
{
1351613516
path = rd_regs()->file_path;
1351713517
}
13518-
rd_cmd(RD_CmdKind_FindCodeLocation, .file_path = path, .cursor = txt_pt(0, 0), .vaddr = 0, .force_focus = 1);
13518+
rd_cmd(RD_CmdKind_FindCodeLocation, .file_path = path, .cursor = txt_pt(0, 0), .vaddr = 0, .force_focus = 1, .prefer_new_tab = 1);
1351913519
}break;
1352013520
case RD_CmdKind_SwitchToPartnerFile:
1352113521
{
@@ -13542,7 +13542,7 @@ rd_frame(void)
1354213542
FileProperties candidate_props = os_properties_from_file_path(candidate_path);
1354313543
if(candidate_props.modified != 0)
1354413544
{
13545-
rd_cmd(RD_CmdKind_FindCodeLocation, .file_path = candidate_path, .cursor = txt_pt(0, 0), .vaddr = 0);
13545+
rd_cmd(RD_CmdKind_FindCodeLocation, .file_path = candidate_path, .cursor = txt_pt(0, 0), .vaddr = 0, .prefer_new_tab = 1);
1354613546
break;
1354713547
}
1354813548
}
@@ -14124,12 +14124,14 @@ rd_frame(void)
1412414124
CTRL_Entity *process = &ctrl_entity_nil;
1412514125
U64 vaddr = 0;
1412614126
B32 require_disasm_snap = 0;
14127-
{
14128-
file_path = rd_mapped_from_file_path(scratch.arena, rd_regs()->file_path);
14129-
point = rd_regs()->cursor;
14130-
thread = ctrl_entity_from_handle(&d_state->ctrl_entity_store->ctx, rd_regs()->thread);
14131-
process = ctrl_entity_from_handle(&d_state->ctrl_entity_store->ctx, rd_regs()->process);
14132-
vaddr = rd_regs()->vaddr;
14127+
B32 prefer_new_tab = 0;
14128+
{
14129+
file_path = rd_mapped_from_file_path(scratch.arena, rd_regs()->file_path);
14130+
point = rd_regs()->cursor;
14131+
thread = ctrl_entity_from_handle(&d_state->ctrl_entity_store->ctx, rd_regs()->thread);
14132+
process = ctrl_entity_from_handle(&d_state->ctrl_entity_store->ctx, rd_regs()->process);
14133+
vaddr = rd_regs()->vaddr;
14134+
prefer_new_tab = rd_regs()->prefer_new_tab;
1413314135
if(file_path.size == 0)
1413414136
{
1413514137
require_disasm_snap = 1;
@@ -14236,25 +14238,28 @@ rd_frame(void)
1423614238
// rjf: try to find panel/view pair that has any *auto* source code tab open
1423714239
info->panel_w_auto = &cfg_nil_panel_node;
1423814240
info->view_w_auto = &cfg_nil_node;
14239-
for(CFG_PanelNode *panel = panel_tree.root;
14240-
panel != &cfg_nil_panel_node;
14241-
panel = cfg_panel_node_rec__depth_first_pre(panel_tree.root, panel).next)
14241+
if(!prefer_new_tab)
1424214242
{
14243-
if(panel->first != &cfg_nil_panel_node)
14244-
{
14245-
continue;
14246-
}
14247-
for(CFG_NodePtrNode *tab_n = panel->tabs.first; tab_n != 0; tab_n = tab_n->next)
14243+
for(CFG_PanelNode *panel = panel_tree.root;
14244+
panel != &cfg_nil_panel_node;
14245+
panel = cfg_panel_node_rec__depth_first_pre(panel_tree.root, panel).next)
1424814246
{
14249-
CFG_Node *tab = tab_n->v;
14250-
if(rd_cfg_is_project_filtered(tab)) { continue; }
14251-
RD_RegsScope(.tab = tab->id, .view = tab->id)
14247+
if(panel->first != &cfg_nil_panel_node)
14248+
{
14249+
continue;
14250+
}
14251+
for(CFG_NodePtrNode *tab_n = panel->tabs.first; tab_n != 0; tab_n = tab_n->next)
1425214252
{
14253-
if(str8_match(tab->string, str8_lit("text"), 0) &&
14254-
rd_view_setting_b32_from_name(str8_lit("auto")))
14253+
CFG_Node *tab = tab_n->v;
14254+
if(rd_cfg_is_project_filtered(tab)) { continue; }
14255+
RD_RegsScope(.tab = tab->id, .view = tab->id)
1425514256
{
14256-
info->panel_w_auto = panel;
14257-
info->view_w_auto = tab;
14257+
if(str8_match(tab->string, str8_lit("text"), 0) &&
14258+
rd_view_setting_b32_from_name(str8_lit("auto")))
14259+
{
14260+
info->panel_w_auto = panel;
14261+
info->view_w_auto = tab;
14262+
}
1425814263
}
1425914264
}
1426014265
}
@@ -14616,8 +14621,11 @@ rd_frame(void)
1461614621
dst_tab = cfg_node_new(rd_state->cfg, dst_panel->cfg, str8_lit("text"));
1461714622
CFG_Node *expr = cfg_node_new(rd_state->cfg, dst_tab, str8_lit("expression"));
1461814623
cfg_node_new(rd_state->cfg, expr, rd_eval_string_from_file_path(scratch.arena, file_path));
14619-
CFG_Node *auto_root = cfg_node_new(rd_state->cfg, dst_tab, str8_lit("auto"));
14620-
cfg_node_new(rd_state->cfg, auto_root, str8_lit("1"));
14624+
if(!prefer_new_tab)
14625+
{
14626+
CFG_Node *auto_root = cfg_node_new(rd_state->cfg, dst_tab, str8_lit("auto"));
14627+
cfg_node_new(rd_state->cfg, auto_root, str8_lit("1"));
14628+
}
1462114629
}
1462214630

1462314631
// rjf: determine if we need a contain or center

0 commit comments

Comments
 (0)