Merge branch 'main' into worktree-improvise-ewi-formula-crate

# Conflicts:
#	TAGS
This commit is contained in:
Edward Langley
2026-04-15 22:47:51 -07:00
9 changed files with 9970 additions and 433 deletions

662
TAGS
View File

@ -748,7 +748,7 @@ impl<'a> Widget for ImportWizardWidget<'a> {ImportWizardWidget21,444
fn render(self, area: Rect, buf: &mut Buffer) {render22,489
fn truncate(s: &str, max: usize) -> String {truncate339,13390
src/ui/effect.rs,14177
src/ui/effect.rs,14356
pub(crate) const RECORD_COORDS_CANNOT_BE_EMPTY: &str = "Record coordinates cannot be empty";RECORD_COORDS_CANNOT_BE_EMPTY9,160
pub trait Effect: Debug {Effect13,358
fn apply(&self, app: &mut App);apply14,384
@ -786,223 +786,225 @@ pub struct RemoveFormula {RemoveFormula113,3206
pub target_category: String,target_category115,3257
impl Effect for RemoveFormula {RemoveFormula117,3292
fn apply(&self, app: &mut App) {apply118,3324
pub struct EnterEditAtCursor;EnterEditAtCursor128,3619
impl Effect for EnterEditAtCursor {EnterEditAtCursor129,3649
fn apply(&self, app: &mut App) {apply130,3685
pub struct TogglePruneEmpty;TogglePruneEmpty148,4184
impl Effect for TogglePruneEmpty {TogglePruneEmpty149,4213
fn apply(&self, app: &mut App) {apply150,4248
pub struct ToggleCatExpand(pub String);ToggleCatExpand157,4399
impl Effect for ToggleCatExpand {ToggleCatExpand158,4439
fn apply(&self, app: &mut App) {apply159,4473
pub struct RemoveItem {RemoveItem167,4648
pub category: String,category168,4672
pub item: String,item169,4698
impl Effect for RemoveItem {RemoveItem171,4722
fn apply(&self, app: &mut App) {apply172,4751
pub struct RemoveCategory(pub String);RemoveCategory178,4882
impl Effect for RemoveCategory {RemoveCategory179,4921
fn apply(&self, app: &mut App) {apply180,4954
pub struct CreateView(pub String);CreateView188,5268
impl Effect for CreateView {CreateView189,5303
fn apply(&self, app: &mut App) {apply190,5332
pub struct DeleteView(pub String);DeleteView196,5438
impl Effect for DeleteView {DeleteView197,5473
fn apply(&self, app: &mut App) {apply198,5502
pub struct SwitchView(pub String);SwitchView204,5616
impl Effect for SwitchView {SwitchView205,5651
fn apply(&self, app: &mut App) {apply206,5680
pub struct ViewBack;ViewBack221,6153
impl Effect for ViewBack {ViewBack222,6174
fn apply(&self, app: &mut App) {apply223,6201
pub struct ViewForward;ViewForward238,6714
impl Effect for ViewForward {ViewForward239,6738
fn apply(&self, app: &mut App) {apply240,6768
pub struct SetAxis {SetAxis254,7201
pub category: String,category255,7222
pub axis: Axis,axis256,7248
impl Effect for SetAxis {SetAxis258,7270
fn apply(&self, app: &mut App) {apply259,7296
pub struct SetPageSelection {SetPageSelection267,7461
pub category: String,category268,7491
pub item: String,item269,7517
impl Effect for SetPageSelection {SetPageSelection271,7541
fn apply(&self, app: &mut App) {apply272,7576
pub struct ToggleGroup {ToggleGroup280,7752
pub category: String,category281,7777
pub group: String,group282,7803
impl Effect for ToggleGroup {ToggleGroup284,7828
fn apply(&self, app: &mut App) {apply285,7858
pub struct HideItem {HideItem293,8038
pub category: String,category294,8060
pub item: String,item295,8086
impl Effect for HideItem {HideItem297,8110
fn apply(&self, app: &mut App) {apply298,8137
pub struct ShowItem {ShowItem306,8304
pub category: String,category307,8326
pub item: String,item308,8352
impl Effect for ShowItem {ShowItem310,8376
fn apply(&self, app: &mut App) {apply311,8403
pub struct TransposeAxes;TransposeAxes319,8570
impl Effect for TransposeAxes {TransposeAxes320,8596
fn apply(&self, app: &mut App) {apply321,8628
pub struct CycleAxis(pub String);CycleAxis327,8748
impl Effect for CycleAxis {CycleAxis328,8782
fn apply(&self, app: &mut App) {apply329,8810
pub struct SetNumberFormat(pub String);SetNumberFormat335,8933
impl Effect for SetNumberFormat {SetNumberFormat336,8973
fn apply(&self, app: &mut App) {apply337,9007
pub struct SetSelected(pub usize, pub usize);SetSelected345,9353
impl Effect for SetSelected {SetSelected346,9399
fn apply(&self, app: &mut App) {apply347,9429
pub struct SetRowOffset(pub usize);SetRowOffset353,9560
impl Effect for SetRowOffset {SetRowOffset354,9596
fn apply(&self, app: &mut App) {apply355,9627
pub struct SetColOffset(pub usize);SetColOffset361,9750
impl Effect for SetColOffset {SetColOffset362,9786
fn apply(&self, app: &mut App) {apply363,9817
pub struct ChangeMode(pub AppMode);ChangeMode371,10154
impl Effect for ChangeMode {ChangeMode372,10190
fn apply(&self, app: &mut App) {apply373,10219
fn changes_mode(&self) -> bool {changes_mode376,10297
pub struct SetStatus(pub String);SetStatus382,10373
impl Effect for SetStatus {SetStatus383,10407
fn apply(&self, app: &mut App) {apply384,10435
pub struct MarkDirty;MarkDirty390,10539
impl Effect for MarkDirty {MarkDirty391,10561
fn apply(&self, app: &mut App) {apply392,10589
pub struct SetYanked(pub Option<CellValue>);SetYanked398,10678
impl Effect for SetYanked {SetYanked399,10723
fn apply(&self, app: &mut App) {apply400,10751
pub struct SetSearchQuery(pub String);SetSearchQuery406,10851
impl Effect for SetSearchQuery {SetSearchQuery407,10890
fn apply(&self, app: &mut App) {apply408,10923
pub struct SetSearchMode(pub bool);SetSearchMode414,11029
impl Effect for SetSearchMode {SetSearchMode415,11065
fn apply(&self, app: &mut App) {apply416,11097
pub struct SetBuffer {SetBuffer423,11229
pub name: String,name424,11252
pub value: String,value425,11274
impl Effect for SetBuffer {SetBuffer427,11299
fn apply(&self, app: &mut App) {apply428,11327
pub struct SetTileCatIdx(pub usize);SetTileCatIdx439,11655
impl Effect for SetTileCatIdx {SetTileCatIdx440,11692
fn apply(&self, app: &mut App) {apply441,11724
pub struct StartDrill(pub Vec<(CellKey, CellValue)>);StartDrill449,11923
impl Effect for StartDrill {StartDrill450,11977
fn apply(&self, app: &mut App) {apply451,12006
pub struct ApplyAndClearDrill;ApplyAndClearDrill461,12321
impl Effect for ApplyAndClearDrill {ApplyAndClearDrill462,12352
fn apply(&self, app: &mut App) {apply463,12389
pub struct SetDrillPendingEdit {SetDrillPendingEdit523,14762
pub record_idx: usize,record_idx524,14795
pub col_name: String,col_name525,14822
pub new_value: String,new_value526,14848
impl Effect for SetDrillPendingEdit {SetDrillPendingEdit528,14877
fn apply(&self, app: &mut App) {apply529,14915
pub struct Save;Save542,15401
impl Effect for Save {Save543,15418
fn apply(&self, app: &mut App) {apply544,15441
pub struct SaveAs(pub PathBuf);SaveAs562,16006
impl Effect for SaveAs {SaveAs563,16038
fn apply(&self, app: &mut App) {apply564,16063
pub struct WizardKey {WizardKey582,16679
pub key_code: crossterm::event::KeyCode,key_code583,16702
impl Effect for WizardKey {WizardKey585,16749
fn apply(&self, app: &mut App) {apply586,16777
pub struct StartImportWizard(pub String);StartImportWizard712,22429
impl Effect for StartImportWizard {StartImportWizard713,22471
fn apply(&self, app: &mut App) {apply714,22507
pub struct ExportCsv(pub PathBuf);ExportCsv733,23142
impl Effect for ExportCsv {ExportCsv734,23177
fn apply(&self, app: &mut App) {apply735,23205
pub struct LoadModel(pub PathBuf);LoadModel750,23693
impl Effect for LoadModel {LoadModel751,23728
fn apply(&self, app: &mut App) {apply752,23756
pub struct ImportJsonHeadless {ImportJsonHeadless768,24268
pub path: PathBuf,path769,24300
pub model_name: Option<String>,model_name770,24323
pub array_path: Option<String>,array_path771,24359
impl Effect for ImportJsonHeadless {ImportJsonHeadless773,24397
fn apply(&self, app: &mut App) {apply774,24434
pub struct SetPanelOpen {SetPanelOpen878,28005
pub panel: Panel,panel879,28031
pub open: bool,open880,28053
pub enum Panel {Panel884,28106
Formula,Formula885,28123
Category,Category886,28136
View,View887,28150
impl Panel {Panel890,28163
pub fn mode(self) -> AppMode {mode891,28176
impl Effect for SetPanelOpen {SetPanelOpen900,28406
fn apply(&self, app: &mut App) {apply901,28437
pub struct SetPanelCursor {SetPanelCursor911,28731
pub panel: Panel,panel912,28759
pub cursor: usize,cursor913,28781
impl Effect for SetPanelCursor {SetPanelCursor915,28806
fn apply(&self, app: &mut App) {apply916,28839
pub fn mark_dirty() -> Box<dyn Effect> {mark_dirty927,29301
pub fn set_status(msg: impl Into<String>) -> Box<dyn Effect> {set_status931,29369
pub fn change_mode(mode: AppMode) -> Box<dyn Effect> {change_mode935,29471
pub fn set_selected(row: usize, col: usize) -> Box<dyn Effect> {set_selected939,29560
pub struct HelpPageNext;HelpPageNext946,29870
impl Effect for HelpPageNext {HelpPageNext947,29895
fn apply(&self, app: &mut App) {apply948,29926
pub struct HelpPagePrev;HelpPagePrev955,30125
impl Effect for HelpPagePrev {HelpPagePrev956,30150
fn apply(&self, app: &mut App) {apply957,30181
pub struct HelpPageSet(pub usize);HelpPageSet963,30301
impl Effect for HelpPageSet {HelpPageSet964,30336
fn apply(&self, app: &mut App) {apply965,30366
pub fn help_page_next() -> Box<dyn Effect> {help_page_next970,30444
pub fn help_page_prev() -> Box<dyn Effect> {help_page_prev974,30519
pub fn help_page_set(page: usize) -> Box<dyn Effect> {help_page_set978,30594
mod tests {tests983,30697
fn test_app() -> App {test_app988,30813
fn add_category_effect() {add_category_effect1002,31444
fn add_item_to_existing_category() {add_item_to_existing_category1009,31653
fn add_item_to_nonexistent_category_sets_status() {add_item_to_nonexistent_category_sets_status1028,32148
fn set_cell_and_clear_cell() {set_cell_and_clear_cell1039,32457
fn add_formula_valid() {add_formula_valid1053,32950
fn add_formula_adds_target_item_to_category() {add_formula_adds_target_item_to_category1067,33491
fn add_formula_to_measure_shows_in_effective_items() {add_formula_to_measure_shows_in_effective_items1100,34562
fn add_formula_invalid_sets_error_status() {add_formula_invalid_sets_error_status1126,35512
fn remove_formula_effect() {remove_formula_effect1137,35829
fn switch_view_pushes_to_back_stack() {switch_view_pushes_to_back_stack1156,36530
fn switch_view_to_same_does_not_push_stack() {switch_view_to_same_does_not_push_stack1170,37054
fn view_back_and_forward() {view_back_and_forward1177,37266
fn view_back_with_empty_stack_is_noop() {view_back_with_empty_stack_is_noop1199,38100
fn create_and_delete_view() {create_and_delete_view1207,38342
fn set_axis_effect() {set_axis_effect1217,38667
fn transpose_axes_effect() {transpose_axes_effect1228,38949
fn set_selected_effect() {set_selected_effect1266,40173
fn set_row_and_col_offset() {set_row_and_col_offset1273,40365
fn change_mode_effect() {change_mode_effect1284,40835
fn set_buffer_empty_clears() {set_buffer_empty_clears1294,41199
fn set_status_effect() {set_status_effect1307,41585
fn mark_dirty_effect() {mark_dirty_effect1314,41768
fn set_yanked_effect() {set_yanked_effect1322,41942
fn set_search_query_and_mode() {set_search_query_and_mode1329,42153
fn set_buffer_normal_key() {set_buffer_normal_key1342,42664
fn set_buffer_search_writes_to_search_query() {set_buffer_search_writes_to_search_query1353,42947
fn set_panel_open_and_cursor() {set_panel_open_and_cursor1367,43487
fn set_tile_cat_idx_effect() {set_tile_cat_idx_effect1399,44215
fn help_page_navigation() {help_page_navigation1408,44561
fn help_page_prev_clamps_at_zero() {help_page_prev_clamps_at_zero1422,44990
fn start_drill_and_apply_clear_drill_with_no_edits() {start_drill_and_apply_clear_drill_with_no_edits1431,45343
fn apply_and_clear_drill_with_value_edit() {apply_and_clear_drill_with_value_edit1448,45952
fn apply_and_clear_drill_with_coord_rename() {apply_and_clear_drill_with_coord_rename1475,46849
fn apply_and_clear_drill_empty_value_clears_cell() {apply_and_clear_drill_empty_value_clears_cell1517,48255
fn toggle_prune_empty_effect() {toggle_prune_empty_effect1543,49214
fn toggle_cat_expand_effect() {toggle_cat_expand_effect1553,49585
fn remove_item_and_category() {remove_item_and_category1563,49957
fn set_number_format_effect() {set_number_format_effect1587,50747
fn set_page_selection_effect() {set_page_selection_effect1596,51148
fn hide_and_show_item_effects() {hide_and_show_item_effects1609,51645
fn toggle_group_effect() {toggle_group_effect1629,52335
fn cycle_axis_effect() {cycle_axis_effect1656,53171
fn save_without_file_path_shows_status() {save_without_file_path_shows_status1667,53637
fn panel_mode_mapping() {panel_mode_mapping1676,54000
pub struct EnterEditAtCursor {EnterEditAtCursor133,3880
pub target_mode: AppMode,target_mode134,3911
impl Effect for EnterEditAtCursor {EnterEditAtCursor136,3943
fn apply(&self, app: &mut App) {apply137,3979
pub struct TogglePruneEmpty;TogglePruneEmpty153,4532
impl Effect for TogglePruneEmpty {TogglePruneEmpty154,4561
fn apply(&self, app: &mut App) {apply155,4596
pub struct ToggleCatExpand(pub String);ToggleCatExpand162,4747
impl Effect for ToggleCatExpand {ToggleCatExpand163,4787
fn apply(&self, app: &mut App) {apply164,4821
pub struct RemoveItem {RemoveItem172,4996
pub category: String,category173,5020
pub item: String,item174,5046
impl Effect for RemoveItem {RemoveItem176,5070
fn apply(&self, app: &mut App) {apply177,5099
pub struct RemoveCategory(pub String);RemoveCategory183,5230
impl Effect for RemoveCategory {RemoveCategory184,5269
fn apply(&self, app: &mut App) {apply185,5302
pub struct CreateView(pub String);CreateView193,5616
impl Effect for CreateView {CreateView194,5651
fn apply(&self, app: &mut App) {apply195,5680
pub struct DeleteView(pub String);DeleteView201,5786
impl Effect for DeleteView {DeleteView202,5821
fn apply(&self, app: &mut App) {apply203,5850
pub struct SwitchView(pub String);SwitchView209,5964
impl Effect for SwitchView {SwitchView210,5999
fn apply(&self, app: &mut App) {apply211,6028
pub struct ViewBack;ViewBack226,6501
impl Effect for ViewBack {ViewBack227,6522
fn apply(&self, app: &mut App) {apply228,6549
pub struct ViewForward;ViewForward243,7062
impl Effect for ViewForward {ViewForward244,7086
fn apply(&self, app: &mut App) {apply245,7116
pub struct SetAxis {SetAxis259,7549
pub category: String,category260,7570
pub axis: Axis,axis261,7596
impl Effect for SetAxis {SetAxis263,7618
fn apply(&self, app: &mut App) {apply264,7644
pub struct SetPageSelection {SetPageSelection272,7809
pub category: String,category273,7839
pub item: String,item274,7865
impl Effect for SetPageSelection {SetPageSelection276,7889
fn apply(&self, app: &mut App) {apply277,7924
pub struct ToggleGroup {ToggleGroup285,8100
pub category: String,category286,8125
pub group: String,group287,8151
impl Effect for ToggleGroup {ToggleGroup289,8176
fn apply(&self, app: &mut App) {apply290,8206
pub struct HideItem {HideItem298,8386
pub category: String,category299,8408
pub item: String,item300,8434
impl Effect for HideItem {HideItem302,8458
fn apply(&self, app: &mut App) {apply303,8485
pub struct ShowItem {ShowItem311,8652
pub category: String,category312,8674
pub item: String,item313,8700
impl Effect for ShowItem {ShowItem315,8724
fn apply(&self, app: &mut App) {apply316,8751
pub struct TransposeAxes;TransposeAxes324,8918
impl Effect for TransposeAxes {TransposeAxes325,8944
fn apply(&self, app: &mut App) {apply326,8976
pub struct CycleAxis(pub String);CycleAxis332,9096
impl Effect for CycleAxis {CycleAxis333,9130
fn apply(&self, app: &mut App) {apply334,9158
pub struct SetNumberFormat(pub String);SetNumberFormat340,9281
impl Effect for SetNumberFormat {SetNumberFormat341,9321
fn apply(&self, app: &mut App) {apply342,9355
pub struct SetSelected(pub usize, pub usize);SetSelected350,9701
impl Effect for SetSelected {SetSelected351,9747
fn apply(&self, app: &mut App) {apply352,9777
pub struct SetRowOffset(pub usize);SetRowOffset358,9908
impl Effect for SetRowOffset {SetRowOffset359,9944
fn apply(&self, app: &mut App) {apply360,9975
pub struct SetColOffset(pub usize);SetColOffset366,10098
impl Effect for SetColOffset {SetColOffset367,10134
fn apply(&self, app: &mut App) {apply368,10165
pub struct ChangeMode(pub AppMode);ChangeMode376,10502
impl Effect for ChangeMode {ChangeMode377,10538
fn apply(&self, app: &mut App) {apply378,10567
fn changes_mode(&self) -> bool {changes_mode381,10645
pub struct SetStatus(pub String);SetStatus387,10721
impl Effect for SetStatus {SetStatus388,10755
fn apply(&self, app: &mut App) {apply389,10783
pub struct MarkDirty;MarkDirty395,10887
impl Effect for MarkDirty {MarkDirty396,10909
fn apply(&self, app: &mut App) {apply397,10937
pub struct SetYanked(pub Option<CellValue>);SetYanked403,11026
impl Effect for SetYanked {SetYanked404,11071
fn apply(&self, app: &mut App) {apply405,11099
pub struct SetSearchQuery(pub String);SetSearchQuery411,11199
impl Effect for SetSearchQuery {SetSearchQuery412,11238
fn apply(&self, app: &mut App) {apply413,11271
pub struct SetSearchMode(pub bool);SetSearchMode419,11377
impl Effect for SetSearchMode {SetSearchMode420,11413
fn apply(&self, app: &mut App) {apply421,11445
pub struct SetBuffer {SetBuffer428,11577
pub name: String,name429,11600
pub value: String,value430,11622
impl Effect for SetBuffer {SetBuffer432,11647
fn apply(&self, app: &mut App) {apply433,11675
pub struct SetTileCatIdx(pub usize);SetTileCatIdx444,12003
impl Effect for SetTileCatIdx {SetTileCatIdx445,12040
fn apply(&self, app: &mut App) {apply446,12072
pub struct StartDrill(pub Vec<(CellKey, CellValue)>);StartDrill454,12271
impl Effect for StartDrill {StartDrill455,12325
fn apply(&self, app: &mut App) {apply456,12354
pub struct ApplyAndClearDrill;ApplyAndClearDrill466,12669
impl Effect for ApplyAndClearDrill {ApplyAndClearDrill467,12700
fn apply(&self, app: &mut App) {apply468,12737
pub struct SetDrillPendingEdit {SetDrillPendingEdit528,15110
pub record_idx: usize,record_idx529,15143
pub col_name: String,col_name530,15170
pub new_value: String,new_value531,15196
impl Effect for SetDrillPendingEdit {SetDrillPendingEdit533,15225
fn apply(&self, app: &mut App) {apply534,15263
pub struct Save;Save547,15749
impl Effect for Save {Save548,15766
fn apply(&self, app: &mut App) {apply549,15789
pub struct SaveAs(pub PathBuf);SaveAs567,16354
impl Effect for SaveAs {SaveAs568,16386
fn apply(&self, app: &mut App) {apply569,16411
pub struct WizardKey {WizardKey587,17027
pub key_code: crossterm::event::KeyCode,key_code588,17050
impl Effect for WizardKey {WizardKey590,17097
fn apply(&self, app: &mut App) {apply591,17125
pub struct StartImportWizard(pub String);StartImportWizard717,22777
impl Effect for StartImportWizard {StartImportWizard718,22819
fn apply(&self, app: &mut App) {apply719,22855
pub struct ExportCsv(pub PathBuf);ExportCsv738,23490
impl Effect for ExportCsv {ExportCsv739,23525
fn apply(&self, app: &mut App) {apply740,23553
pub struct LoadModel(pub PathBuf);LoadModel755,24041
impl Effect for LoadModel {LoadModel756,24076
fn apply(&self, app: &mut App) {apply757,24104
pub struct ImportJsonHeadless {ImportJsonHeadless773,24616
pub path: PathBuf,path774,24648
pub model_name: Option<String>,model_name775,24671
pub array_path: Option<String>,array_path776,24707
impl Effect for ImportJsonHeadless {ImportJsonHeadless778,24745
fn apply(&self, app: &mut App) {apply779,24782
pub struct SetPanelOpen {SetPanelOpen883,28353
pub panel: Panel,panel884,28379
pub open: bool,open885,28401
pub enum Panel {Panel889,28454
Formula,Formula890,28471
Category,Category891,28484
View,View892,28498
impl Panel {Panel895,28511
pub fn mode(self) -> AppMode {mode896,28524
impl Effect for SetPanelOpen {SetPanelOpen905,28754
fn apply(&self, app: &mut App) {apply906,28785
pub struct SetPanelCursor {SetPanelCursor916,29079
pub panel: Panel,panel917,29107
pub cursor: usize,cursor918,29129
impl Effect for SetPanelCursor {SetPanelCursor920,29154
fn apply(&self, app: &mut App) {apply921,29187
pub fn mark_dirty() -> Box<dyn Effect> {mark_dirty932,29649
pub fn set_status(msg: impl Into<String>) -> Box<dyn Effect> {set_status936,29717
pub fn change_mode(mode: AppMode) -> Box<dyn Effect> {change_mode940,29819
pub fn set_selected(row: usize, col: usize) -> Box<dyn Effect> {set_selected944,29908
pub struct HelpPageNext;HelpPageNext951,30218
impl Effect for HelpPageNext {HelpPageNext952,30243
fn apply(&self, app: &mut App) {apply953,30274
pub struct HelpPagePrev;HelpPagePrev960,30473
impl Effect for HelpPagePrev {HelpPagePrev961,30498
fn apply(&self, app: &mut App) {apply962,30529
pub struct HelpPageSet(pub usize);HelpPageSet968,30649
impl Effect for HelpPageSet {HelpPageSet969,30684
fn apply(&self, app: &mut App) {apply970,30714
pub fn help_page_next() -> Box<dyn Effect> {help_page_next975,30792
pub fn help_page_prev() -> Box<dyn Effect> {help_page_prev979,30867
pub fn help_page_set(page: usize) -> Box<dyn Effect> {help_page_set983,30942
mod tests {tests988,31045
fn test_app() -> App {test_app993,31161
fn add_category_effect() {add_category_effect1007,31792
fn add_item_to_existing_category() {add_item_to_existing_category1014,32001
fn add_item_to_nonexistent_category_sets_status() {add_item_to_nonexistent_category_sets_status1033,32496
fn set_cell_and_clear_cell() {set_cell_and_clear_cell1044,32805
fn add_formula_valid() {add_formula_valid1058,33298
fn add_formula_adds_target_item_to_category() {add_formula_adds_target_item_to_category1072,33839
fn add_formula_to_measure_shows_in_effective_items() {add_formula_to_measure_shows_in_effective_items1105,34910
fn add_formula_invalid_sets_error_status() {add_formula_invalid_sets_error_status1131,35860
fn remove_formula_effect() {remove_formula_effect1142,36177
fn switch_view_pushes_to_back_stack() {switch_view_pushes_to_back_stack1161,36878
fn switch_view_to_same_does_not_push_stack() {switch_view_to_same_does_not_push_stack1175,37402
fn view_back_and_forward() {view_back_and_forward1182,37614
fn view_back_with_empty_stack_is_noop() {view_back_with_empty_stack_is_noop1204,38448
fn create_and_delete_view() {create_and_delete_view1212,38690
fn set_axis_effect() {set_axis_effect1222,39015
fn transpose_axes_effect() {transpose_axes_effect1233,39297
fn set_selected_effect() {set_selected_effect1271,40521
fn set_row_and_col_offset() {set_row_and_col_offset1278,40713
fn change_mode_effect() {change_mode_effect1289,41183
fn enter_edit_at_cursor_uses_target_mode_not_app_mode() {enter_edit_at_cursor_uses_target_mode_not_app_mode1301,41700
fn set_buffer_empty_clears() {set_buffer_empty_clears1334,42863
fn set_status_effect() {set_status_effect1347,43249
fn mark_dirty_effect() {mark_dirty_effect1354,43432
fn set_yanked_effect() {set_yanked_effect1362,43606
fn set_search_query_and_mode() {set_search_query_and_mode1369,43817
fn set_buffer_normal_key() {set_buffer_normal_key1382,44328
fn set_buffer_search_writes_to_search_query() {set_buffer_search_writes_to_search_query1393,44611
fn set_panel_open_and_cursor() {set_panel_open_and_cursor1407,45151
fn set_tile_cat_idx_effect() {set_tile_cat_idx_effect1439,45879
fn help_page_navigation() {help_page_navigation1448,46225
fn help_page_prev_clamps_at_zero() {help_page_prev_clamps_at_zero1462,46654
fn start_drill_and_apply_clear_drill_with_no_edits() {start_drill_and_apply_clear_drill_with_no_edits1471,47007
fn apply_and_clear_drill_with_value_edit() {apply_and_clear_drill_with_value_edit1488,47616
fn apply_and_clear_drill_with_coord_rename() {apply_and_clear_drill_with_coord_rename1515,48513
fn apply_and_clear_drill_empty_value_clears_cell() {apply_and_clear_drill_empty_value_clears_cell1557,49919
fn toggle_prune_empty_effect() {toggle_prune_empty_effect1583,50878
fn toggle_cat_expand_effect() {toggle_cat_expand_effect1593,51249
fn remove_item_and_category() {remove_item_and_category1603,51621
fn set_number_format_effect() {set_number_format_effect1627,52411
fn set_page_selection_effect() {set_page_selection_effect1636,52812
fn hide_and_show_item_effects() {hide_and_show_item_effects1649,53309
fn toggle_group_effect() {toggle_group_effect1669,53999
fn cycle_axis_effect() {cycle_axis_effect1696,54835
fn save_without_file_path_shows_status() {save_without_file_path_shows_status1707,55301
fn panel_mode_mapping() {panel_mode_mapping1716,55664
src/ui/mod.rs,400
pub mod app;app1,0
@ -1434,7 +1436,7 @@ mod tests {tests302,10085
fn parse_axis_recognizes_all_variants() {parse_axis_recognizes_all_variants306,10128
fn parse_axis_rejects_unknown() {parse_axis_rejects_unknown316,10462
src/command/cmd/commit.rs,2750
src/command/cmd/commit.rs,2939
mod tests {tests10,266
fn commit_formula_with_categories_adds_formula() {commit_formula_with_categories_adds_formula18,426
fn commit_formula_without_regular_categories_targets_measure() {commit_formula_without_regular_categories_targets_measure41,1294
@ -1442,39 +1444,41 @@ mod tests {tests10,266
fn commit_category_add_with_empty_buffer_returns_to_panel() {commit_category_add_with_empty_buffer_returns_to_panel79,2622
fn commit_item_add_with_name_produces_add_item() {commit_item_add_with_name_produces_add_item96,3221
fn commit_item_add_outside_item_add_mode_returns_empty() {commit_item_add_outside_item_add_mode_returns_empty112,3853
fn commit_export_produces_export_and_normal_mode() {commit_export_produces_export_and_normal_mode122,4176
fn commit_regular_cell_value(key: &CellKey, value: &str, effects: &mut Vec<Box<dyn Effect>>) {commit_regular_cell_value143,5139
fn stage_drill_edit(record_idx: usize, col_name: String, value: &str) -> Box<dyn Effect> {stage_drill_edit158,5735
fn commit_plain_records_edit(commit_plain_records_edit167,6034
fn commit_cell_value(commit_cell_value208,7063
pub enum AdvanceDir {AdvanceDir228,7649
Down,Down230,7741
Right,Right232,7800
pub struct CommitAndAdvance {CommitAndAdvance238,7981
pub key: CellKey,key239,8011
pub value: String,value240,8033
pub advance: AdvanceDir,advance241,8056
pub cursor: CursorState,cursor242,8085
impl Cmd for CommitAndAdvance {CommitAndAdvance244,8116
fn name(&self) -> &'static str {name245,8148
fn execute(&self, ctx: &CmdContext) -> Vec<Box<dyn Effect>> {execute251,8343
pub struct CommitFormula;CommitFormula297,10180
impl Cmd for CommitFormula {CommitFormula298,10206
fn name(&self) -> &'static str {name299,10235
fn execute(&self, ctx: &CmdContext) -> Vec<Box<dyn Effect>> {execute302,10303
fn commit_add_from_buffer(commit_add_from_buffer322,11120
pub struct CommitCategoryAdd;CommitCategoryAdd345,11827
impl Cmd for CommitCategoryAdd {CommitCategoryAdd346,11857
fn name(&self) -> &'static str {name347,11890
fn execute(&self, ctx: &CmdContext) -> Vec<Box<dyn Effect>> {execute350,11963
pub struct CommitItemAdd;CommitItemAdd362,12340
impl Cmd for CommitItemAdd {CommitItemAdd363,12366
fn name(&self) -> &'static str {name364,12395
fn execute(&self, ctx: &CmdContext) -> Vec<Box<dyn Effect>> {execute367,12464
pub struct CommitExport;CommitExport389,13085
impl Cmd for CommitExport {CommitExport390,13110
fn name(&self) -> &'static str {name391,13138
fn execute(&self, ctx: &CmdContext) -> Vec<Box<dyn Effect>> {execute394,13205
fn commit_and_advance_threads_edit_mode_to_enter_edit_at_cursor() {commit_and_advance_threads_edit_mode_to_enter_edit_at_cursor125,4399
fn commit_export_produces_export_and_normal_mode() {commit_export_produces_export_and_normal_mode151,5424
fn commit_regular_cell_value(key: &CellKey, value: &str, effects: &mut Vec<Box<dyn Effect>>) {commit_regular_cell_value172,6387
fn stage_drill_edit(record_idx: usize, col_name: String, value: &str) -> Box<dyn Effect> {stage_drill_edit187,6983
fn commit_plain_records_edit(commit_plain_records_edit196,7282
fn commit_cell_value(commit_cell_value237,8311
pub enum AdvanceDir {AdvanceDir257,8897
Down,Down259,8989
Right,Right261,9048
pub struct CommitAndAdvance {CommitAndAdvance272,9491
pub key: CellKey,key273,9521
pub value: String,value274,9543
pub advance: AdvanceDir,advance275,9566
pub cursor: CursorState,cursor276,9595
pub edit_mode: AppMode,edit_mode277,9624
impl Cmd for CommitAndAdvance {CommitAndAdvance279,9654
fn name(&self) -> &'static str {name280,9686
fn execute(&self, ctx: &CmdContext) -> Vec<Box<dyn Effect>> {execute286,9881
pub struct CommitFormula;CommitFormula334,11779
impl Cmd for CommitFormula {CommitFormula335,11805
fn name(&self) -> &'static str {name336,11834
fn execute(&self, ctx: &CmdContext) -> Vec<Box<dyn Effect>> {execute339,11902
fn commit_add_from_buffer(commit_add_from_buffer359,12719
pub struct CommitCategoryAdd;CommitCategoryAdd382,13426
impl Cmd for CommitCategoryAdd {CommitCategoryAdd383,13456
fn name(&self) -> &'static str {name384,13489
fn execute(&self, ctx: &CmdContext) -> Vec<Box<dyn Effect>> {execute387,13562
pub struct CommitItemAdd;CommitItemAdd399,13939
impl Cmd for CommitItemAdd {CommitItemAdd400,13965
fn name(&self) -> &'static str {name401,13994
fn execute(&self, ctx: &CmdContext) -> Vec<Box<dyn Effect>> {execute404,14063
pub struct CommitExport;CommitExport426,14684
impl Cmd for CommitExport {CommitExport427,14709
fn name(&self) -> &'static str {name428,14737
fn execute(&self, ctx: &CmdContext) -> Vec<Box<dyn Effect>> {execute431,14804
src/command/cmd/cell.rs,1886
mod tests {tests6,90
@ -1508,9 +1512,10 @@ impl Cmd for SaveCmd {SaveCmd191,5956
fn name(&self) -> &'static str {name192,5979
fn execute(&self, _ctx: &CmdContext) -> Vec<Box<dyn Effect>> {execute195,6037
src/command/cmd/registry.rs,113
pub fn default_registry() -> CmdRegistry {default_registry19,459
macro_rules! reg_jump {reg_jump105,4345
src/command/cmd/registry.rs,193
fn parse_mode_name(s: &str) -> Result<AppMode, String> {parse_mode_name7,208
pub fn default_registry() -> CmdRegistry {default_registry40,1375
macro_rules! reg_jump {reg_jump126,5261
src/command/cmd/effect_cmds.rs,518
mod tests {tests8,162
@ -1791,59 +1796,58 @@ impl Cmd for ExitSearchMode {ExitSearchMode195,6137
fn name(&self) -> &'static str {name196,6167
fn execute(&self, _ctx: &CmdContext) -> Vec<Box<dyn Effect>> {execute199,6237
src/command/cmd/mode.rs,3175
src/command/cmd/mode.rs,3285
mod tests {tests8,151
fn enter_edit_mode_produces_editing_mode() {enter_edit_mode_produces_editing_mode14,275
fn enter_tile_select_with_categories() {enter_tile_select_with_categories29,788
fn enter_tile_select_no_categories() {enter_tile_select_no_categories45,1285
fn enter_export_prompt_sets_mode() {enter_export_prompt_sets_mode56,1621
fn force_quit_always_produces_quit_mode() {force_quit_always_produces_quit_mode70,2055
fn save_and_quit_produces_save_then_quit() {save_and_quit_produces_save_then_quit83,2506
fn edit_or_drill_without_aggregation_enters_edit() {edit_or_drill_without_aggregation_enters_edit96,2993
fn enter_search_mode_sets_flag_and_clears_query() {enter_search_mode_sets_flag_and_clears_query107,3393
pub struct EnterMode(pub AppMode);EnterMode129,4200
impl Cmd for EnterMode {EnterMode130,4235
fn name(&self) -> &'static str {name131,4260
fn execute(&self, _ctx: &CmdContext) -> Vec<Box<dyn Effect>> {execute134,4324
pub struct ForceQuit;ForceQuit149,4842
impl Cmd for ForceQuit {ForceQuit150,4864
fn name(&self) -> &'static str {name151,4889
fn execute(&self, _ctx: &CmdContext) -> Vec<Box<dyn Effect>> {execute154,4953
pub struct Quit;Quit161,5159
impl Cmd for Quit {Quit162,5176
fn name(&self) -> &'static str {name163,5196
fn execute(&self, ctx: &CmdContext) -> Vec<Box<dyn Effect>> {execute166,5251
pub struct SaveAndQuit;SaveAndQuit179,5597
impl Cmd for SaveAndQuit {SaveAndQuit180,5621
fn name(&self) -> &'static str {name181,5648
fn execute(&self, _ctx: &CmdContext) -> Vec<Box<dyn Effect>> {execute184,5704
pub struct EnterEditMode {EnterEditMode193,6114
pub initial_value: String,initial_value194,6141
impl Cmd for EnterEditMode {EnterEditMode196,6174
fn name(&self) -> &'static str {name197,6203
fn execute(&self, ctx: &CmdContext) -> Vec<Box<dyn Effect>> {execute200,6272
pub struct EditOrDrill;EditOrDrill220,6953
impl Cmd for EditOrDrill {EditOrDrill221,6977
fn name(&self) -> &'static str {name222,7004
fn execute(&self, ctx: &CmdContext) -> Vec<Box<dyn Effect>> {execute225,7071
pub struct EnterEditAtCursorCmd;EnterEditAtCursorCmd254,8262
impl Cmd for EnterEditAtCursorCmd {EnterEditAtCursorCmd255,8295
fn name(&self) -> &'static str {name256,8331
fn execute(&self, _ctx: &CmdContext) -> Vec<Box<dyn Effect>> {execute259,8405
pub struct EnterExportPrompt;EnterExportPrompt266,8578
impl Cmd for EnterExportPrompt {EnterExportPrompt267,8608
fn name(&self) -> &'static str {name268,8641
fn execute(&self, _ctx: &CmdContext) -> Vec<Box<dyn Effect>> {execute271,8714
pub struct EnterSearchMode;EnterSearchMode278,8890
impl Cmd for EnterSearchMode {EnterSearchMode279,8918
fn name(&self) -> &'static str {name280,8949
fn execute(&self, _ctx: &CmdContext) -> Vec<Box<dyn Effect>> {execute283,9009
pub struct EnterTileSelect;EnterTileSelect293,9266
impl Cmd for EnterTileSelect {EnterTileSelect294,9294
fn name(&self) -> &'static str {name295,9325
fn execute(&self, ctx: &CmdContext) -> Vec<Box<dyn Effect>> {execute298,9396
fn enter_tile_select_with_categories() {enter_tile_select_with_categories14,275
fn enter_tile_select_no_categories() {enter_tile_select_no_categories30,772
fn enter_export_prompt_sets_mode() {enter_export_prompt_sets_mode41,1108
fn force_quit_always_produces_quit_mode() {force_quit_always_produces_quit_mode55,1542
fn save_and_quit_produces_save_then_quit() {save_and_quit_produces_save_then_quit68,1993
fn edit_or_drill_without_aggregation_enters_edit() {edit_or_drill_without_aggregation_enters_edit81,2480
fn edit_or_drill_passes_records_editing_mode_through() {edit_or_drill_passes_records_editing_mode_through101,3324
fn enter_edit_at_cursor_cmd_passes_target_mode_to_effect() {enter_edit_at_cursor_cmd_passes_target_mode_to_effect123,4197
fn edit_or_drill_pre_fills_edit_buffer_with_display_value() {edit_or_drill_pre_fills_edit_buffer_with_display_value143,4926
fn enter_search_mode_sets_flag_and_clears_query() {enter_search_mode_sets_flag_and_clears_query161,5554
pub struct EnterMode(pub AppMode);EnterMode183,6361
impl Cmd for EnterMode {EnterMode184,6396
fn name(&self) -> &'static str {name185,6421
fn execute(&self, _ctx: &CmdContext) -> Vec<Box<dyn Effect>> {execute188,6485
pub struct ForceQuit;ForceQuit203,7003
impl Cmd for ForceQuit {ForceQuit204,7025
fn name(&self) -> &'static str {name205,7050
fn execute(&self, _ctx: &CmdContext) -> Vec<Box<dyn Effect>> {execute208,7114
pub struct Quit;Quit215,7320
impl Cmd for Quit {Quit216,7337
fn name(&self) -> &'static str {name217,7357
fn execute(&self, ctx: &CmdContext) -> Vec<Box<dyn Effect>> {execute220,7412
pub struct SaveAndQuit;SaveAndQuit233,7758
impl Cmd for SaveAndQuit {SaveAndQuit234,7782
fn name(&self) -> &'static str {name235,7809
fn execute(&self, _ctx: &CmdContext) -> Vec<Box<dyn Effect>> {execute238,7865
pub struct EditOrDrill {EditOrDrill254,8707
pub edit_mode: AppMode,edit_mode255,8732
impl Cmd for EditOrDrill {EditOrDrill257,8762
fn name(&self) -> &'static str {name258,8789
fn execute(&self, ctx: &CmdContext) -> Vec<Box<dyn Effect>> {execute261,8856
pub struct EnterEditAtCursorCmd {EnterEditAtCursorCmd295,10299
pub target_mode: AppMode,target_mode296,10333
impl Cmd for EnterEditAtCursorCmd {EnterEditAtCursorCmd298,10365
fn name(&self) -> &'static str {name299,10401
fn execute(&self, _ctx: &CmdContext) -> Vec<Box<dyn Effect>> {execute302,10475
pub struct EnterExportPrompt;EnterExportPrompt311,10711
impl Cmd for EnterExportPrompt {EnterExportPrompt312,10741
fn name(&self) -> &'static str {name313,10774
fn execute(&self, _ctx: &CmdContext) -> Vec<Box<dyn Effect>> {execute316,10847
pub struct EnterSearchMode;EnterSearchMode323,11023
impl Cmd for EnterSearchMode {EnterSearchMode324,11051
fn name(&self) -> &'static str {name325,11082
fn execute(&self, _ctx: &CmdContext) -> Vec<Box<dyn Effect>> {execute328,11142
pub struct EnterTileSelect;EnterTileSelect338,11399
impl Cmd for EnterTileSelect {EnterTileSelect339,11427
fn name(&self) -> &'static str {name340,11458
fn execute(&self, ctx: &CmdContext) -> Vec<Box<dyn Effect>> {execute343,11529
src/command/keymap.rs,5088
src/command/keymap.rs,5093
fn format_key_label(code: &KeyCode) -> String {format_key_label13,301
pub enum KeyPattern {KeyPattern38,1303
Key(KeyCode, KeyModifiers),Key40,1359
@ -1904,29 +1908,29 @@ impl KeymapSet {KeymapSet289,9804
pub fn dispatch(dispatch306,10224
pub fn dispatch_transient(dispatch_transient318,10642
pub fn default_keymaps() -> Self {default_keymaps329,10948
mod tests {tests930,33396
fn lookup_exact_match() {lookup_exact_match936,33587
fn lookup_exact_with_ctrl() {lookup_exact_with_ctrl944,33877
fn lookup_char_falls_back_to_none_mods() {lookup_char_falls_back_to_none_mods952,34175
fn lookup_non_char_does_not_fall_back_to_none_mods() {lookup_non_char_does_not_fall_back_to_none_mods962,34633
fn lookup_char_falls_to_any_char() {lookup_char_falls_to_any_char972,35046
fn lookup_non_char_skips_any_char() {lookup_non_char_skips_any_char986,35414
fn lookup_any_matches_everything() {lookup_any_matches_everything995,35722
fn lookup_exact_takes_priority_over_any_char() {lookup_exact_takes_priority_over_any_char1009,36067
fn lookup_any_char_takes_priority_over_any() {lookup_any_char_takes_priority_over_any1024,36509
fn lookup_non_char_falls_to_any_not_any_char() {lookup_non_char_falls_to_any_not_any_char1039,36921
fn lookup_ctrl_char_with_only_none_binding_falls_through() {lookup_ctrl_char_with_only_none_binding_falls_through1054,37330
fn mode_key_normal_no_search() {mode_key_normal_no_search1065,37836
fn mode_key_normal_with_search_overrides() {mode_key_normal_with_search_overrides1071,38005
fn mode_key_help() {mode_key_help1077,38189
fn mode_key_quit_returns_none() {mode_key_quit_returns_none1083,38342
fn lookup_returns_prefix_binding() {lookup_returns_prefix_binding1091,38669
fn lookup_returns_sequence_binding() {lookup_returns_sequence_binding1100,39000
fn default_keymaps_has_all_modes() {default_keymaps_has_all_modes1114,39551
fn normal_mode_has_basic_movement() {normal_mode_has_basic_movement1144,40436
fn editing_mode_has_any_char_and_esc() {editing_mode_has_any_char_and_esc1168,41220
fn search_mode_has_any_char_and_esc() {search_mode_has_any_char_and_esc1182,41696
fn import_wizard_has_any_catchall() {import_wizard_has_any_catchall1194,42090
mod tests {tests978,34976
fn lookup_exact_match() {lookup_exact_match984,35167
fn lookup_exact_with_ctrl() {lookup_exact_with_ctrl992,35457
fn lookup_char_falls_back_to_none_mods() {lookup_char_falls_back_to_none_mods1000,35755
fn lookup_non_char_does_not_fall_back_to_none_mods() {lookup_non_char_does_not_fall_back_to_none_mods1010,36213
fn lookup_char_falls_to_any_char() {lookup_char_falls_to_any_char1020,36626
fn lookup_non_char_skips_any_char() {lookup_non_char_skips_any_char1034,36994
fn lookup_any_matches_everything() {lookup_any_matches_everything1043,37302
fn lookup_exact_takes_priority_over_any_char() {lookup_exact_takes_priority_over_any_char1057,37647
fn lookup_any_char_takes_priority_over_any() {lookup_any_char_takes_priority_over_any1072,38089
fn lookup_non_char_falls_to_any_not_any_char() {lookup_non_char_falls_to_any_not_any_char1087,38501
fn lookup_ctrl_char_with_only_none_binding_falls_through() {lookup_ctrl_char_with_only_none_binding_falls_through1102,38910
fn mode_key_normal_no_search() {mode_key_normal_no_search1113,39416
fn mode_key_normal_with_search_overrides() {mode_key_normal_with_search_overrides1119,39585
fn mode_key_help() {mode_key_help1125,39769
fn mode_key_quit_returns_none() {mode_key_quit_returns_none1131,39922
fn lookup_returns_prefix_binding() {lookup_returns_prefix_binding1139,40249
fn lookup_returns_sequence_binding() {lookup_returns_sequence_binding1148,40580
fn default_keymaps_has_all_modes() {default_keymaps_has_all_modes1162,41131
fn normal_mode_has_basic_movement() {normal_mode_has_basic_movement1192,42016
fn editing_mode_has_any_char_and_esc() {editing_mode_has_any_char_and_esc1216,42800
fn search_mode_has_any_char_and_esc() {search_mode_has_any_char_and_esc1230,43276
fn import_wizard_has_any_catchall() {import_wizard_has_any_catchall1242,43670
src/command/mod.rs,80
pub mod cmd;cmd8,323