diff options
| author | Aram Drevekenin <aram@poor.dev> | 2024-07-18 10:45:42 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-07-18 10:45:42 +0200 |
| commit | 2deffc3289ff05a1429366cfa7cf7195ec27034f (patch) | |
| tree | 5e8af968db1c5bb966bfe25b484c001378ab9351 | |
| parent | docs(changelog): configuration screen (diff) | |
| download | sl0ppij-2deffc3289ff05a1429366cfa7cf7195ec27034f.tar.gz sl0ppij-2deffc3289ff05a1429366cfa7cf7195ec27034f.tar.xz sl0ppij-2deffc3289ff05a1429366cfa7cf7195ec27034f.zip | |
feat(plugins): add stringified layout to switch_session_with_layout (#3503)
| -rw-r--r-- | src/commands.rs | 4 | ||||
| -rw-r--r-- | src/sessions.rs | 2 | ||||
| -rw-r--r-- | zellij-server/src/plugins/zellij_exports.rs | 7 | ||||
| -rw-r--r-- | zellij-server/src/tab/unit/tab_integration_tests.rs | 177 | ||||
| -rw-r--r-- | zellij-utils/src/data.rs | 3 | ||||
| -rw-r--r-- | zellij-utils/src/input/layout.rs | 35 | ||||
| -rw-r--r-- | zellij-utils/src/input/unit/layout_test.rs | 192 | ||||
| -rw-r--r-- | zellij-utils/src/kdl/kdl_layout_parser.rs | 28 | ||||
| -rw-r--r-- | zellij-utils/src/kdl/mod.rs | 18 | ||||
| -rw-r--r-- | zellij-utils/src/plugin_api/event.rs | 5 |
10 files changed, 270 insertions, 201 deletions
diff --git a/src/commands.rs b/src/commands.rs index 796e34e7..01fa1fe0 100644 --- a/src/commands.rs +++ b/src/commands.rs @@ -445,6 +445,10 @@ pub(crate) fn start_client(opts: CliArgs) { config_without_layout.clone(), ), LayoutInfo::Url(url) => Layout::from_url(&url, config_without_layout.clone()), + LayoutInfo::Stringified(stringified_layout) => Layout::from_stringified_layout( + &stringified_layout, + config_without_layout.clone(), + ), }; match new_session_layout { Ok(new_session_layout) => { diff --git a/src/sessions.rs b/src/sessions.rs index 75e8ddf6..3a25daf4 100644 --- a/src/sessions.rs +++ b/src/sessions.rs @@ -64,7 +64,7 @@ pub(crate) fn get_resurrectable_sessions() -> Vec<(String, Duration, Layout)> { }; let layout = match Layout::from_kdl( &raw_layout, - layout_file_name.display().to_string(), + Some(layout_file_name.display().to_string()), None, None, ) { diff --git a/zellij-server/src/plugins/zellij_exports.rs b/zellij-server/src/plugins/zellij_exports.rs index 21b8b01d..0006e048 100644 --- a/zellij-server/src/plugins/zellij_exports.rs +++ b/zellij-server/src/plugins/zellij_exports.rs @@ -922,6 +922,13 @@ fn switch_session( ) -> Result<()> { // pane_id is (id, is_plugin) let err_context = || format!("Failed to switch session"); + if let Some(LayoutInfo::Stringified(stringified_layout)) = layout.as_ref() { + // we verify the stringified layout here to fail early rather than when parsing it at the + // session-switching phase + if let Err(e) = Layout::from_kdl(&stringified_layout, None, None, None) { + return Err(anyhow!("Failed to deserialize layout: {}", e)); + } + } let client_id = env.client_id; let tab_position = tab_position.map(|p| p + 1); // ¯\_()_/¯ let connect_to_session = ConnectToSession { diff --git a/zellij-server/src/tab/unit/tab_integration_tests.rs b/zellij-server/src/tab/unit/tab_integration_tests.rs index ba62daa0..dae50f28 100644 --- a/zellij-server/src/tab/unit/tab_integration_tests.rs +++ b/zellij-server/src/tab/unit/tab_integration_tests.rs @@ -3151,7 +3151,7 @@ fn can_swap_tiled_layout_at_runtime() { } } "#; - let layout = Layout::from_kdl(swap_layouts, "file_name.kdl".into(), None, None).unwrap(); + let layout = Layout::from_kdl(swap_layouts, Some("file_name.kdl".into()), None, None).unwrap(); let swap_tiled_layouts = layout.swap_tiled_layouts.clone(); let swap_floating_layouts = layout.swap_floating_layouts.clone(); let mut tab = create_new_tab_with_swap_layouts( @@ -3204,7 +3204,7 @@ fn can_swap_floating_layout_at_runtime() { } } "#; - let layout = Layout::from_kdl(swap_layouts, "file_name.kdl".into(), None, None).unwrap(); + let layout = Layout::from_kdl(swap_layouts, Some("file_name.kdl".into()), None, None).unwrap(); let swap_floating_layouts = layout.swap_floating_layouts.clone(); let swap_tiled_layouts = layout.swap_tiled_layouts.clone(); let mut tab = create_new_tab_with_swap_layouts( @@ -3259,7 +3259,7 @@ fn swapping_layouts_after_resize_snaps_to_current_layout() { } } "#; - let layout = Layout::from_kdl(swap_layouts, "file_name.kdl".into(), None, None).unwrap(); + let layout = Layout::from_kdl(swap_layouts, Some("file_name.kdl".into()), None, None).unwrap(); let swap_tiled_layouts = layout.swap_tiled_layouts.clone(); let swap_floating_layouts = layout.swap_floating_layouts.clone(); let mut tab = create_new_tab_with_swap_layouts( @@ -3307,7 +3307,7 @@ fn swap_tiled_layout_with_stacked_children() { } } "#; - let layout = Layout::from_kdl(swap_layouts, "file_name.kdl".into(), None, None).unwrap(); + let layout = Layout::from_kdl(swap_layouts, Some("file_name.kdl".into()), None, None).unwrap(); let swap_tiled_layouts = layout.swap_tiled_layouts.clone(); let swap_floating_layouts = layout.swap_floating_layouts.clone(); let mut tab = create_new_tab_with_swap_layouts( @@ -3354,7 +3354,7 @@ fn swap_tiled_layout_with_only_stacked_children() { } } "#; - let layout = Layout::from_kdl(swap_layouts, "file_name.kdl".into(), None, None).unwrap(); + let layout = Layout::from_kdl(swap_layouts, Some("file_name.kdl".into()), None, None).unwrap(); let swap_tiled_layouts = layout.swap_tiled_layouts.clone(); let swap_floating_layouts = layout.swap_floating_layouts.clone(); let mut tab = create_new_tab_with_swap_layouts( @@ -3404,7 +3404,7 @@ fn swap_tiled_layout_with_stacked_children_and_no_pane_frames() { } } "#; - let layout = Layout::from_kdl(swap_layouts, "file_name.kdl".into(), None, None).unwrap(); + let layout = Layout::from_kdl(swap_layouts, Some("file_name.kdl".into()), None, None).unwrap(); let swap_tiled_layouts = layout.swap_tiled_layouts.clone(); let swap_floating_layouts = layout.swap_floating_layouts.clone(); let mut tab = create_new_tab_with_swap_layouts( @@ -3454,7 +3454,7 @@ fn move_focus_up_with_stacked_panes() { } } "#; - let layout = Layout::from_kdl(swap_layouts, "file_name.kdl".into(), None, None).unwrap(); + let layout = Layout::from_kdl(swap_layouts, Some("file_name.kdl".into()), None, None).unwrap(); let swap_tiled_layouts = layout.swap_tiled_layouts.clone(); let swap_floating_layouts = layout.swap_floating_layouts.clone(); let mut tab = create_new_tab_with_swap_layouts( @@ -3506,7 +3506,7 @@ fn move_focus_down_with_stacked_panes() { } } "#; - let layout = Layout::from_kdl(swap_layouts, "file_name.kdl".into(), None, None).unwrap(); + let layout = Layout::from_kdl(swap_layouts, Some("file_name.kdl".into()), None, None).unwrap(); let swap_tiled_layouts = layout.swap_tiled_layouts.clone(); let swap_floating_layouts = layout.swap_floating_layouts.clone(); let mut tab = create_new_tab_with_swap_layouts( @@ -3562,7 +3562,7 @@ fn move_focus_right_into_stacked_panes() { } } "#; - let layout = Layout::from_kdl(swap_layouts, "file_name.kdl".into(), None, None).unwrap(); + let layout = Layout::from_kdl(swap_layouts, Some("file_name.kdl".into()), None, None).unwrap(); let swap_tiled_layouts = layout.swap_tiled_layouts.clone(); let swap_floating_layouts = layout.swap_floating_layouts.clone(); let mut tab = create_new_tab_with_swap_layouts( @@ -3630,7 +3630,7 @@ fn move_focus_left_into_stacked_panes() { } } "#; - let layout = Layout::from_kdl(swap_layouts, "file_name.kdl".into(), None, None).unwrap(); + let layout = Layout::from_kdl(swap_layouts, Some("file_name.kdl".into()), None, None).unwrap(); let swap_tiled_layouts = layout.swap_tiled_layouts.clone(); let swap_floating_layouts = layout.swap_floating_layouts.clone(); let mut tab = create_new_tab_with_swap_layouts( @@ -3700,7 +3700,7 @@ fn move_focus_up_into_stacked_panes() { } } "#; - let layout = Layout::from_kdl(swap_layouts, "file_name.kdl".into(), None, None).unwrap(); + let layout = Layout::from_kdl(swap_layouts, Some("file_name.kdl".into()), None, None).unwrap(); let swap_tiled_layouts = layout.swap_tiled_layouts.clone(); let swap_floating_layouts = layout.swap_floating_layouts.clone(); let mut tab = create_new_tab_with_swap_layouts( @@ -3771,7 +3771,7 @@ fn move_focus_down_into_stacked_panes() { } } "#; - let layout = Layout::from_kdl(swap_layouts, "file_name.kdl".into(), None, None).unwrap(); + let layout = Layout::from_kdl(swap_layouts, Some("file_name.kdl".into()), None, None).unwrap(); let swap_tiled_layouts = layout.swap_tiled_layouts.clone(); let swap_floating_layouts = layout.swap_floating_layouts.clone(); let mut tab = create_new_tab_with_swap_layouts( @@ -3836,7 +3836,7 @@ fn close_main_stacked_pane() { } } "#; - let layout = Layout::from_kdl(swap_layouts, "file_name.kdl".into(), None, None).unwrap(); + let layout = Layout::from_kdl(swap_layouts, Some("file_name.kdl".into()), None, None).unwrap(); let swap_tiled_layouts = layout.swap_tiled_layouts.clone(); let swap_floating_layouts = layout.swap_floating_layouts.clone(); let mut tab = create_new_tab_with_swap_layouts( @@ -3887,7 +3887,7 @@ fn close_main_stacked_pane_in_mid_stack() { } } "#; - let layout = Layout::from_kdl(swap_layouts, "file_name.kdl".into(), None, None).unwrap(); + let layout = Layout::from_kdl(swap_layouts, Some("file_name.kdl".into()), None, None).unwrap(); let swap_tiled_layouts = layout.swap_tiled_layouts.clone(); let swap_floating_layouts = layout.swap_floating_layouts.clone(); let mut tab = create_new_tab_with_swap_layouts( @@ -3947,7 +3947,7 @@ fn close_one_liner_stacked_pane_below_main_pane() { } } "#; - let layout = Layout::from_kdl(swap_layouts, "file_name.kdl".into(), None, None).unwrap(); + let layout = Layout::from_kdl(swap_layouts, Some("file_name.kdl".into()), None, None).unwrap(); let swap_tiled_layouts = layout.swap_tiled_layouts.clone(); let swap_floating_layouts = layout.swap_floating_layouts.clone(); let mut tab = create_new_tab_with_swap_layouts( @@ -4008,7 +4008,7 @@ fn close_one_liner_stacked_pane_above_main_pane() { } } "#; - let layout = Layout::from_kdl(swap_layouts, "file_name.kdl".into(), None, None).unwrap(); + let layout = Layout::from_kdl(swap_layouts, Some("file_name.kdl".into()), None, None).unwrap(); let swap_tiled_layouts = layout.swap_tiled_layouts.clone(); let swap_floating_layouts = layout.swap_floating_layouts.clone(); let mut tab = create_new_tab_with_swap_layouts( @@ -4068,7 +4068,7 @@ fn can_increase_size_of_main_pane_in_stack_horizontally() { } } "#; - let layout = Layout::from_kdl(swap_layouts, "file_name.kdl".into(), None, None).unwrap(); + let layout = Layout::from_kdl(swap_layouts, Some("file_name.kdl".into()), None, None).unwrap(); let swap_tiled_layouts = layout.swap_tiled_layouts.clone(); let swap_floating_layouts = layout.swap_floating_layouts.clone(); let mut tab = create_new_tab_with_swap_layouts( @@ -4132,7 +4132,7 @@ fn can_increase_size_of_main_pane_in_stack_vertically() { } } "#; - let layout = Layout::from_kdl(swap_layouts, "file_name.kdl".into(), None, None).unwrap(); + let layout = Layout::from_kdl(swap_layouts, Some("file_name.kdl".into()), None, None).unwrap(); let swap_tiled_layouts = layout.swap_tiled_layouts.clone(); let swap_floating_layouts = layout.swap_floating_layouts.clone(); let mut tab = create_new_tab_with_swap_layouts( @@ -4196,7 +4196,7 @@ fn can_increase_size_of_main_pane_in_stack_non_directionally() { } } "#; - let layout = Layout::from_kdl(swap_layouts, "file_name.kdl".into(), None, None).unwrap(); + let layout = Layout::from_kdl(swap_layouts, Some("file_name.kdl".into()), None, None).unwrap(); let swap_tiled_layouts = layout.swap_tiled_layouts.clone(); let swap_floating_layouts = layout.swap_floating_layouts.clone(); let mut tab = create_new_tab_with_swap_layouts( @@ -4256,7 +4256,7 @@ fn can_increase_size_into_pane_stack_horizontally() { } } "#; - let layout = Layout::from_kdl(swap_layouts, "file_name.kdl".into(), None, None).unwrap(); + let layout = Layout::from_kdl(swap_layouts, Some("file_name.kdl".into()), None, None).unwrap(); let swap_tiled_layouts = layout.swap_tiled_layouts.clone(); let swap_floating_layouts = layout.swap_floating_layouts.clone(); let mut tab = create_new_tab_with_swap_layouts( @@ -4319,7 +4319,7 @@ fn can_increase_size_into_pane_stack_vertically() { } } "#; - let layout = Layout::from_kdl(swap_layouts, "file_name.kdl".into(), None, None).unwrap(); + let layout = Layout::from_kdl(swap_layouts, Some("file_name.kdl".into()), None, None).unwrap(); let swap_tiled_layouts = layout.swap_tiled_layouts.clone(); let swap_floating_layouts = layout.swap_floating_layouts.clone(); let mut tab = create_new_tab_with_swap_layouts( @@ -4384,7 +4384,7 @@ fn can_increase_size_into_pane_stack_non_directionally() { } } "#; - let layout = Layout::from_kdl(swap_layouts, "file_name.kdl".into(), None, None).unwrap(); + let layout = Layout::from_kdl(swap_layouts, Some("file_name.kdl".into()), None, None).unwrap(); let swap_tiled_layouts = layout.swap_tiled_layouts.clone(); let swap_floating_layouts = layout.swap_floating_layouts.clone(); let mut tab = create_new_tab_with_swap_layouts( @@ -4443,7 +4443,7 @@ fn decreasing_size_of_whole_tab_treats_stacked_panes_properly() { } } "#; - let layout = Layout::from_kdl(swap_layouts, "file_name.kdl".into(), None, None).unwrap(); + let layout = Layout::from_kdl(swap_layouts, Some("file_name.kdl".into()), None, None).unwrap(); let swap_tiled_layouts = layout.swap_tiled_layouts.clone(); let swap_floating_layouts = layout.swap_floating_layouts.clone(); let mut tab = create_new_tab_with_swap_layouts( @@ -4503,7 +4503,7 @@ fn increasing_size_of_whole_tab_treats_stacked_panes_properly() { } } "#; - let layout = Layout::from_kdl(swap_layouts, "file_name.kdl".into(), None, None).unwrap(); + let layout = Layout::from_kdl(swap_layouts, Some("file_name.kdl".into()), None, None).unwrap(); let swap_tiled_layouts = layout.swap_tiled_layouts.clone(); let swap_floating_layouts = layout.swap_floating_layouts.clone(); let mut tab = create_new_tab_with_swap_layouts( @@ -4568,7 +4568,7 @@ fn cannot_decrease_stack_size_beyond_minimum_height() { } } "#; - let layout = Layout::from_kdl(swap_layouts, "file_name.kdl".into(), None, None).unwrap(); + let layout = Layout::from_kdl(swap_layouts, Some("file_name.kdl".into()), None, None).unwrap(); let swap_tiled_layouts = layout.swap_tiled_layouts.clone(); let swap_floating_layouts = layout.swap_floating_layouts.clone(); let mut tab = create_new_tab_with_swap_layouts( @@ -4633,7 +4633,7 @@ fn focus_stacked_pane_over_flexible_pane_with_the_mouse() { } } "#; - let layout = Layout::from_kdl(swap_layouts, "file_name.kdl".into(), None, None).unwrap(); + let layout = Layout::from_kdl(swap_layouts, Some("file_name.kdl".into()), None, None).unwrap(); let swap_tiled_layouts = layout.swap_tiled_layouts.clone(); let swap_floating_layouts = layout.swap_floating_layouts.clone(); let mut tab = create_new_tab_with_swap_layouts( @@ -4692,7 +4692,7 @@ fn focus_stacked_pane_under_flexible_pane_with_the_mouse() { } } "#; - let layout = Layout::from_kdl(swap_layouts, "file_name.kdl".into(), None, None).unwrap(); + let layout = Layout::from_kdl(swap_layouts, Some("file_name.kdl".into()), None, None).unwrap(); let swap_tiled_layouts = layout.swap_tiled_layouts.clone(); let swap_floating_layouts = layout.swap_floating_layouts.clone(); let mut tab = create_new_tab_with_swap_layouts( @@ -4753,7 +4753,7 @@ fn close_stacked_pane_with_previously_focused_other_pane() { } } "#; - let layout = Layout::from_kdl(swap_layouts, "file_name.kdl".into(), None, None).unwrap(); + let layout = Layout::from_kdl(swap_layouts, Some("file_name.kdl".into()), None, None).unwrap(); let swap_tiled_layouts = layout.swap_tiled_layouts.clone(); let swap_floating_layouts = layout.swap_floating_layouts.clone(); let mut tab = create_new_tab_with_swap_layouts( @@ -4820,7 +4820,7 @@ fn close_pane_near_stacked_panes() { } } "#; - let layout = Layout::from_kdl(swap_layouts, "file_name.kdl".into(), None, None).unwrap(); + let layout = Layout::from_kdl(swap_layouts, Some("file_name.kdl".into()), None, None).unwrap(); let swap_tiled_layouts = layout.swap_tiled_layouts.clone(); let swap_floating_layouts = layout.swap_floating_layouts.clone(); let mut tab = create_new_tab_with_swap_layouts( @@ -4884,7 +4884,7 @@ fn focus_next_pane_expands_stacked_panes() { } } "#; - let layout = Layout::from_kdl(swap_layouts, "file_name.kdl".into(), None, None).unwrap(); + let layout = Layout::from_kdl(swap_layouts, Some("file_name.kdl".into()), None, None).unwrap(); let swap_tiled_layouts = layout.swap_tiled_layouts.clone(); let swap_floating_layouts = layout.swap_floating_layouts.clone(); let mut tab = create_new_tab_with_swap_layouts( @@ -4944,7 +4944,7 @@ fn stacked_panes_can_become_fullscreen() { } } "#; - let layout = Layout::from_kdl(swap_layouts, "file_name.kdl".into(), None, None).unwrap(); + let layout = Layout::from_kdl(swap_layouts, Some("file_name.kdl".into()), None, None).unwrap(); let swap_tiled_layouts = layout.swap_tiled_layouts.clone(); let swap_floating_layouts = layout.swap_floating_layouts.clone(); let mut tab = create_new_tab_with_swap_layouts( @@ -5027,7 +5027,7 @@ fn layout_with_plugins_and_commands_swaped_properly() { } "#; let (base_layout, base_floating_layout) = - Layout::from_kdl(base_layout, "file_name.kdl".into(), None, None) + Layout::from_kdl(base_layout, Some("file_name.kdl".into()), None, None) .unwrap() .template .unwrap(); @@ -5048,7 +5048,8 @@ fn layout_with_plugins_and_commands_swaped_properly() { vec![2], ); - let swap_layout = Layout::from_kdl(swap_layouts, "file_name.kdl".into(), None, None).unwrap(); + let swap_layout = + Layout::from_kdl(swap_layouts, Some("file_name.kdl".into()), None, None).unwrap(); let swap_tiled_layouts = swap_layout.swap_tiled_layouts.clone(); let swap_floating_layouts = swap_layout.swap_floating_layouts.clone(); let mut tab = create_new_tab_with_swap_layouts( @@ -5122,7 +5123,7 @@ fn base_layout_is_included_in_swap_layouts() { } "#; let (base_layout, base_floating_layout) = - Layout::from_kdl(base_layout, "file_name.kdl".into(), None, None) + Layout::from_kdl(base_layout, Some("file_name.kdl".into()), None, None) .unwrap() .template .unwrap(); @@ -5143,7 +5144,8 @@ fn base_layout_is_included_in_swap_layouts() { vec![2], ); - let swap_layout = Layout::from_kdl(swap_layouts, "file_name.kdl".into(), None, None).unwrap(); + let swap_layout = + Layout::from_kdl(swap_layouts, Some("file_name.kdl".into()), None, None).unwrap(); let swap_tiled_layouts = swap_layout.swap_tiled_layouts.clone(); let swap_floating_layouts = swap_layout.swap_floating_layouts.clone(); let mut tab = create_new_tab_with_swap_layouts( @@ -5218,7 +5220,7 @@ fn swap_layouts_including_command_panes_absent_from_existing_layout() { } "#; let (base_layout, base_floating_layout) = - Layout::from_kdl(base_layout, "file_name.kdl".into(), None, None) + Layout::from_kdl(base_layout, Some("file_name.kdl".into()), None, None) .unwrap() .template .unwrap(); @@ -5235,7 +5237,8 @@ fn swap_layouts_including_command_panes_absent_from_existing_layout() { vec![2], ); - let swap_layout = Layout::from_kdl(swap_layouts, "file_name.kdl".into(), None, None).unwrap(); + let swap_layout = + Layout::from_kdl(swap_layouts, Some("file_name.kdl".into()), None, None).unwrap(); let swap_tiled_layouts = swap_layout.swap_tiled_layouts.clone(); let swap_floating_layouts = swap_layout.swap_floating_layouts.clone(); let mut tab = create_new_tab_with_swap_layouts( @@ -5309,7 +5312,7 @@ fn swap_layouts_not_including_command_panes_present_in_existing_layout() { } "#; let (base_layout, base_floating_layout) = - Layout::from_kdl(base_layout, "file_name.kdl".into(), None, None) + Layout::from_kdl(base_layout, Some("file_name.kdl".into()), None, None) .unwrap() .template .unwrap(); @@ -5330,7 +5333,8 @@ fn swap_layouts_not_including_command_panes_present_in_existing_layout() { vec![2], ); - let swap_layout = Layout::from_kdl(swap_layouts, "file_name.kdl".into(), None, None).unwrap(); + let swap_layout = + Layout::from_kdl(swap_layouts, Some("file_name.kdl".into()), None, None).unwrap(); let swap_tiled_layouts = swap_layout.swap_tiled_layouts.clone(); let swap_floating_layouts = swap_layout.swap_floating_layouts.clone(); let mut tab = create_new_tab_with_swap_layouts( @@ -5400,7 +5404,7 @@ fn swap_layouts_including_plugin_panes_absent_from_existing_layout() { } "#; let (base_layout, base_floating_layout) = - Layout::from_kdl(base_layout, "file_name.kdl".into(), None, None) + Layout::from_kdl(base_layout, Some("file_name.kdl".into()), None, None) .unwrap() .template .unwrap(); @@ -5409,7 +5413,8 @@ fn swap_layouts_including_plugin_panes_absent_from_existing_layout() { let new_floating_terminal_ids = vec![]; let new_plugin_ids = HashMap::new(); - let swap_layout = Layout::from_kdl(swap_layouts, "file_name.kdl".into(), None, None).unwrap(); + let swap_layout = + Layout::from_kdl(swap_layouts, Some("file_name.kdl".into()), None, None).unwrap(); let swap_tiled_layouts = swap_layout.swap_tiled_layouts.clone(); let swap_floating_layouts = swap_layout.swap_floating_layouts.clone(); let mut tab = create_new_tab_with_swap_layouts( @@ -5477,7 +5482,7 @@ fn swap_layouts_not_including_plugin_panes_present_in_existing_layout() { } "#; let (base_layout, base_floating_layout) = - Layout::from_kdl(base_layout, "file_name.kdl".into(), None, None) + Layout::from_kdl(base_layout, Some("file_name.kdl".into()), None, None) .unwrap() .template .unwrap(); @@ -5498,7 +5503,8 @@ fn swap_layouts_not_including_plugin_panes_present_in_existing_layout() { vec![2], ); - let swap_layout = Layout::from_kdl(swap_layouts, "file_name.kdl".into(), None, None).unwrap(); + let swap_layout = + Layout::from_kdl(swap_layouts, Some("file_name.kdl".into()), None, None).unwrap(); let swap_tiled_layouts = swap_layout.swap_tiled_layouts.clone(); let swap_floating_layouts = swap_layout.swap_floating_layouts.clone(); let mut tab = create_new_tab_with_swap_layouts( @@ -5558,7 +5564,7 @@ fn new_pane_in_auto_layout() { } "#; let (base_layout, base_floating_layout) = - Layout::from_kdl(base_layout, "file_name.kdl".into(), None, None) + Layout::from_kdl(base_layout, Some("file_name.kdl".into()), None, None) .unwrap() .template .unwrap(); @@ -5567,7 +5573,8 @@ fn new_pane_in_auto_layout() { let new_floating_terminal_ids = vec![]; let new_plugin_ids = HashMap::new(); - let swap_layout = Layout::from_kdl(swap_layouts, "file_name.kdl".into(), None, None).unwrap(); + let swap_layout = + Layout::from_kdl(swap_layouts, Some("file_name.kdl".into()), None, None).unwrap(); let swap_tiled_layouts = swap_layout.swap_tiled_layouts.clone(); let swap_floating_layouts = swap_layout.swap_floating_layouts.clone(); let mut tab = create_new_tab_with_swap_layouts( @@ -5651,7 +5658,7 @@ fn when_swapping_tiled_layouts_in_a_damaged_state_layout_and_pane_focus_are_unch } "#; let (base_layout, base_floating_layout) = - Layout::from_kdl(base_layout, "file_name.kdl".into(), None, None) + Layout::from_kdl(base_layout, Some("file_name.kdl".into()), None, None) .unwrap() .template .unwrap(); @@ -5660,7 +5667,8 @@ fn when_swapping_tiled_layouts_in_a_damaged_state_layout_and_pane_focus_are_unch let new_floating_terminal_ids = vec![]; let new_plugin_ids = HashMap::new(); - let swap_layout = Layout::from_kdl(swap_layouts, "file_name.kdl".into(), None, None).unwrap(); + let swap_layout = + Layout::from_kdl(swap_layouts, Some("file_name.kdl".into()), None, None).unwrap(); let swap_tiled_layouts = swap_layout.swap_tiled_layouts.clone(); let swap_floating_layouts = swap_layout.swap_floating_layouts.clone(); let mut tab = create_new_tab_with_swap_layouts( @@ -5729,7 +5737,7 @@ fn when_swapping_tiled_layouts_in_an_undamaged_state_pane_focuses_on_focused_nod } "#; let (base_layout, base_floating_layout) = - Layout::from_kdl(base_layout, "file_name.kdl".into(), None, None) + Layout::from_kdl(base_layout, Some("file_name.kdl".into()), None, None) .unwrap() .template .unwrap(); @@ -5738,7 +5746,8 @@ fn when_swapping_tiled_layouts_in_an_undamaged_state_pane_focuses_on_focused_nod let new_floating_terminal_ids = vec![]; let new_plugin_ids = HashMap::new(); - let swap_layout = Layout::from_kdl(swap_layouts, "file_name.kdl".into(), None, None).unwrap(); + let swap_layout = + Layout::from_kdl(swap_layouts, Some("file_name.kdl".into()), None, None).unwrap(); let swap_tiled_layouts = swap_layout.swap_tiled_layouts.clone(); let swap_floating_layouts = swap_layout.swap_floating_layouts.clone(); let mut tab = create_new_tab_with_swap_layouts( @@ -5803,7 +5812,7 @@ fn when_swapping_tiled_layouts_in_an_undamaged_state_with_no_focus_node_pane_foc } "#; let (base_layout, base_floating_layout) = - Layout::from_kdl(base_layout, "file_name.kdl".into(), None, None) + Layout::from_kdl(base_layout, Some("file_name.kdl".into()), None, None) .unwrap() .template .unwrap(); @@ -5812,7 +5821,8 @@ fn when_swapping_tiled_layouts_in_an_undamaged_state_with_no_focus_node_pane_foc let new_floating_terminal_ids = vec![]; let new_plugin_ids = HashMap::new(); - let swap_layout = Layout::from_kdl(swap_layouts, "file_name.kdl".into(), None, None).unwrap(); + let swap_layout = + Layout::from_kdl(swap_layouts, Some("file_name.kdl".into()), None, None).unwrap(); let swap_tiled_layouts = swap_layout.swap_tiled_layouts.clone(); let swap_floating_layouts = swap_layout.swap_floating_layouts.clone(); let mut tab = create_new_tab_with_swap_layouts( @@ -5876,7 +5886,7 @@ fn when_closing_a_pane_in_auto_layout_the_focus_goes_to_last_focused_pane() { } "#; let (base_layout, base_floating_layout) = - Layout::from_kdl(base_layout, "file_name.kdl".into(), None, None) + Layout::from_kdl(base_layout, Some("file_name.kdl".into()), None, None) .unwrap() .template .unwrap(); @@ -5885,7 +5895,8 @@ fn when_closing_a_pane_in_auto_layout_the_focus_goes_to_last_focused_pane() { let new_floating_terminal_ids = vec![]; let new_plugin_ids = HashMap::new(); - let swap_layout = Layout::from_kdl(swap_layouts, "file_name.kdl".into(), None, None).unwrap(); + let swap_layout = + Layout::from_kdl(swap_layouts, Some("file_name.kdl".into()), None, None).unwrap(); let swap_tiled_layouts = swap_layout.swap_tiled_layouts.clone(); let swap_floating_layouts = swap_layout.swap_floating_layouts.clone(); let mut tab = create_new_tab_with_swap_layouts( @@ -5962,7 +5973,7 @@ fn floating_layout_with_plugins_and_commands_swaped_properly() { } "#; let (base_layout, base_floating_layout) = - Layout::from_kdl(base_layout, "file_name.kdl".into(), None, None) + Layout::from_kdl(base_layout, Some("file_name.kdl".into()), None, None) .unwrap() .template .unwrap(); @@ -5983,7 +5994,8 @@ fn floating_layout_with_plugins_and_commands_swaped_properly() { vec![2], ); - let swap_layout = Layout::from_kdl(swap_layouts, "file_name.kdl".into(), None, None).unwrap(); + let swap_layout = + Layout::from_kdl(swap_layouts, Some("file_name.kdl".into()), None, None).unwrap(); let swap_tiled_layouts = swap_layout.swap_tiled_layouts.clone(); let swap_floating_layouts = swap_layout.swap_floating_layouts.clone(); let mut tab = create_new_tab_with_swap_layouts( @@ -6055,7 +6067,7 @@ fn base_floating_layout_is_included_in_swap_layouts() { } "#; let (base_layout, base_floating_layout) = - Layout::from_kdl(base_layout, "file_name.kdl".into(), None, None) + Layout::from_kdl(base_layout, Some("file_name.kdl".into()), None, None) .unwrap() .template .unwrap(); @@ -6076,7 +6088,8 @@ fn base_floating_layout_is_included_in_swap_layouts() { vec![2], ); - let swap_layout = Layout::from_kdl(swap_layouts, "file_name.kdl".into(), None, None).unwrap(); + let swap_layout = + Layout::from_kdl(swap_layouts, Some("file_name.kdl".into()), None, None).unwrap(); let swap_tiled_layouts = swap_layout.swap_tiled_layouts.clone(); let swap_floating_layouts = swap_layout.swap_floating_layouts.clone(); let mut tab = create_new_tab_with_swap_layouts( @@ -6151,7 +6164,7 @@ fn swap_floating_layouts_including_command_panes_absent_from_existing_layout() { } "#; let (base_layout, base_floating_layout) = - Layout::from_kdl(base_layout, "file_name.kdl".into(), None, None) + Layout::from_kdl(base_layout, Some("file_name.kdl".into()), None, None) .unwrap() .template .unwrap(); @@ -6168,7 +6181,8 @@ fn swap_floating_layouts_including_command_panes_absent_from_existing_layout() { vec![2], ); - let swap_layout = Layout::from_kdl(swap_layouts, "file_name.kdl".into(), None, None).unwrap(); + let swap_layout = + Layout::from_kdl(swap_layouts, Some("file_name.kdl".into()), None, None).unwrap(); let swap_tiled_layouts = swap_layout.swap_tiled_layouts.clone(); let swap_floating_layouts = swap_layout.swap_floating_layouts.clone(); let mut tab = create_new_tab_with_swap_layouts( @@ -6242,7 +6256,7 @@ fn swap_floating_layouts_not_including_command_panes_present_in_existing_layout( } "#; let (base_layout, base_floating_layout) = - Layout::from_kdl(base_layout, "file_name.kdl".into(), None, None) + Layout::from_kdl(base_layout, Some("file_name.kdl".into()), None, None) .unwrap() .template .unwrap(); @@ -6263,7 +6277,8 @@ fn swap_floating_layouts_not_including_command_panes_present_in_existing_layout( vec![2], ); - let swap_layout = Layout::from_kdl(swap_layouts, "file_name.kdl".into(), None, None).unwrap(); + let swap_layout = + Layout::from_kdl(swap_layouts, Some("file_name.kdl".into()), None, None).unwrap(); let swap_tiled_layouts = swap_layout.swap_tiled_layouts.clone(); let swap_floating_layouts = swap_layout.swap_floating_layouts.clone(); let mut tab = create_new_tab_with_swap_layouts( @@ -6326,7 +6341,7 @@ fn swap_floating_layouts_including_plugin_panes_absent_from_existing_layout() { } "#; let (base_layout, base_floating_layout) = - Layout::from_kdl(base_layout, "file_name.kdl".into(), None, None) + Layout::from_kdl(base_layout, Some("file_name.kdl".into()), None, None) .unwrap() .template .unwrap(); @@ -6335,7 +6350,8 @@ fn swap_floating_layouts_including_plugin_panes_absent_from_existing_layout() { let new_terminal_ids = vec![(4, None)]; let new_plugin_ids = HashMap::new(); - let swap_layout = Layout::from_kdl(swap_layouts, "file_name.kdl".into(), None, None).unwrap(); + let swap_layout = + Layout::from_kdl(swap_layouts, Some("file_name.kdl".into()), None, None).unwrap(); let swap_tiled_layouts = swap_layout.swap_tiled_layouts.clone(); let swap_floating_layouts = swap_layout.swap_floating_layouts.clone(); let mut tab = create_new_tab_with_swap_layouts( @@ -6399,7 +6415,7 @@ fn swap_floating_layouts_not_including_plugin_panes_present_in_existing_layout() } "#; let (base_layout, base_floating_layout) = - Layout::from_kdl(base_layout, "file_name.kdl".into(), None, None) + Layout::from_kdl(base_layout, Some("file_name.kdl".into()), None, None) .unwrap() .template .unwrap(); @@ -6420,7 +6436,8 @@ fn swap_floating_layouts_not_including_plugin_panes_present_in_existing_layout() vec![2], ); - let swap_layout = Layout::from_kdl(swap_layouts, "file_name.kdl".into(), None, None).unwrap(); + let swap_layout = + Layout::from_kdl(swap_layouts, Some("file_name.kdl".into()), None, None).unwrap(); let swap_tiled_layouts = swap_layout.swap_tiled_layouts.clone(); let swap_floating_layouts = swap_layout.swap_floating_layouts.clone(); let mut tab = create_new_tab_with_swap_layouts( @@ -6480,7 +6497,7 @@ fn new_floating_pane_in_auto_layout() { } "#; let (base_layout, base_floating_layout) = - Layout::from_kdl(base_layout, "file_name.kdl".into(), None, None) + Layout::from_kdl(base_layout, Some("file_name.kdl".into()), None, None) .unwrap() .template .unwrap(); @@ -6489,7 +6506,8 @@ fn new_floating_pane_in_auto_layout() { let new_floating_terminal_ids = vec![]; let new_plugin_ids = HashMap::new(); - let swap_layout = Layout::from_kdl(swap_layouts, "file_name.kdl".into(), None, None).unwrap(); + let swap_layout = + Layout::from_kdl(swap_layouts, Some("file_name.kdl".into()), None, None).unwrap(); let swap_tiled_layouts = swap_layout.swap_tiled_layouts.clone(); let swap_floating_layouts = swap_layout.swap_floating_layouts.clone(); let mut tab = create_new_tab_with_swap_layouts( @@ -6566,7 +6584,7 @@ fn when_swapping_floating_layouts_in_a_damaged_state_layout_and_pane_focus_are_u } "#; let (base_layout, base_floating_layout) = - Layout::from_kdl(base_layout, "file_name.kdl".into(), None, None) + Layout::from_kdl(base_layout, Some("file_name.kdl".into()), None, None) .unwrap() .template .unwrap(); @@ -6575,7 +6593,8 @@ fn when_swapping_floating_layouts_in_a_damaged_state_layout_and_pane_focus_are_u let new_terminal_ids = vec![(4, None)]; let new_plugin_ids = HashMap::new(); - let swap_layout = Layout::from_kdl(swap_layouts, "file_name.kdl".into(), None, None).unwrap(); + let swap_layout = + Layout::from_kdl(swap_layouts, Some("file_name.kdl".into()), None, None).unwrap(); let swap_tiled_layouts = swap_layout.swap_tiled_layouts.clone(); let swap_floating_layouts = swap_layout.swap_floating_layouts.clone(); let mut tab = create_new_tab_with_swap_layouts( @@ -6643,7 +6662,7 @@ fn when_swapping_floating_layouts_in_an_undamaged_state_pane_focuses_on_focused_ } "#; let (base_layout, base_floating_layout) = - Layout::from_kdl(base_layout, "file_name.kdl".into(), None, None) + Layout::from_kdl(base_layout, Some("file_name.kdl".into()), None, None) .unwrap() .template .unwrap(); @@ -6652,7 +6671,8 @@ fn when_swapping_floating_layouts_in_an_undamaged_state_pane_focuses_on_focused_ let new_terminal_ids = vec![(4, None)]; let new_plugin_ids = HashMap::new(); - let swap_layout = Layout::from_kdl(swap_layouts, "file_name.kdl".into(), None, None).unwrap(); + let swap_layout = + Layout::from_kdl(swap_layouts, Some("file_name.kdl".into()), None, None).unwrap(); let swap_tiled_layouts = swap_layout.swap_tiled_layouts.clone(); let swap_floating_layouts = swap_layout.swap_floating_layouts.clone(); let mut tab = create_new_tab_with_swap_layouts( @@ -6716,7 +6736,7 @@ fn when_swapping_floating_layouts_in_an_undamaged_state_with_no_focus_node_pane_ } "#; let (base_layout, base_floating_layout) = - Layout::from_kdl(base_layout, "file_name.kdl".into(), None, None) + Layout::from_kdl(base_layout, Some("file_name.kdl".into()), None, None) .unwrap() .template .unwrap(); @@ -6725,7 +6745,8 @@ fn when_swapping_floating_layouts_in_an_undamaged_state_with_no_focus_node_pane_ let new_terminal_ids = vec![(4, None)]; let new_plugin_ids = HashMap::new(); - let swap_layout = Layout::from_kdl(swap_layouts, "file_name.kdl".into(), None, None).unwrap(); + let swap_layout = + Layout::from_kdl(swap_layouts, Some("file_name.kdl".into()), None, None).unwrap(); let swap_tiled_layouts = swap_layout.swap_tiled_layouts.clone(); let swap_floating_layouts = swap_layout.swap_floating_layouts.clone(); let mut tab = create_new_tab_with_swap_layouts( @@ -6788,7 +6809,7 @@ fn when_closing_a_floating_pane_in_auto_layout_the_focus_goes_to_last_focused_pa } "#; let (base_layout, base_floating_layout) = - Layout::from_kdl(base_layout, "file_name.kdl".into(), None, None) + Layout::from_kdl(base_layout, Some("file_name.kdl".into()), None, None) .unwrap() .template .unwrap(); @@ -6797,7 +6818,8 @@ fn when_closing_a_floating_pane_in_auto_layout_the_focus_goes_to_last_focused_pa let new_terminal_ids = vec![(4, None)]; let new_plugin_ids = HashMap::new(); - let swap_layout = Layout::from_kdl(swap_layouts, "file_name.kdl".into(), None, None).unwrap(); + let swap_layout = + Layout::from_kdl(swap_layouts, Some("file_name.kdl".into()), None, None).unwrap(); let swap_tiled_layouts = swap_layout.swap_tiled_layouts.clone(); let swap_floating_layouts = swap_layout.swap_floating_layouts.clone(); let mut tab = create_new_tab_with_swap_layouts( @@ -6853,7 +6875,7 @@ fn when_resizing_whole_tab_with_auto_layout_and_floating_panes_the_layout_is_mai layout "#; let (base_layout, base_floating_layout) = - Layout::from_kdl(base_layout, "file_name.kdl".into(), None, None) + Layout::from_kdl(base_layout, Some("file_name.kdl".into()), None, None) .unwrap() .template .unwrap(); @@ -6862,7 +6884,8 @@ fn when_resizing_whole_tab_with_auto_layout_and_floating_panes_the_layout_is_mai let new_terminal_ids = vec![(4, None)]; let new_plugin_ids = HashMap::new(); - let swap_layout = Layout::from_kdl(swap_layouts, "file_name.kdl".into(), None, None).unwrap(); + let swap_layout = + Layout::from_kdl(swap_layouts, Some("file_name.kdl".into()), None, None).unwrap(); let swap_tiled_layouts = swap_layout.swap_tiled_layouts.clone(); let swap_floating_layouts = swap_layout.swap_floating_layouts.clone(); let mut tab = create_new_tab_with_swap_layouts( diff --git a/zellij-utils/src/data.rs b/zellij-utils/src/data.rs index 1a3c9881..0ebb6f1b 100644 --- a/zellij-utils/src/data.rs +++ b/zellij-utils/src/data.rs @@ -1184,6 +1184,7 @@ pub enum LayoutInfo { BuiltIn(String), File(String), Url(String), + Stringified(String), } impl LayoutInfo { @@ -1192,6 +1193,7 @@ impl LayoutInfo { LayoutInfo::BuiltIn(name) => &name, LayoutInfo::File(name) => &name, LayoutInfo::Url(url) => &url, + LayoutInfo::Stringified(layout) => &layout, } } pub fn is_builtin(&self) -> bool { @@ -1199,6 +1201,7 @@ impl LayoutInfo { LayoutInfo::BuiltIn(_name) => true, LayoutInfo::File(_name) => false, LayoutInfo::Url(_url) => false, + LayoutInfo::Stringified(_stringified) => false, } } } diff --git a/zellij-utils/src/input/layout.rs b/zellij-utils/src/input/layout.rs index 82207725..7dc3bc63 100644 --- a/zellij-utils/src/input/layout.rs +++ b/zellij-utils/src/input/layout.rs @@ -1142,15 +1142,20 @@ impl Layout { let (path_to_raw_layout, raw_layout, raw_swap_layouts) = match layout_info { LayoutInfo::File(layout_name_without_extension) => { let layout_dir = layout_dir.clone().or_else(|| default_layout_dir()); - Self::stringified_from_dir( - &PathBuf::from(layout_name_without_extension), - layout_dir.as_ref(), - )? + let (path_to_layout, stringified_layout, swap_layouts) = + Self::stringified_from_dir( + &PathBuf::from(layout_name_without_extension), + layout_dir.as_ref(), + )?; + (Some(path_to_layout), stringified_layout, swap_layouts) }, LayoutInfo::BuiltIn(layout_name) => { - Self::stringified_from_default_assets(&PathBuf::from(layout_name))? + let (path_to_layout, stringified_layout, swap_layouts) = + Self::stringified_from_default_assets(&PathBuf::from(layout_name))?; + (Some(path_to_layout), stringified_layout, swap_layouts) }, - LayoutInfo::Url(url) => (url.clone(), Self::stringified_from_url(&url)?, None), + LayoutInfo::Url(url) => (Some(url.clone()), Self::stringified_from_url(&url)?, None), + LayoutInfo::Stringified(stringified_layout) => (None, stringified_layout, None), }; Layout::from_kdl( &raw_layout, @@ -1208,7 +1213,7 @@ impl Layout { Layout::stringified_from_path_or_default(layout_path, layout_dir)?; let layout = Layout::from_kdl( &raw_layout, - path_to_raw_layout, + Some(path_to_raw_layout), raw_swap_layouts .as_ref() .map(|(r, f)| (r.as_str(), f.as_str())), @@ -1226,10 +1231,18 @@ impl Layout { Err(e) => Err(ConfigError::DownloadError(format!("{}", e))), } })?; - let layout = Layout::from_kdl(&raw_layout, url.into(), None, None)?; + let layout = Layout::from_kdl(&raw_layout, Some(url.into()), None, None)?; let config = Config::from_kdl(&raw_layout, Some(config))?; // this merges the two config, with Ok((layout, config)) } + pub fn from_stringified_layout( + stringified_layout: &str, + config: Config, + ) -> Result<(Layout, Config), ConfigError> { + let layout = Layout::from_kdl(&stringified_layout, None, None, None)?; + let config = Config::from_kdl(&stringified_layout, Some(config))?; // this merges the two config, with + Ok((layout, config)) + } #[cfg(target_family = "wasm")] pub fn from_url(url: &str, config: Config) -> Result<(Layout, Config), ConfigError> { Err(ConfigError::DownloadError(format!( @@ -1244,7 +1257,7 @@ impl Layout { Layout::stringified_from_path_or_default(layout_path, layout_dir)?; let layout = Layout::from_kdl( &raw_layout, - path_to_raw_layout, + Some(path_to_raw_layout), raw_swap_layouts .as_ref() .map(|(r, f)| (r.as_str(), f.as_str())), @@ -1261,7 +1274,7 @@ impl Layout { Layout::stringified_from_default_assets(layout_name)?; let layout = Layout::from_kdl( &raw_layout, - path_to_raw_layout, + Some(path_to_raw_layout), raw_swap_layouts .as_ref() .map(|(r, f)| (r.as_str(), f.as_str())), @@ -1276,7 +1289,7 @@ impl Layout { swap_layouts: Option<(&str, &str)>, // Option<path_to_swap_layout, stringified_swap_layout> cwd: Option<PathBuf>, ) -> Result<Layout, ConfigError> { - Layout::from_kdl(raw, path_to_raw_layout, swap_layouts, cwd) + Layout::from_kdl(raw, Some(path_to_raw_layout), swap_layouts, cwd) } pub fn stringified_from_dir( layout: &PathBuf, diff --git a/zellij-utils/src/input/unit/layout_test.rs b/zellij-utils/src/input/unit/layout_test.rs index e2d91c17..d13dd2c0 100644 --- a/zellij-utils/src/input/unit/layout_test.rs +++ b/zellij-utils/src/input/unit/layout_test.rs @@ -4,7 +4,7 @@ use insta::assert_snapshot; #[test] fn empty_layout() { let kdl_layout = "layout"; - let layout = Layout::from_kdl(kdl_layout, "layout_file_name".into(), None, None).unwrap(); + let layout = Layout::from_kdl(kdl_layout, Some("layout_file_name".into()), None, None).unwrap(); let expected_layout = Layout { template: Some((TiledPaneLayout::default(), vec![])), ..Default::default() @@ -19,7 +19,7 @@ fn layout_with_one_pane() { pane } "#; - let layout = Layout::from_kdl(kdl_layout, "layout_file_name".into(), None, None).unwrap(); + let layout = Layout::from_kdl(kdl_layout, Some("layout_file_name".into()), None, None).unwrap(); let expected_layout = Layout { template: Some(( TiledPaneLayout { @@ -42,7 +42,7 @@ fn layout_with_multiple_panes() { pane } "#; - let layout = Layout::from_kdl(kdl_layout, "layout_file_name".into(), None, None).unwrap(); + let layout = Layout::from_kdl(kdl_layout, Some("layout_file_name".into()), None, None).unwrap(); let expected_layout = Layout { template: Some(( TiledPaneLayout { @@ -74,7 +74,7 @@ fn layout_with_nested_panes() { } } "#; - let layout = Layout::from_kdl(kdl_layout, "layout_file_name".into(), None, None).unwrap(); + let layout = Layout::from_kdl(kdl_layout, Some("layout_file_name".into()), None, None).unwrap(); let expected_layout = Layout { template: Some(( TiledPaneLayout { @@ -115,7 +115,7 @@ fn layout_with_floating_panes() { } } "#; - let layout = Layout::from_kdl(kdl_layout, "layout_file_name".into(), None, None).unwrap(); + let layout = Layout::from_kdl(kdl_layout, Some("layout_file_name".into()), None, None).unwrap(); let expected_layout = Layout { template: Some(( TiledPaneLayout::default(), @@ -159,7 +159,7 @@ fn layout_with_mixed_panes_and_floating_panes() { } } "#; - let layout = Layout::from_kdl(kdl_layout, "layout_file_name".into(), None, None).unwrap(); + let layout = Layout::from_kdl(kdl_layout, Some("layout_file_name".into()), None, None).unwrap(); let expected_layout = Layout { template: Some(( TiledPaneLayout { @@ -186,7 +186,7 @@ fn layout_with_hidden_floating_panes() { } } "#; - let layout = Layout::from_kdl(kdl_layout, "layout_file_name".into(), None, None).unwrap(); + let layout = Layout::from_kdl(kdl_layout, Some("layout_file_name".into()), None, None).unwrap(); let expected_layout = Layout { tabs: vec![( None, @@ -218,7 +218,7 @@ fn layout_with_floating_panes_template() { } } "#; - let layout = Layout::from_kdl(kdl_layout, "layout_file_name".into(), None, None).unwrap(); + let layout = Layout::from_kdl(kdl_layout, Some("layout_file_name".into()), None, None).unwrap(); let expected_layout = Layout { template: Some(( TiledPaneLayout { @@ -253,7 +253,7 @@ fn layout_with_shared_tiled_and_floating_panes_template() { } } "#; - let layout = Layout::from_kdl(kdl_layout, "layout_file_name".into(), None, None).unwrap(); + let layout = Layout::from_kdl(kdl_layout, Some("layout_file_name".into()), None, None).unwrap(); let expected_layout = Layout { template: Some(( TiledPaneLayout { @@ -301,7 +301,7 @@ fn layout_with_tabs_and_floating_panes() { } } "#; - let layout = Layout::from_kdl(kdl_layout, "layout_file_name".into(), None, None).unwrap(); + let layout = Layout::from_kdl(kdl_layout, Some("layout_file_name".into()), None, None).unwrap(); assert_snapshot!(format!("{:#?}", layout)); } @@ -312,7 +312,7 @@ fn layout_with_tabs() { tab } "#; - let layout = Layout::from_kdl(kdl_layout, "layout_file_name".into(), None, None).unwrap(); + let layout = Layout::from_kdl(kdl_layout, Some("layout_file_name".into()), None, None).unwrap(); let expected_layout = Layout { tabs: vec![(None, TiledPaneLayout::default(), vec![])], template: Some((TiledPaneLayout::default(), vec![])), @@ -336,7 +336,7 @@ fn layout_with_nested_differing_tabs() { } } "#; - let layout = Layout::from_kdl(kdl_layout, "layout_file_name".into(), None, None).unwrap(); + let layout = Layout::from_kdl(kdl_layout, Some("layout_file_name".into()), None, None).unwrap(); let expected_layout = Layout { tabs: vec![ ( @@ -378,7 +378,7 @@ fn layout_with_panes_in_different_mixed_split_sizes() { pane size=2; } "#; - let layout = Layout::from_kdl(kdl_layout, "layout_file_name".into(), None, None).unwrap(); + let layout = Layout::from_kdl(kdl_layout, Some("layout_file_name".into()), None, None).unwrap(); let expected_layout = Layout { template: Some(( TiledPaneLayout { @@ -416,7 +416,7 @@ fn layout_with_command_panes() { pane command="htop" } "#; - let layout = Layout::from_kdl(kdl_layout, "layout_file_name".into(), None, None).unwrap(); + let layout = Layout::from_kdl(kdl_layout, Some("layout_file_name".into()), None, None).unwrap(); let expected_layout = Layout { template: Some(( TiledPaneLayout { @@ -444,7 +444,7 @@ fn layout_with_command_panes_and_cwd() { pane command="htop" cwd="/path/to/my/cwd" } "#; - let layout = Layout::from_kdl(kdl_layout, "layout_file_name".into(), None, None).unwrap(); + let layout = Layout::from_kdl(kdl_layout, Some("layout_file_name".into()), None, None).unwrap(); let expected_layout = Layout { template: Some(( TiledPaneLayout { @@ -475,7 +475,7 @@ fn layout_with_command_panes_and_cwd_and_args() { } } "#; - let layout = Layout::from_kdl(kdl_layout, "layout_file_name".into(), None, None).unwrap(); + let layout = Layout::from_kdl(kdl_layout, Some("layout_file_name".into()), None, None).unwrap(); let expected_layout = Layout { template: Some(( TiledPaneLayout { @@ -507,7 +507,7 @@ fn layout_with_command_panes_and_close_on_exit() { } } "#; - let layout = Layout::from_kdl(kdl_layout, "layout_file_name".into(), None, None).unwrap(); + let layout = Layout::from_kdl(kdl_layout, Some("layout_file_name".into()), None, None).unwrap(); assert_snapshot!(format!("{:#?}", layout)); } @@ -520,7 +520,7 @@ fn layout_with_command_panes_and_start_suspended() { } } "#; - let layout = Layout::from_kdl(kdl_layout, "layout_file_name".into(), None, None).unwrap(); + let layout = Layout::from_kdl(kdl_layout, Some("layout_file_name".into()), None, None).unwrap(); assert_snapshot!(format!("{:#?}", layout)); } @@ -542,7 +542,7 @@ fn layout_with_plugin_panes() { } } "#; - let layout = Layout::from_kdl(kdl_layout, "layout_file_name".into(), None, None).unwrap(); + let layout = Layout::from_kdl(kdl_layout, Some("layout_file_name".into()), None, None).unwrap(); let mut expected_plugin_configuration = BTreeMap::new(); expected_plugin_configuration.insert("config_key_1".to_owned(), "config_value_1".to_owned()); expected_plugin_configuration.insert("2".to_owned(), "true".to_owned()); @@ -596,7 +596,7 @@ fn layout_with_borderless_panes() { pane borderless=true } "#; - let layout = Layout::from_kdl(kdl_layout, "layout_file_name".into(), None, None).unwrap(); + let layout = Layout::from_kdl(kdl_layout, Some("layout_file_name".into()), None, None).unwrap(); let expected_layout = Layout { template: Some(( TiledPaneLayout { @@ -620,7 +620,7 @@ fn layout_with_focused_panes() { pane focus=true } "#; - let layout = Layout::from_kdl(kdl_layout, "layout_file_name".into(), None, None).unwrap(); + let layout = Layout::from_kdl(kdl_layout, Some("layout_file_name".into()), None, None).unwrap(); let expected_layout = Layout { template: Some(( TiledPaneLayout { @@ -644,7 +644,7 @@ fn layout_with_pane_names() { pane name="my awesome pane" } "#; - let layout = Layout::from_kdl(kdl_layout, "layout_file_name".into(), None, None).unwrap(); + let layout = Layout::from_kdl(kdl_layout, Some("layout_file_name".into()), None, None).unwrap(); let expected_layout = Layout { template: Some(( TiledPaneLayout { @@ -669,7 +669,7 @@ fn layout_with_tab_names() { tab name="my cool tab name 2" } "#; - let layout = Layout::from_kdl(kdl_layout, "layout_file_name".into(), None, None).unwrap(); + let layout = Layout::from_kdl(kdl_layout, Some("layout_file_name".into()), None, None).unwrap(); let expected_layout = Layout { tabs: vec![ ( @@ -704,7 +704,7 @@ fn layout_with_focused_tab() { tab } "#; - let layout = Layout::from_kdl(kdl_layout, "layout_file_name".into(), None, None).unwrap(); + let layout = Layout::from_kdl(kdl_layout, Some("layout_file_name".into()), None, None).unwrap(); let expected_layout = Layout { tabs: vec![ (None, TiledPaneLayout::default(), vec![]), @@ -738,7 +738,7 @@ fn layout_with_tab_templates() { one-above-one-below } "#; - let layout = Layout::from_kdl(kdl_layout, "layout_file_name".into(), None, None).unwrap(); + let layout = Layout::from_kdl(kdl_layout, Some("layout_file_name".into()), None, None).unwrap(); let expected_layout = Layout { tabs: vec