aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAram Drevekenin <aram@poor.dev>2024-07-18 10:45:42 +0200
committerGitHub <noreply@github.com>2024-07-18 10:45:42 +0200
commit2deffc3289ff05a1429366cfa7cf7195ec27034f (patch)
tree5e8af968db1c5bb966bfe25b484c001378ab9351
parentdocs(changelog): configuration screen (diff)
downloadsl0ppij-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.rs4
-rw-r--r--src/sessions.rs2
-rw-r--r--zellij-server/src/plugins/zellij_exports.rs7
-rw-r--r--zellij-server/src/tab/unit/tab_integration_tests.rs177
-rw-r--r--zellij-utils/src/data.rs3
-rw-r--r--zellij-utils/src/input/layout.rs35
-rw-r--r--zellij-utils/src/input/unit/layout_test.rs192
-rw-r--r--zellij-utils/src/kdl/kdl_layout_parser.rs28
-rw-r--r--zellij-utils/src/kdl/mod.rs18
-rw-r--r--zellij-utils/src/plugin_api/event.rs5
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![
(
@@ -815,7 +815,7 @@ fn layout_with_default_tab_template() {
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();
assert_snapshot!(format!("{:#?}", layout));
}
@@ -840,7 +840,7 @@ fn layout_with_new_tab_template() {
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();
assert_snapshot!(format!("{:#?}", layout));
}
@@ -867,7 +867,7 @@ fn layout_with_pane_templates() {
left-and-right
}
"#;
- 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));
}
@@ -888,7 +888,7 @@ fn layout_with_tab_and_pane_templates() {
left-right-and-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();
assert_snapshot!(format!("{:#?}", layout));
}
@@ -909,7 +909,7 @@ fn layout_with_nested_pane_templates() {
left-and-right
}
"#;
- 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));
}
@@ -935,7 +935,7 @@ fn layout_with_nested_branched_pane_templates() {
left-and-right
}
"#;
- 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));
}
@@ -959,7 +959,7 @@ fn circular_dependency_pane_templates_error() {
one
}
"#;
- let layout = Layout::from_kdl(kdl_layout, "layout_file_name".into(), None, None);
+ let layout = Layout::from_kdl(kdl_layout, Some("layout_file_name".into()), None, None);
assert!(layout.is_err(), "circular dependency detected");
}
@@ -981,7 +981,7 @@ fn children_not_as_first_child_of_tab_template() {
horizontal-with-vertical-top
}
"#;
- 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));
}
@@ -1004,7 +1004,7 @@ fn error_on_more_than_one_children_block_in_tab_template() {
horizontal-with-vertical-top
}
"#;
- let layout = Layout::from_kdl(kdl_layout, "layout_file_name".into(), None, None);
+ let layout = Layout::from_kdl(kdl_layout, Some("layout_file_name".into()), None, None);
assert!(
layout.is_err(),
"error provided for more than one children block"
@@ -1029,7 +1029,7 @@ fn children_not_as_first_child_of_pane_template() {
horizontal-with-vertical-top
}
"#;
- 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));
}
@@ -1052,7 +1052,7 @@ fn error_on_more_than_one_children_block_in_pane_template() {
horizontal-with-vertical-top
}
"#;
- let layout = Layout::from_kdl(kdl_layout, "layout_file_name".into(), None, None);
+ let layout = Layout::from_kdl(kdl_layout, Some("layout_file_name".into()), None, None);
assert!(
layout.is_err(),
"error provided for more than one children block"
@@ -1081,7 +1081,7 @@ fn combined_tab_and_pane_template_both_with_children() {
horizontal-with-vertical-top
}
"#;
- 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));
}
@@ -1092,7 +1092,7 @@ fn layout_with_pane_excluded_from_sync() {
pane exclude_from_sync=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();
assert_snapshot!(format!("{:#?}", layout));
}
@@ -1108,7 +1108,7 @@ fn cannot_define_tab_template_name_with_space() {
pane
}
"#;
- let layout = Layout::from_kdl(kdl_layout, "layout_file_name".into(), None, None);
+ let layout = Layout::from_kdl(kdl_layout, Some("layout_file_name".into()), None, None);
assert!(layout.is_err(), "error provided for tab name with space");
}
@@ -1124,7 +1124,7 @@ fn cannot_define_pane_template_name_with_space() {
pane
}
"#;
- let layout = Layout::from_kdl(kdl_layout, "layout_file_name".into(), None, None);
+ let layout = Layout::from_kdl(kdl_layout, Some("layout_file_name".into()), None, None);
assert!(layout.is_err(), "error provided for tab name with space");
}
@@ -1138,7 +1138,7 @@ fn cannot_define_panes_and_tabs_on_same_level() {
}
}
"#;
- let layout = Layout::from_kdl(kdl_layout, "layout_file_name".into(), None, None);
+ let layout = Layout::from_kdl(kdl_layout, Some("layout_file_name".into()), None, None);
assert!(
layout.is_err(),
"error provided for tab and pane on the same level"
@@ -1172,7 +1172,7 @@ fn cannot_define_tab_template_names_as_keywords() {
",
keyword
);
- let layout = Layout::from_kdl(&kdl_layout, "layout_file_name".into(), None, None);
+ let layout = Layout::from_kdl(&kdl_layout, Some("layout_file_name".into()), None, None);
assert!(
layout.is_err(),
"{}",
@@ -1210,7 +1210,7 @@ fn cannot_define_pane_template_names_as_keywords() {
",
keyword
);
- let layout = Layout::from_kdl(&kdl_layout, "layout_file_name".into(), None, None);
+ let layout = Layout::from_kdl(&kdl_layout, Some("layout_file_name".into()), None, None);
assert!(
layout.is_err(),
"{}",
@@ -1231,7 +1231,7 @@ fn error_on_multiple_layout_nodes_in_file() {
"
);
let layout_error =
- Layout::from_kdl(&kdl_layout, "layout_file_name".into(), None, None).unwrap_err();
+ Layout::from_kdl(&kdl_layout, Some("layout_file_name".into()), None, None).unwrap_err();
assert_snapshot!(format!("{:?}", layout_error));
}
@@ -1247,7 +1247,7 @@ fn error_on_unknown_layout_node() {
"
);
let layout_error =
- Layout::from_kdl(&kdl_layout, "layout_file_name".into(), None, None).unwrap_err();
+ Layout::from_kdl(&kdl_layout, Some("layout_file_name".into()), None, None).unwrap_err();
assert_snapshot!(format!("{:?}", layout_error));
}
@@ -1261,7 +1261,7 @@ fn error_on_unknown_layout_pane_property() {
"
);
let layout_error =
- Layout::from_kdl(&kdl_layout, "layout_file_name".into(), None, None).unwrap_err();
+ Layout::from_kdl(&kdl_layout, Some("layout_file_name".into()), None, None).unwrap_err();
assert_snapshot!(format!("{:?}", layout_error));
}
@@ -1275,7 +1275,7 @@ fn error_on_unknown_layout_pane_template_property() {
"
);
let layout_error =
- Layout::from_kdl(&kdl_layout, "layout_file_name".into(), None, None).unwrap_err();
+ Layout::from_kdl(&kdl_layout, Some("layout_file_name".into()), None, None).unwrap_err();
assert_snapshot!(format!("{:?}", layout_error));
}
@@ -1289,7 +1289,7 @@ fn error_on_unknown_layout_tab_property() {
"
);
let layout_error =
- Layout::from_kdl(&kdl_layout, "layout_file_name".into(), None, None).unwrap_err();
+ Layout::from_kdl(&kdl_layout, Some("layout_file_name".into()), None, None).unwrap_err();
assert_snapshot!(format!("{:?}", layout_error));
}
@@ -1303,7 +1303,7 @@ fn error_on_unknown_layout_tab_template_property() {
"
);
let layout_error =
- Layout::from_kdl(&kdl_layout, "layout_file_name".into(), None, None).unwrap_err();
+ Layout::from_kdl(&kdl_layout, Some("layout_file_name".into()), None, None).unwrap_err();
assert_snapshot!(format!("{:?}", layout_error));
}
@@ -1321,7 +1321,7 @@ fn error_on_pane_templates_without_a_name() {
"
);
let layout_error =
- Layout::from_kdl(&kdl_layout, "layout_file_name".into(), None, None).unwrap_err();
+ Layout::from_kdl(&kdl_layout, Some("layout_file_name".into()), None, None).unwrap_err();
assert_snapshot!(format!("{:?}", layout_error));
}
@@ -1339,7 +1339,7 @@ fn error_on_tab_templates_without_a_name() {
"
);
let layout_error =
- Layout::from_kdl(&kdl_layout, "layout_file_name".into(), None, None).unwrap_err();
+ Layout::from_kdl(&kdl_layout, Some("layout_file_name".into()), None, None).unwrap_err();
assert_snapshot!(format!("{:?}", layout_error));
}
@@ -1353,7 +1353,7 @@ fn error_on_more_than_one_focused_tab() {
}
"#;
let layout_error =
- Layout::from_kdl(kdl_layout, "layout_file_name".into(), None, None).unwrap_err();
+ Layout::from_kdl(kdl_layout, Some("layout_file_name".into()), None, None).unwrap_err();
assert_snapshot!(format!("{:?}", layout_error));
}
@@ -1371,7 +1371,7 @@ fn args_override_args_in_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();
assert_snapshot!(format!("{:#?}", layout));
}
@@ -1389,7 +1389,7 @@ fn close_on_exit_overrides_close_on_exit_in_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();
assert_snapshot!(format!("{:#?}", layout));
}
@@ -1406,7 +1406,7 @@ fn args_added_to_args_in_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();
assert_snapshot!(format!("{:#?}", layout));
}
@@ -1423,7 +1423,7 @@ fn close_on_exit_added_to_close_on_exit_in_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();
assert_snapshot!(format!("{:#?}", layout));
}
@@ -1441,7 +1441,7 @@ fn cwd_override_cwd_in_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();
assert_snapshot!(format!("{:#?}", layout));
}
@@ -1458,7 +1458,7 @@ fn cwd_added_to_cwd_in_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();
assert_snapshot!(format!("{:#?}", layout));
}
@@ -1471,7 +1471,7 @@ fn error_on_mixed_command_and_child_panes() {
}
}
"#;
- let layout = Layout::from_kdl(kdl_layout, "layout_file_name".into(), None, None);
+ let layout = Layout::from_kdl(kdl_layout, Some("layout_file_name".into()), None, None);
assert!(layout.is_err(), "error provided");
}
@@ -1485,7 +1485,7 @@ fn error_on_mixed_cwd_and_child_panes() {
}
}
"#;
- let layout = Layout::from_kdl(kdl_layout, "layout_file_name".into(), None, None);
+ let layout = Layout::from_kdl(kdl_layout, Some("layout_file_name".into()), None, None);
assert!(layout.is_err(), "error provided");
}
@@ -1498,7 +1498,7 @@ fn error_on_bare_args_without_command() {
}
}
"#;
- let layout = Layout::from_kdl(kdl_layout, "layout_file_name".into(), None, None);
+ let layout = Layout::from_kdl(kdl_layout, Some("layout_file_name".into()), None, None);
assert!(layout.is_err(), "error provided");
}
@@ -1511,7 +1511,7 @@ fn error_on_bare_close_on_exit_without_command() {
}
}
"#;
- let layout = Layout::from_kdl(kdl_layout, "layout_file_name".into(), None, None);
+ let layout = Layout::from_kdl(kdl_layout, Some("layout_file_name".into()), None, None);
assert!(layout.is_err(), "error provided");
}
@@ -1525,7 +1525,7 @@ fn error_on_bare_args_in_template_without_command() {
}
}
"#;
- let layout = Layout::from_kdl(kdl_layout, "layout_file_name".into(), None, None);
+ let layout = Layout::from_kdl(kdl_layout, Some("layout_file_name".into()), None, None);
assert!(layout.is_err(), "error provided");
}
@@ -1539,7 +1539,7 @@ fn error_on_bare_close_on_exit_in_template_without_command() {
}
}
"#;
- let layout = Layout::from_kdl(kdl_layout, "layout_file_name".into(), None, None);
+ let layout = Layout::from_kdl(kdl_layout, Some("layout_file_name".into()), None, None);
assert!(layout.is_err(), "error provided");
}
@@ -1558,7 +1558,7 @@ fn pane_template_command_with_cwd_overriden_by_its_consumers_command_cwd() {
// pane should have /tmp/foo and not /tmp/bar as 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();
assert_snapshot!(format!("{:#?}", layout));
}
@@ -1575,7 +1575,7 @@ fn pane_template_command_with_cwd_remains_when_its_consumer_command_does_not_hav
// pane should have /tmp/bar as its cwd with the pwd command
}
"#;
- 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));
}
@@ -1593,7 +1593,7 @@ fn pane_template_command_without_cwd_is_overriden_by_its_consumers_cwd() {
// pane should have /tmp/bar as its cwd with the pwd command
}
"#;
- 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));
}
@@ -1612,7 +1612,7 @@ fn pane_template_command_with_cwd_is_overriden_by_its_consumers_bare_cwd() {
// pane should have /tmp/bar as its cwd with the tail command
}
"#;
- 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));
}
@@ -1630,7 +1630,7 @@ fn pane_template_command_without_cwd_receives_its_consumers_bare_cwd() {
// pane should have /tmp/bar as its cwd with the tail command
}
"#;
- 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));
}
@@ -1648,7 +1648,7 @@ fn pane_template_with_bare_cwd_overriden_by_its_consumers_bare_cwd() {
// pane should have /tmp/foo without a command
}
"#;
- 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));
}
@@ -1664,7 +1664,7 @@ fn pane_template_with_bare_propagated_to_its_consumer_command_without_cwd() {
// pane should have /tmp/foo with the tail command
}
"#;
- 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));
}
@@ -1682,7 +1682,7 @@ fn pane_template_with_bare_propagated_to_its_consumer_command_with_cwd() {
// pane should have /tmp/bar with the tail command
}
"#;
- 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));
}
@@ -1698,7 +1698,7 @@ fn pane_template_with_bare_propagated_to_its_consumer_edit() {
// pane should have /tmp/foo/bar with the edit file variant
}
"#;
- 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));
}
@@ -1714,7 +1714,7 @@ fn pane_template_with_command_propagated_to_its_consumer_edit() {
// pane should have /tmp/foo/bar with the edit file variant
}
"#;
- 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));
}
@@ -1728,7 +1728,7 @@ fn global_cwd_given_to_panes_without_cwd() {
// both should have the /tmp 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();
assert_snapshot!(format!("{:#?}", layout));
}
@@ -1741,7 +1741,7 @@ fn global_cwd_prepended_to_panes_with_cwd() {
pane command="tail" cwd="/home/foo" // should be /home/foo because its an absolute path
}
"#;
- 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));
}
@@ -1757,7 +1757,7 @@ fn global_cwd_passed_from_layout_constructor() {
"#;
let layout = Layout::from_kdl(
kdl_layout,
- "layout_file_name".into(),
+ Some("layout_file_name".into()),
None,
Some(PathBuf::from("/tmp")),
)
@@ -1778,7 +1778,7 @@ fn global_cwd_passed_from_layout_constructor_overrides_global_cwd_in_layout_file
"#;
let layout = Layout::from_kdl(
kdl_layout,
- "layout_file_name".into(),
+ Some("layout_file_name".into()),
None,
Some(PathBuf::from("/tmp")),
)
@@ -1798,7 +1798,7 @@ fn global_cwd_with_tab_cwd_given_to_panes_without_cwd() {
// both should have the /tmp/foo 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();
assert_snapshot!(format!("{:#?}", layout));
}
@@ -1813,7 +1813,7 @@ fn tab_cwd_given_to_panes_without_cwd() {
// both should have the /tmp 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();
assert_snapshot!(format!("{:#?}", layout));
}
@@ -1828,7 +1828,7 @@ fn tab_cwd_prepended_to_panes_with_cwd() {
// both should have the /tmp/foo 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();
assert_snapshot!(format!("{:#?}", layout));
}
@@ -1843,7 +1843,7 @@ fn global_cwd_and_tab_cwd_prepended_to_panes_with_and_without_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();
assert_snapshot!(format!("{:#?}", layout));
}
@@ -1864,7 +1864,7 @@ fn global_cwd_and_tab_cwd_prepended_to_panes_with_and_without_cwd_in_pane_templa
}
}
"#;
- 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));
}
@@ -1883,7 +1883,7 @@ fn global_cwd_and_tab_cwd_prepended_to_panes_with_and_without_cwd_in_tab_templat
}
}
"#;
- 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));
}
@@ -1930,7 +1930,7 @@ fn can_load_swap_layouts_from_a_different_file() {
"#;
let layout = Layout::from_kdl(
kdl_layout,
- "layout_file_name".into(),
+ Some("layout_file_name".into()),
Some(("swap_layout_file_name".into(), kdl_swap_layout)),
None,
)
@@ -1948,7 +1948,7 @@ fn can_define_stacked_children_for_pane_node() {
}
}
"#;
- 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));
}
@@ -1965,7 +1965,7 @@ fn can_define_stacked_children_for_pane_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();
assert_snapshot!(format!("{:#?}", layout));
}
@@ -1980,7 +1980,7 @@ fn can_define_a_stack_with_an_expanded_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();
assert_snapshot!(format!("{:#?}", layout));
}
@@ -1991,7 +1991,7 @@ fn cannot_define_stacked_panes_for_bare_node() {
pane stacked=true
}
"#;
- let layout = Layout::from_kdl(kdl_layout, "layout_file_name".into(), None, None);
+ let layout = Layout::from_kdl(kdl_layout, Some("layout_file_name".into()), None, None);
assert!(layout.is_err(), "error provided for tab name with space");
}
@@ -2005,7 +2005,7 @@ fn cannot_define_an_expanded_pane_outside_of_a_stack() {
}
}
"#;
- let layout = Layout::from_kdl(kdl_layout, "layout_file_name".into(), None, None);
+ let layout = Layout::from_kdl(kdl_layout, Some("layout_file_name".into()), None, None);
assert!(layout.is_err(), "error provided for tab name with space");
}
@@ -2019,7 +2019,7 @@ fn cannot_define_stacked_panes_with_vertical_split_direction() {
}
}
"#;
- let layout = Layout::from_kdl(kdl_layout, "layout_file_name".into(), None, None);
+ let layout = Layout::from_kdl(kdl_layout, Some("layout_file_name".into()), None, None);
assert!(layout.is_err(), "error provided for tab name with space");
}
@@ -2036,7 +2036,7 @@ fn cannot_define_stacked_panes_with_grandchildren() {
}
}
"#;
- let layout = Layout::from_kdl(kdl_layout, "layout_file_name".into(), None, None);
+ let layout = Layout::from_kdl(kdl_layout, Some("layout_file_name".into()), None, None);
assert!(layout.is_err(), "error provided for tab name with space");
}
@@ -2056,7 +2056,7 @@ fn cannot_define_stacked_panes_with_grandchildren_in_pane_template() {
}
}
"#;
- let layout = Layout::from_kdl(kdl_layout, "layout_file_name".into(), None, None);
+ let layout = Layout::from_kdl(kdl_layout, Some("layout_file_name".into()), None, None);
assert!(layout.is_err(), "error provided for tab name with space");
}
@@ -2090,7 +2090,7 @@ fn run_plugin_location_parsing() {
}
}
"#;
- 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 {
@@ -2218,7 +2218,7 @@ fn env_var_expansion() {
old_vars.push((key, std::env::var(key).ok()));
std::env::set_var(key, value);
}
- let layout = Layout::from_kdl(raw_layout, "layout_file_name".into(), None, None);
+ let layout = Layout::from_kdl(raw_layout, Some("layout_file_name".into()), None, None);
// restore environment.
for (key, opt) in old_vars {
match opt {
@@ -2239,6 +2239,6 @@ fn env_var_missing() {
pane cwd="relative"
}
"#;
- let layout = Layout::from_kdl(kdl_layout, "layout_file_name".into(), None, None);
+ let layout = Layout::from_kdl(kdl_layout, Some("layout_file_name".into()), None, None);
assert!(layout.is_err(), "invalid env var lookup should fail");
}
diff --git a/zellij-utils/src/kdl/kdl_layout_parser.rs b/zellij-utils/src/kdl/kdl_layout_parser.rs
index 1a53308e..b2952501 100644
--- a/zellij-utils/src/kdl/kdl_layout_parser.rs
+++ b/zellij-utils/src/kdl/kdl_layout_parser.rs
@@ -40,11 +40,15 @@ pub struct KdlLayoutParser<'a> {
pane_templates: HashMap<String, (PaneOrFloatingPane, KdlNode)>,
default_tab_template: Option<(TiledPaneLayout, Vec<FloatingPaneLayout>, KdlNode)>,
new_tab_template: Option<(TiledPaneLayout, Vec<FloatingPaneLayout>)>,
- file_name: PathBuf,
+ file_name: Option<PathBuf>,
}
impl<'a> KdlLayoutParser<'a> {
- pub fn new(raw_layout: &'a str, global_cwd: Option<PathBuf>, file_name: String) -> Self {
+ pub fn new(
+ raw_layout: &'a str,
+ global_cwd: Option<PathBuf>,
+ file_name: Option<String>,
+ ) -> Self {
KdlLayoutParser {
raw_layout,
tab_templates: HashMap::new(),
@@ -52,7 +56,7 @@ impl<'a> KdlLayoutParser<'a> {
default_tab_template: None,
new_tab_template: None,
global_cwd,
- file_name: PathBuf::from(file_name),
+ file_name: file_name.map(|f| PathBuf::from(f)),
}
}
fn is_a_reserved_word(&self, word: &str) -> bool {
@@ -559,9 +563,12 @@ impl<'a> KdlLayoutParser<'a> {
}
self.assert_no_mixed_children_and_properties(kdl_node)?;
let pane_initial_contents = contents_file.and_then(|contents_file| {
- self.file_name.parent().and_then(|parent_folder| {
- std::fs::read_to_string(parent_folder.join(contents_file)).ok()
- })
+ self.file_name
+ .as_ref()
+ .and_then(|f| f.parent())
+ .and_then(|parent_folder| {
+ std::fs::read_to_string(parent_folder.join(contents_file)).ok()
+ })
});
Ok(TiledPaneLayout {
borderless: borderless.unwrap_or_default(),
@@ -596,9 +603,12 @@ impl<'a> KdlLayoutParser<'a> {
kdl_get_string_property_or_child_value_with_error!(kdl_node, "contents_file");
self.assert_no_mixed_children_and_properties(kdl_node)?;
let pane_initial_contents = contents_file.and_then(|contents_file| {
- self.file_name.parent().and_then(|parent_folder| {
- std::fs::read_to_string(parent_folder.join(contents_file)).ok()
- })
+ self.file_name
+ .as_ref()
+ .and_then(|f| f.parent())
+ .and_then(|parent_folder| {
+ std::fs::read_to_string(parent_folder.join(contents_file)).ok()
+ })
});
Ok(FloatingPaneLayout {
name,
diff --git a/zellij-utils/src/kdl/mod.rs b/zellij-utils/src/kdl/mod.rs
index 02ef0ab8..95b534fd 100644
--- a/zellij-utils/src/kdl/mod.rs
+++ b/zellij-utils/src/kdl/mod.rs
@@ -1658,18 +1658,21 @@ impl Options {
impl Layout {
pub fn from_kdl(
raw_layout: &str,
- file_name: String,
+ file_name: Option<String>,
raw_swap_layouts: Option<(&str, &str)>, // raw_swap_layouts swap_layouts_file_name
cwd: Option<PathBuf>,
) -> Result<Self, ConfigError> {
let mut kdl_layout_parser = KdlLayoutParser::new(raw_layout, cwd, file_name.clone());
let layout = kdl_layout_parser.parse().map_err(|e| match e {
- ConfigError::KdlError(kdl_error) => {
- ConfigError::KdlError(kdl_error.add_src(file_name, String::from(raw_layout)))
- },
- ConfigError::KdlDeserializationError(kdl_error) => {
- kdl_layout_error(kdl_error, file_name, raw_layout)
- },
+ ConfigError::KdlError(kdl_error) => ConfigError::KdlError(kdl_error.add_src(
+ file_name.unwrap_or_else(|| "N/A".to_owned()),
+ String::from(raw_layout),
+ )),
+ ConfigError::KdlDeserializationError(kdl_error) => kdl_layout_error(
+ kdl_error,
+ file_name.unwrap_or_else(|| "N/A".to_owned()),
+ raw_layout,
+ ),
e => e,
})?;
match raw_swap_layouts {
@@ -2193,6 +2196,7 @@ impl SessionInfo {
LayoutInfo::File(name) => (name.clone(), "file"),
LayoutInfo::BuiltIn(name) => (name.clone(), "built-in"),
LayoutInfo::Url(url) => (url.clone(), "url"),
+ LayoutInfo::Stringified(stringified) => ("stringified-layout".to_owned(), "N/A"),
};
let mut layout_node = KdlNode::new(format!("{}", layout_name));
let layout_source = KdlEntry::new_prop("source", layout_source);
diff --git a/zellij-utils/src/plugin_api/event.rs b/zellij-utils/src/plugin_api/event.rs
index 1e793e66..7996801c 100644
--- a/zellij-utils/src/plugin_api/event.rs
+++ b/zellij-utils/src/plugin_api/event.rs
@@ -550,6 +550,10 @@ impl TryFrom<LayoutInfo> for ProtobufLayoutInfo {
source: "url".to_owned(),
name,
}),
+ LayoutInfo::Stringified(stringified_layout) => Ok(ProtobufLayoutInfo {
+ source: "stringified".to_owned(),
+ name: stringified_layout.clone(),
+ }),
}
}
}
@@ -561,6 +565,7 @@ impl TryFrom<ProtobufLayoutInfo> for LayoutInfo {
"file" => Ok(LayoutInfo::File(protobuf_layout_info.name)),
"built-in" => Ok(LayoutInfo::BuiltIn(protobuf_layout_info.name)),
"url" => Ok(LayoutInfo::Url(protobuf_layout_info.name)),
+ "stringified" => Ok(LayoutInfo::Stringified(protobuf_layout_info.name)),
_ => Err("Unknown source for layout"),
}
}