diff options
| author | user <user@clank> | 2026-08-11 00:50:30 +0200 |
|---|---|---|
| committer | user <user@clank> | 2026-08-11 00:50:30 +0200 |
| commit | f72c7266fe88070149639d66ae09b43c2d990f6e (patch) | |
| tree | ed230e9d89810ec34932ed95bb106ba02774540e /zellij-utils/src | |
| parent | sl0p: record the green test baseline in SPEED.md (diff) | |
| download | sl0ppij-f72c7266fe88070149639d66ae09b43c2d990f6e.tar.gz sl0ppij-f72c7266fe88070149639d66ae09b43c2d990f6e.tar.xz sl0ppij-f72c7266fe88070149639d66ae09b43c2d990f6e.zip | |
sl0p: add `arrangement` to build a tree for N panes
A `children` placeholder inserts every pane it receives as a flat sibling.
That single hardcoded policy is why a layout can only express "N equal
columns", "N equal rows" or "one stack" without hand-writing a variant per
pane count -- the max_panes=5 / max_panes=8 / max_panes=12 ladders in a swap
layout file exist purely to work around it.
`pane arrangement="grid" { children; }` builds a tree for N panes instead.
Two to start: grid (ceil(sqrt(n)) columns, rows filled left to right) and
master-stack (one 60%-wide master, the rest beside it).
Generates a TiledPaneLayout rather than geometry, so everything downstream
works unchanged: split_space, the minimum-size feasibility check,
LayoutApplier, swap-layout damage tracking, and the responsive collapse. It
composes with that last one for free -- a grid is simply infeasible on a
narrow terminal, so it is skipped and the collapse takes over.
The arrangement builds ONE self-contained subtree rather than splicing a
variable number of nodes in among the placeholder's siblings, so it stays well
defined next to the pre-existing "children node with sibling nodes" TODO
rather than leaning on it.
Like default_fg/default_bg, the field has no protobuf representation, so it is
defaulted at both plugin-API boundaries and does not survive a round trip.
This is why it is a field rather than a LayoutConstraint variant: a new enum
variant would have no representation when converting TO protobuf, and the
committed prost assets cannot be regenerated here (no protoc).
The 48 snapshot updates are the new field appearing in TiledPaneLayout debug
dumps (324 lines, all `children_arrangement: None`). No snapshot content was
removed. The `expression:` metadata churn in those files is pre-existing drift
that regeneration swept up: the stored snapshots recorded the expression
before normalize_layout_debug was introduced.
Diffstat (limited to 'zellij-utils/src')
49 files changed, 701 insertions, 94 deletions
diff --git a/zellij-utils/src/input/layout.rs b/zellij-utils/src/input/layout.rs index 3f1f72f1..4162811f 100644 --- a/zellij-utils/src/input/layout.rs +++ b/zellij-utils/src/input/layout.rs @@ -63,6 +63,95 @@ impl From<Direction> for SplitDirection { } } +/// How a `children` placeholder arranges the panes that get inserted into it. +/// +/// Without one, every inserted pane becomes a flat sibling, which is why a +/// layout can only express "N equal columns" / "N equal rows" / "one stack" +/// without hand-enumerating a variant per pane count. An arrangement builds a +/// tree for N panes instead. +/// +/// Deliberately produces a `TiledPaneLayout` rather than geometry directly: +/// everything downstream (split_space, the minimum-size feasibility check, +/// LayoutApplier, swap-layout damage tracking, the responsive collapse) already +/// operates on trees, so generating one gets all of it for free. +#[derive(Debug, PartialEq, Eq, Serialize, Deserialize, Clone, Copy)] +pub enum PaneArrangement { + /// Roughly square: ceil(sqrt(n)) columns, rows filled left to right. + Grid, + /// One large "master" pane beside the remaining panes. + MasterStack, +} + +/// Share of the space given to the master pane in `PaneArrangement::MasterStack`. +const MASTER_STACK_MASTER_PERCENT: usize = 60; + +impl PaneArrangement { + pub fn from_str(name: &str) -> Option<Self> { + match name.trim().to_lowercase().replace('_', "-").as_str() { + "grid" => Some(PaneArrangement::Grid), + "master-stack" => Some(PaneArrangement::MasterStack), + _ => None, + } + } + pub fn possible_values() -> &'static str { + "\"grid\", \"master-stack\"" + } + /// Build a single container node holding `panes`, arranged. + /// + /// Returns one node rather than a list so that a `children` placeholder with + /// sibling nodes stays well defined: the arrangement is self-contained in + /// one subtree instead of splicing a variable number of nodes in among the + /// siblings. + pub fn build(&self, panes: Vec<TiledPaneLayout>) -> TiledPaneLayout { + match self { + PaneArrangement::Grid => Self::build_grid(panes), + PaneArrangement::MasterStack => Self::build_master_stack(panes), + } + } + fn build_grid(panes: Vec<TiledPaneLayout>) -> TiledPaneLayout { + let pane_count = panes.len(); + if pane_count <= 1 { + return Self::row(panes, SplitDirection::Vertical); + } + // ceil(sqrt(n)) columns. Terminal cells are about twice as tall as they + // are wide, so a square *grid* is a wide *rectangle* on screen, which is + // the shape that reads well for text. + let columns = (pane_count as f64).sqrt().ceil() as usize; + let columns = columns.max(1); + let mut rows: Vec<TiledPaneLayout> = vec![]; + let mut remaining = panes; + while !remaining.is_empty() { + let take = columns.min(remaining.len()); + let rest = remaining.split_off(take); + rows.push(Self::row(remaining, SplitDirection::Vertical)); + remaining = rest; + } + Self::row(rows, SplitDirection::Horizontal) + } + fn build_master_stack(mut panes: Vec<TiledPaneLayout>) -> TiledPaneLayout { + if panes.len() <= 1 { + return Self::row(panes, SplitDirection::Vertical); + } + let rest = panes.split_off(1); + let mut master = panes.remove(0); + master.split_size = Some(SplitSize::Percent(MASTER_STACK_MASTER_PERCENT)); + let stack = Self::row(rest, SplitDirection::Horizontal); + Self::row(vec![master, stack], SplitDirection::Vertical) + } + /// A container holding `children`, split along `direction`. A single child + /// is returned as-is so the tree does not grow pointless one-child levels. + fn row(mut children: Vec<TiledPaneLayout>, direction: SplitDirection) -> TiledPaneLayout { + if children.len() == 1 { + return children.remove(0); + } + TiledPaneLayout { + children_split_direction: direction, + children, + ..Default::default() + } + } +} + #[derive(Debug, Serialize, Deserialize, Clone, Copy, PartialEq, Eq)] pub enum SplitSize { #[serde(alias = "percent")] @@ -861,6 +950,12 @@ pub struct TiledPaneLayout { pub pane_initial_contents: Option<String>, pub default_fg: Option<String>, pub default_bg: Option<String>, + /// How panes inserted at this node's `children` placeholder are arranged. + /// `None` keeps the historical behaviour: flat siblings. + /// + /// Like `default_fg`/`default_bg`, this has no protobuf representation, so + /// it does not survive a round trip through the plugin API. + pub children_arrangement: Option<PaneArrangement>, } impl TiledPaneLayout { @@ -893,9 +988,16 @@ impl TiledPaneLayout { // returns true if successfully inserted and false otherwise match self.external_children_index { Some(external_children_index) => { - children_nodes.reverse(); - for child_node in children_nodes.drain(..) { - self.children.insert(external_children_index, child_node); + if let Some(arrangement) = self.children_arrangement { + // one self-contained subtree, so a `children` placeholder + // that has sibling nodes stays well defined + let arranged = arrangement.build(children_nodes.drain(..).collect()); + self.children.insert(external_children_index, arranged); + } else { + children_nodes.reverse(); + for child_node in children_nodes.drain(..) { + self.children.insert(external_children_index, child_node); + } } self.external_children_index = None; Ok(true) diff --git a/zellij-utils/src/input/unit/layout_test.rs b/zellij-utils/src/input/unit/layout_test.rs index 52b71613..45537bd8 100644 --- a/zellij-utils/src/input/unit/layout_test.rs +++ b/zellij-utils/src/input/unit/layout_test.rs @@ -2535,3 +2535,159 @@ fn tiled_pane_still_rejects_zero_percent() { let result = SplitSize::from_str("1%"); assert!(result.is_ok()); } + +// --- sl0p: `arrangement` on a `children` placeholder --------------------- +// +// These assert the resulting GEOMETRY rather than the tree shape: the tree is +// an implementation detail, "did I get a grid" is the actual contract. + +/// Panes as (x, y, cols, rows), sorted, for a layout applied to `space`. +#[cfg(test)] +fn arranged_geoms(kdl: &str, pane_count: usize, cols: usize, rows: usize) -> Vec<(usize, usize, usize, usize)> { + let layout = Layout::from_kdl(kdl, Some("file.kdl".into()), None, None).unwrap(); + // a layout written without an explicit `tab` node lands in `template` + let tab_layout = layout.template.as_ref().unwrap().0.clone(); + // percent-with-inner, exactly as a real display area is built + // (PaneGeom::from(&Size)); a fixed-size space rejects implicitly sized children + let space = PaneGeom::from(&crate::pane_size::Size { rows, cols }); + let mut geoms: Vec<(usize, usize, usize, usize)> = tab_layout + .position_panes_in_space(&space, Some(pane_count), false, false) + .unwrap() + .iter() + .map(|(_, g)| (g.x, g.y, g.cols.as_usize(), g.rows.as_usize())) + .collect(); + geoms.sort(); + geoms +} + +#[test] +fn sl0p_arrangement_grid_lays_four_panes_out_two_by_two() { + let kdl = r#" + layout { + pane arrangement="grid" { + children + } + } + "#; + let geoms = arranged_geoms(kdl, 4, 80, 20); + assert_eq!( + geoms, + vec![ + (0, 0, 40, 10), + (0, 10, 40, 10), + (40, 0, 40, 10), + (40, 10, 40, 10), + ], + "four panes should form a 2x2 grid" + ); +} + +#[test] +fn sl0p_arrangement_grid_wraps_an_uneven_pane_count() { + // 5 panes -> ceil(sqrt(5)) = 3 columns, so rows of 3 and 2 + let kdl = r#" + layout { + pane arrangement="grid" { + children + } + } + "#; + let geoms = arranged_geoms(kdl, 5, 90, 20); + let top: Vec<_> = geoms.iter().filter(|(_, y, _, _)| *y == 0).collect(); + let bottom: Vec<_> = geoms.iter().filter(|(_, y, _, _)| *y != 0).collect(); + assert_eq!(top.len(), 3, "first row should hold 3 panes, got {:?}", geoms); + assert_eq!( + bottom.len(), + 2, + "second row should hold the remaining 2, got {:?}", + geoms + ); + assert!( + bottom.iter().all(|(_, _, cols, _)| *cols > top[0].2), + "the shorter row should share the width between fewer panes, got {:?}", + geoms + ); +} + +#[test] +fn sl0p_arrangement_master_stack_gives_the_master_the_larger_share() { + let kdl = r#" + layout { + pane arrangement="master-stack" { + children + } + } + "#; + let geoms = arranged_geoms(kdl, 3, 100, 20); + // master: full height, 60% of the width + assert!( + geoms.contains(&(0, 0, 60, 20)), + "expected a 60%-wide full-height master, got {:?}", + geoms + ); + // the other two split the remaining 40% vertically + assert_eq!( + geoms + .iter() + .filter(|(x, _, cols, rows)| *x == 60 && *cols == 40 && *rows == 10) + .count(), + 2, + "expected two stacked panes beside the master, got {:?}", + geoms + ); +} + +#[test] +fn sl0p_arrangement_absent_still_produces_flat_siblings() { + // the historical behaviour must be untouched when no arrangement is given + let kdl = r#" + layout { + pane split_direction="vertical" { + children + } + } + "#; + let geoms = arranged_geoms(kdl, 4, 80, 20); + assert!( + geoms.iter().all(|(_, y, _, rows)| *y == 0 && *rows == 20), + "without an arrangement the panes should stay in one flat row, got {:?}", + geoms + ); +} + +#[test] +fn sl0p_arrangement_rejects_an_unknown_value() { + let kdl = r#" + layout { + pane arrangement="fibonacci" { + children + } + } + "#; + let err = Layout::from_kdl(kdl, Some("file.kdl".into()), None, None) + .expect_err("an unknown arrangement must be a config error, not silently ignored"); + let msg = format!("{:?}", err); + assert!( + msg.contains("fibonacci") && msg.contains("grid"), + "the error should name the bad value and list the valid ones, got {}", + msg + ); +} + +#[test] +fn sl0p_arrangement_without_a_children_node_is_rejected() { + // an arrangement only acts on panes inserted at a `children` placeholder, + // so without one it would quietly do nothing + let kdl = r#" + layout { + pane arrangement="grid" { + pane + pane + } + } + "#; + assert!( + Layout::from_kdl(kdl, Some("file.kdl".into()), None, None).is_err(), + "an arrangement without a children node must be rejected" + ); +} diff --git a/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__args_added_to_args_in_template.snap b/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__args_added_to_args_in_template.snap index bb4010cb..ab9c17fa 100644 --- a/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__args_added_to_args_in_template.snap +++ b/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__args_added_to_args_in_template.snap @@ -1,7 +1,7 @@ --- source: zellij-utils/src/input/./unit/layout_test.rs -assertion_line: 1410 -expression: "format!(\"{:#?}\", layout)" +assertion_line: 1423 +expression: "normalize_layout_debug(format!(\"{:#?}\", layout))" --- Layout { tabs: [], @@ -41,6 +41,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -74,6 +75,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -89,6 +91,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, [], ), diff --git a/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__args_override_args_in_template.snap b/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__args_override_args_in_template.snap index 9830de48..515888b1 100644 --- a/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__args_override_args_in_template.snap +++ b/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__args_override_args_in_template.snap @@ -1,7 +1,7 @@ --- source: zellij-utils/src/input/./unit/layout_test.rs -assertion_line: 1375 -expression: "format!(\"{:#?}\", layout)" +assertion_line: 1388 +expression: "normalize_layout_debug(format!(\"{:#?}\", layout))" --- Layout { tabs: [], @@ -44,6 +44,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -77,6 +78,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -92,6 +94,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, [], ), diff --git a/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__can_define_a_stack_with_an_expanded_pane.snap b/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__can_define_a_stack_with_an_expanded_pane.snap index 688f2b80..f94af9ab 100644 --- a/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__can_define_a_stack_with_an_expanded_pane.snap +++ b/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__can_define_a_stack_with_an_expanded_pane.snap @@ -1,7 +1,7 @@ --- source: zellij-utils/src/input/./unit/layout_test.rs -assertion_line: 1984 -expression: "format!(\"{:#?}\", layout)" +assertion_line: 1997 +expression: "normalize_layout_debug(format!(\"{:#?}\", layout))" --- Layout { tabs: [], @@ -33,6 +33,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -51,6 +52,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -69,6 +71,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -84,6 +87,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -99,6 +103,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, [], ), diff --git a/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__can_define_stacked_children_for_pane_node.snap b/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__can_define_stacked_children_for_pane_node.snap index debfb03f..fbd5a489 100644 --- a/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__can_define_stacked_children_for_pane_node.snap +++ b/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__can_define_stacked_children_for_pane_node.snap @@ -1,7 +1,7 @@ --- source: zellij-utils/src/input/./unit/layout_test.rs -assertion_line: 1952 -expression: "format!(\"{:#?}\", layout)" +assertion_line: 1965 +expression: "normalize_layout_debug(format!(\"{:#?}\", layout))" --- Layout { tabs: [], @@ -33,6 +33,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -51,6 +52,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -66,6 +68,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -81,6 +84,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, [], ), diff --git a/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__can_define_stacked_children_for_pane_template.snap b/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__can_define_stacked_children_for_pane_template.snap index 35c767a6..d46e115f 100644 --- a/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__can_define_stacked_children_for_pane_template.snap +++ b/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__can_define_stacked_children_for_pane_template.snap @@ -1,7 +1,7 @@ --- source: zellij-utils/src/input/./unit/layout_test.rs -assertion_line: 1969 -expression: "format!(\"{:#?}\", layout)" +assertion_line: 1982 +expression: "normalize_layout_debug(format!(\"{:#?}\", layout))" --- Layout { tabs: [], @@ -37,6 +37,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -55,6 +56,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -70,6 +72,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -85,6 +88,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -100,6 +104,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, [], ), diff --git a/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__can_load_swap_layouts_from_a_different_file.snap b/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__can_load_swap_layouts_from_a_different_file.snap index a1fcdacc..2052515c 100644 --- a/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__can_load_swap_layouts_from_a_different_file.snap +++ b/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__can_load_swap_layouts_from_a_different_file.snap @@ -1,7 +1,7 @@ --- source: zellij-utils/src/input/./unit/layout_test.rs -assertion_line: 1938 -expression: "format!(\"{:#?}\", layout)" +assertion_line: 1951 +expression: "normalize_layout_debug(format!(\"{:#?}\", layout))" --- Layout { tabs: [], @@ -29,6 +29,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -44,6 +45,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, [], ), @@ -98,6 +100,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -124,6 +127,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -144,6 +148,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -159,6 +164,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -174,6 +180,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -215,6 +222,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -230,6 +238,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, MaxPanes( 8, @@ -277,6 +286,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -305,6 +315,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -327,6 +338,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -345,6 +357,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -363,6 +376,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -381,6 +395,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -396,6 +411,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -411,6 +427,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -426,6 +443,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -467,6 +485,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -482,6 +501,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, MaxPanes( 12, @@ -529,6 +549,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -557,6 +578,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -579,6 +601,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -597,6 +620,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -615,6 +639,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -633,6 +658,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -648,6 +674,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -670,6 +697,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -688,6 +716,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -706,6 +735,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -724,6 +754,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -739,6 +770,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -754,6 +786,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -769,6 +802,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -810,6 +844,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -825,6 +860,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, }, Some( diff --git a/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__children_not_as_first_child_of_pane_template.snap b/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__children_not_as_first_child_of_pane_template.snap index 56ba1f22..918c7533 100644 --- a/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__children_not_as_first_child_of_pane_template.snap +++ b/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__children_not_as_first_child_of_pane_template.snap @@ -1,7 +1,7 @@ --- source: zellij-utils/src/input/./unit/layout_test.rs -assertion_line: 1033 -expression: "format!(\"{:#?}\", layout)" +assertion_line: 1046 +expression: "normalize_layout_debug(format!(\"{:#?}\", layout))" --- Layout { tabs: [], @@ -39,6 +39,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -61,6 +62,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -79,6 +81,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -94,6 +97,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -109,6 +113,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -127,6 +132,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -142,6 +148,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -168,6 +175,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -185,6 +193,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -203,6 +212,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -218,6 +228,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -233,6 +244,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, [], ), diff --git a/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__children_not_as_first_child_of_tab_template.snap b/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__children_not_as_first_child_of_tab_template.snap index 3ae6e4a9..53fd2a14 100644 --- a/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__children_not_as_first_child_of_tab_template.snap +++ b/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__children_not_as_first_child_of_tab_template.snap @@ -1,7 +1,7 @@ --- source: zellij-utils/src/input/./unit/layout_test.rs -assertion_line: 985 -expression: "format!(\"{:#?}\", layout)" +assertion_line: 998 +expression: "normalize_layout_debug(format!(\"{:#?}\", layout))" --- Layout { tabs: [ @@ -34,6 +34,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -56,6 +57,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -74,6 +76,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -89,6 +92,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -104,6 +108,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -122,6 +127,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -137,6 +143,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, [], ), @@ -167,6 +174,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -184,6 +192,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -202,6 +211,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -217,6 +227,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, [], ), @@ -241,6 +252,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, [], ), diff --git a/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__close_on_exit_added_to_close_on_exit_in_template.snap b/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__close_on_exit_added_to_close_on_exit_in_template.snap index 8ba07ad3..3519de15 100644 --- a/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__close_on_exit_added_to_close_on_exit_in_template.snap +++ b/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__close_on_exit_added_to_close_on_exit_in_template.snap @@ -1,7 +1,7 @@ --- source: zellij-utils/src/input/./unit/layout_test.rs -assertion_line: 1427 -expression: "format!(\"{:#?}\", layout)" +assertion_line: 1440 +expression: "normalize_layout_debug(format!(\"{:#?}\", layout))" --- Layout { tabs: [], @@ -41,6 +41,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -71,6 +72,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -86,6 +88,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, [], ), diff --git a/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__close_on_exit_overrides_close_on_exit_in_template.snap b/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__close_on_exit_overrides_close_on_exit_in_template.snap index 032bd843..b6332929 100644 --- a/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__close_on_exit_overrides_close_on_exit_in_template.snap +++ b/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__close_on_exit_overrides_close_on_exit_in_template.snap @@ -1,7 +1,7 @@ --- source: zellij-utils/src/input/./unit/layout_test.rs -assertion_line: 1393 -expression: "format!(\"{:#?}\", layout)" +assertion_line: 1406 +expression: "normalize_layout_debug(format!(\"{:#?}\", layout))" --- Layout { tabs: [], @@ -41,6 +41,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -71,6 +72,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -86,6 +88,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, [], ), diff --git a/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__combined_tab_and_pane_template_both_with_children.snap b/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__combined_tab_and_pane_template_both_with_children.snap index 6e99b11c..fcb44b36 100644 --- a/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__combined_tab_and_pane_template_both_with_children.snap +++ b/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__combined_tab_and_pane_template_both_with_children.snap @@ -1,7 +1,7 @@ --- source: zellij-utils/src/input/./unit/layout_test.rs -assertion_line: 1085 -expression: "format!(\"{:#?}\", layout)" +assertion_line: 1098 +expression: "normalize_layout_debug(format!(\"{:#?}\", layout))" --- Layout { tabs: [ @@ -34,6 +34,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -58,6 +59,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -73,6 +75,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -91,6 +94,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -106,6 +110,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -128,6 +133,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -146,6 +152,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -161,6 +168,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -176,6 +184,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, [], ), @@ -206,6 +215,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -230,6 +240,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -245,6 +256,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -263,6 +275,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -278,6 +291,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -296,6 +310,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -311,6 +326,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, [], ), @@ -335,6 +351,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, [], ), diff --git a/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__cwd_added_to_cwd_in_template.snap b/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__cwd_added_to_cwd_in_template.snap index c2b277c1..e275d79f 100644 --- a/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__cwd_added_to_cwd_in_template.snap +++ b/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__cwd_added_to_cwd_in_template.snap @@ -1,7 +1,7 @@ --- source: zellij-utils/src/input/./unit/layout_test.rs -assertion_line: 1462 -expression: "format!(\"{:#?}\", layout)" +assertion_line: 1475 +expression: "normalize_layout_debug(format!(\"{:#?}\", layout))" --- Layout { tabs: [], @@ -41,6 +41,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -73,6 +74,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -88,6 +90,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, [], ), diff --git a/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__cwd_override_cwd_in_template.snap b/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__cwd_override_cwd_in_template.snap index 30376415..c7166e4d 100644 --- a/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__cwd_override_cwd_in_template.snap +++ b/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__cwd_override_cwd_in_template.snap @@ -1,7 +1,7 @@ --- source: zellij-utils/src/input/./unit/layout_test.rs -assertion_line: 1445 -expression: "format!(\"{:#?}\", layout)" +assertion_line: 1458 +expression: "normalize_layout_debug(format!(\"{:#?}\", layout))" --- Layout { tabs: [], @@ -43,6 +43,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -75,6 +76,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -90,6 +92,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, [], ), diff --git a/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__env_var_expansion.snap b/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__env_var_expansion.snap index 30b301da..0c9cc6ed 100644 --- a/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__env_var_expansion.snap +++ b/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__env_var_expansion.snap @@ -1,7 +1,7 @@ --- source: zellij-utils/src/input/./unit/layout_test.rs -assertion_line: 2230 -expression: "format!(\"{layout:#?}\")" +assertion_line: 2244 +expression: "normalize_layout_debug(format!(\"{layout:#?}\"))" --- Layout { tabs: [ @@ -32,6 +32,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -54,6 +55,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -76,6 +78,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -98,6 +101,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -130,6 +134,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -156,6 +161,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -182,6 +188,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -214,6 +221,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -240,6 +248,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -259,6 +268,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, [], ), @@ -291,6 +301,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -313,6 +324,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -335,6 +347,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -357,6 +370,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -389,6 +403,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -415,6 +430,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -441,6 +457,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -473,6 +490,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -499,6 +517,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -518,6 +537,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, [], ), diff --git a/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__global_cwd_and_tab_cwd_prepended_to_panes_with_and_without_cwd.snap b/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__global_cwd_and_tab_cwd_prepended_to_panes_with_and_without_cwd.snap index 4fa28d02..24847840 100644 --- a/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__global_cwd_and_tab_cwd_prepended_to_panes_with_and_without_cwd.snap +++ b/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__global_cwd_and_tab_cwd_prepended_to_panes_with_and_without_cwd.snap @@ -1,7 +1,7 @@ --- source: zellij-utils/src/input/./unit/layout_test.rs -assertion_line: 1847 -expression: "format!(\"{:#?}\", layout)" +assertion_line: 1860 +expression: "normalize_layout_debug(format!(\"{:#?}\", layout))" --- Layout { tabs: [ @@ -32,6 +32,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -64,6 +65,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -83,6 +85,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, [], ), @@ -107,6 +110,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, [], ), diff --git a/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__global_cwd_and_tab_cwd_prepended_to_panes_with_and_without_cwd_in_pane_templates.snap b/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__global_cwd_and_tab_cwd_prepended_to_panes_with_and_without_cwd_in_pane_templates.snap index 36b254da..bd34f602 100644 --- a/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__global_cwd_and_tab_cwd_prepended_to_panes_with_and_without_cwd_in_pane_templates.snap +++ b/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__global_cwd_and_tab_cwd_prepended_to_panes_with_and_without_cwd_in_pane_templates.snap @@ -1,7 +1,7 @@ --- source: zellij-utils/src/input/./unit/layout_test.rs -assertion_line: 1868 -expression: "format!(\"{:#?}\", layout)" +assertion_line: 1881 +expression: "normalize_layout_debug(format!(\"{:#?}\", layout))" --- Layout { tabs: [ @@ -36,6 +36,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -68,6 +69,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -94,6 +96,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -113,6 +116,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -132,6 +136,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -151,6 +156,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, [], ), @@ -175,6 +181,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, [], ), diff --git a/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__global_cwd_and_tab_cwd_prepended_to_panes_with_and_without_cwd_in_tab_templates.snap b/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__global_cwd_and_tab_cwd_prepended_to_panes_with_and_without_cwd_in_tab_templates.snap index 248d4682..4a9b97df 100644 --- a/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__global_cwd_and_tab_cwd_prepended_to_panes_with_and_without_cwd_in_tab_templates.snap +++ b/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__global_cwd_and_tab_cwd_prepended_to_panes_with_and_without_cwd_in_tab_templates.snap @@ -1,7 +1,7 @@ --- source: zellij-utils/src/input/./unit/layout_test.rs -assertion_line: 1887 -expression: "format!(\"{:#?}\", layout)" +assertion_line: 1900 +expression: "normalize_layout_debug(format!(\"{:#?}\", layout))" --- Layout { tabs: [ @@ -32,6 +32,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -64,6 +65,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -90,6 +92,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -109,6 +112,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -128,6 +132,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, [], ), @@ -152,6 +157,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, [], ), diff --git a/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__global_cwd_given_to_panes_without_cwd.snap b/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__global_cwd_given_to_panes_without_cwd.snap index b6171a49..1f83ec0a 100644 --- a/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__global_cwd_given_to_panes_without_cwd.snap +++ b/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__global_cwd_given_to_panes_without_cwd.snap @@ -1,7 +1,7 @@ --- source: zellij-utils/src/input/./unit/layout_test.rs -assertion_line: 1732 -expression: "format!(\"{:#?}\", layout)" +assertion_line: 1745 +expression: "normalize_layout_debug(format!(\"{:#?}\", layout))" --- Layout { tabs: [ @@ -32,6 +32,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -64,6 +65,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -83,6 +85,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, [], ), @@ -115,6 +118,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -147,6 +151,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -166,6 +171,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, [], ), diff --git a/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__global_cwd_passed_from_layout_constructor.snap b/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__global_cwd_passed_from_layout_constructor.snap index aaca18c6..9fbb6124 100644 --- a/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__global_cwd_passed_from_layout_constructor.snap +++ b/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__global_cwd_passed_from_layout_constructor.snap @@ -1,7 +1,7 @@ --- source: zellij-utils/src/input/./unit/layout_test.rs -assertion_line: 1765 -expression: "format!(\"{:#?}\", layout)" +assertion_line: 1778 +expression: "normalize_layout_debug(format!(\"{:#?}\", layout))" --- Layout { tabs: [], @@ -33,6 +33,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -65,6 +66,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -84,6 +86,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, [], ), diff --git a/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__global_cwd_passed_from_layout_constructor_overrides_global_cwd_in_layout_file.snap b/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__global_cwd_passed_from_layout_constructor_overrides_global_cwd_in_layout_file.snap index d5067f75..e0f04a8f 100644 --- a/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__global_cwd_passed_from_layout_constructor_overrides_global_cwd_in_layout_file.snap +++ b/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__global_cwd_passed_from_layout_constructor_overrides_global_cwd_in_layout_file.snap @@ -1,7 +1,7 @@ --- source: zellij-utils/src/input/./unit/layout_test.rs -assertion_line: 1786 -expression: "format!(\"{:#?}\", layout)" +assertion_line: 1799 +expression: "normalize_layout_debug(format!(\"{:#?}\", layout))" --- Layout { tabs: [ @@ -32,6 +32,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -64,6 +65,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -83,6 +85,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, [], ), @@ -115,6 +118,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -147,6 +151,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -166,6 +171,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, [], ), diff --git a/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__global_cwd_prepended_to_panes_with_cwd.snap b/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__global_cwd_prepended_to_panes_with_cwd.snap index 1666c83b..480d8652 100644 --- a/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__global_cwd_prepended_to_panes_with_cwd.snap +++ b/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__global_cwd_prepended_to_panes_with_cwd.snap @@ -1,7 +1,7 @@ --- source: zellij-utils/src/input/./unit/layout_test.rs -assertion_line: 1745 -expression: "format!(\"{:#?}\", layout)" +assertion_line: 1758 +expression: "normalize_layout_debug(format!(\"{:#?}\", layout))" --- Layout { tabs: [ @@ -32,6 +32,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -64,6 +65,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -83,6 +85,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, [], ), @@ -115,6 +118,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -147,6 +151,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -166,6 +171,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, [], ), diff --git a/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__global_cwd_with_tab_cwd_given_to_panes_without_cwd.snap b/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__global_cwd_with_tab_cwd_given_to_panes_without_cwd.snap index e745a99b..ed225c3b 100644 --- a/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__global_cwd_with_tab_cwd_given_to_panes_without_cwd.snap +++ b/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__global_cwd_with_tab_cwd_given_to_panes_without_cwd.snap @@ -1,7 +1,7 @@ --- source: zellij-utils/src/input/./unit/layout_test.rs -assertion_line: 1802 -expression: "format!(\"{:#?}\", layout)" +assertion_line: 1815 +expression: "normalize_layout_debug(format!(\"{:#?}\", layout))" --- Layout { tabs: [ @@ -32,6 +32,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -64,6 +65,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -83,6 +85,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, [], ), @@ -107,6 +110,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, [], ), diff --git a/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__layout_with_command_panes_and_close_on_exit.snap b/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__layout_with_command_panes_and_close_on_exit.snap index baf0eca4..5ee19a7d 100644 --- a/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__layout_with_command_panes_and_close_on_exit.snap +++ b/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__layout_with_command_panes_and_close_on_exit.snap @@ -1,7 +1,7 @@ --- source: zellij-utils/src/input/./unit/layout_test.rs -assertion_line: 511 -expression: "format!(\"{:#?}\", layout)" +assertion_line: 524 +expression: "normalize_layout_debug(format!(\"{:#?}\", layout))" --- Layout { tabs: [], @@ -41,6 +41,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -56,6 +57,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, [], ), diff --git a/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__layout_with_command_panes_and_start_suspended.snap b/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__layout_with_command_panes_and_start_suspended.snap index 481a74d8..cab76d88 100644 --- a/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__layout_with_command_panes_and_start_suspended.snap +++ b/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__layout_with_command_panes_and_start_suspended.snap @@ -1,7 +1,7 @@ --- source: zellij-utils/src/input/./unit/layout_test.rs -assertion_line: 524 -expression: "format!(\"{:#?}\", layout)" +assertion_line: 537 +expression: "normalize_layout_debug(format!(\"{:#?}\", layout))" --- Layout { tabs: [], @@ -41,6 +41,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -56,6 +57,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, [], ), diff --git a/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__layout_with_default_tab_template.snap b/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__layout_with_default_tab_template.snap index abddb5c9..b798af4e 100644 --- a/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__layout_with_default_tab_template.snap +++ b/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__layout_with_default_tab_template.snap @@ -1,7 +1,7 @@ --- source: zellij-utils/src/input/./unit/layout_test.rs -assertion_line: 819 -expression: "format!(\"{:#?}\", layout)" +assertion_line: 832 +expression: "normalize_layout_debug(format!(\"{:#?}\", layout))" --- Layout { tabs: [ @@ -30,6 +30,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Vertical, @@ -52,6 +53,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -70,6 +72,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -85,6 +88,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -103,6 +107,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -118,6 +123,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, [], ), @@ -146,6 +152,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -168,6 +175,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -186,6 +194,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -201,6 +210,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -219,6 +229,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -234,6 +245,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, [], ), @@ -260,6 +272,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -278,6 +291,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -296,6 +310,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -311,6 +326,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, [], ), @@ -339,6 +355,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -357,6 +374,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -375,6 +393,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -390,6 +409,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, [], ), diff --git a/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__layout_with_nested_branched_pane_templates.snap b/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__layout_with_nested_branched_pane_templates.snap index 3d267afa..af501ef0 100644 --- a/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__layout_with_nested_branched_pane_templates.snap +++ b/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__layout_with_nested_branched_pane_templates.snap @@ -1,7 +1,7 @@ --- source: zellij-utils/src/input/./unit/layout_test.rs -assertion_line: 939 -expression: "format!(\"{:#?}\", layout)" +assertion_line: 952 +expression: "normalize_layout_debug(format!(\"{:#?}\", layout))" --- Layout { tabs: [], @@ -33,6 +33,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -51,6 +52,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -73,6 +75,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -91,6 +94,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -106,6 +110,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -128,6 +133,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -146,6 +152,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -164,6 +171,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -179,6 +187,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -194,6 +203,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -209,6 +219,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, [], ), diff --git a/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__layout_with_nested_pane_templates.snap b/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__layout_with_nested_pane_templates.snap index 6f24f2ee..d04877ef 100644 --- a/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__layout_with_nested_pane_templates.snap +++ b/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__layout_with_nested_pane_templates.snap @@ -1,7 +1,7 @@ --- source: zellij-utils/src/input/./unit/layout_test.rs -assertion_line: 913 -expression: "format!(\"{:#?}\", layout)" +assertion_line: 926 +expression: "normalize_layout_debug(format!(\"{:#?}\", layout))" --- Layout { tabs: [], @@ -33,6 +33,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -51,6 +52,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -73,6 +75,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -91,6 +94,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -106,6 +110,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -124,6 +129,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -139,6 +145,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -154,6 +161,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, [], ), diff --git a/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__layout_with_new_tab_template.snap b/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__layout_with_new_tab_template.snap index 3eb32a53..841d372a 100644 --- a/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__layout_with_new_tab_template.snap +++ b/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__layout_with_new_tab_template.snap @@ -1,7 +1,7 @@ --- source: zellij-utils/src/input/./unit/layout_test.rs -assertion_line: 844 -expression: "format!(\"{:#?}\", layout)" +assertion_line: 857 +expression: "normalize_layout_debug(format!(\"{:#?}\", layout))" --- Layout { tabs: [ @@ -30,6 +30,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -48,6 +49,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -63,6 +65,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, [], ), @@ -91,6 +94,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -109,6 +113,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -124,6 +129,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, [], ), @@ -146,6 +152,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, [], ), @@ -178,6 +185,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -196,6 +204,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -211,6 +220,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -226,6 +236,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, [], ), diff --git a/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__layout_with_pane_excluded_from_sync.snap b/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__layout_with_pane_excluded_from_sync.snap index a14262ee..2087e1be 100644 --- a/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__layout_with_pane_excluded_from_sync.snap +++ b/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__layout_with_pane_excluded_from_sync.snap @@ -1,7 +1,7 @@ --- source: zellij-utils/src/input/./unit/layout_test.rs -assertion_line: 1096 -expression: "format!(\"{:#?}\", layout)" +assertion_line: 1109 +expression: "normalize_layout_debug(format!(\"{:#?}\", layout))" --- Layout { tabs: [], @@ -31,6 +31,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -46,6 +47,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, [], ), diff --git a/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__layout_with_pane_templates.snap b/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__layout_with_pane_templates.snap index 43965e11..a3b308ed 100644 --- a/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__layout_with_pane_templates.snap +++ b/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__layout_with_pane_templates.snap @@ -1,7 +1,7 @@ --- source: zellij-utils/src/input/./unit/layout_test.rs -assertion_line: 871 -expression: "format!(\"{:#?}\", layout)" +assertion_line: 884 +expression: "normalize_layout_debug(format!(\"{:#?}\", layout))" --- Layout { tabs: [], @@ -33,6 +33,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -55,6 +56,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -70,6 +72,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -88,6 +91,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -103,6 +107,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Vertical, @@ -125,6 +130,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -147,6 +153,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -165,6 +172,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -180,6 +188,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -198,6 +207,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -213,6 +223,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Vertical, @@ -235,6 +246,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Vertical, @@ -257,6 +269,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -275,6 +288,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -290,6 +304,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -308,6 +323,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -323,6 +339,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Vertical, @@ -345,6 +362,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -363,6 +381,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -381,6 +400,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -396,6 +416,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -411,6 +432,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, [], ), diff --git a/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__layout_with_tab_and_pane_templates.snap b/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__layout_with_tab_and_pane_templates.snap index edc76b2e..5b197ba9 100644 --- a/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__layout_with_tab_and_pane_templates.snap +++ b/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__layout_with_tab_and_pane_templates.snap @@ -1,7 +1,7 @@ --- source: zellij-utils/src/input/./unit/layout_test.rs -assertion_line: 892 -expression: "format!(\"{:#?}\", layout)" +assertion_line: 905 +expression: "normalize_layout_debug(format!(\"{:#?}\", layout))" --- Layout { tabs: [ @@ -32,6 +32,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -66,6 +67,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -81,6 +83,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -99,6 +102,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -114,6 +118,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -129,6 +134,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, [], ), @@ -153,6 +159,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, [], ), diff --git a/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__layout_with_tabs_and_floating_panes.snap b/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__layout_with_tabs_and_floating_panes.snap index 9e7bf8af..1cf15cd0 100644 --- a/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__layout_with_tabs_and_floating_panes.snap +++ b/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__layout_with_tabs_and_floating_panes.snap @@ -1,7 +1,7 @@ --- source: zellij-utils/src/input/./unit/layout_test.rs -assertion_line: 305 -expression: "format!(\"{:#?}\", layout)" +assertion_line: 318 +expression: "normalize_layout_debug(format!(\"{:#?}\", layout))" --- Layout { tabs: [ @@ -28,6 +28,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -43,6 +44,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, [ FloatingPaneLayout { @@ -86,6 +88,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -101,6 +104,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, [ FloatingPaneLayout { @@ -158,6 +162,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, [], ), diff --git a/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__pane_template_command_with_cwd_is_overriden_by_its_consumers_bare_cwd.snap b/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__pane_template_command_with_cwd_is_overriden_by_its_consumers_bare_cwd.snap index f6ffefa0..93552fa6 100644 --- a/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__pane_template_command_with_cwd_is_overriden_by_its_consumers_bare_cwd.snap +++ b/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__pane_template_command_with_cwd_is_overriden_by_its_consumers_bare_cwd.snap @@ -1,7 +1,7 @@ --- source: zellij-utils/src/input/./unit/layout_test.rs -assertion_line: 1616 -expression: "format!(\"{:#?}\", layout)" +assertion_line: 1629 +expression: "normalize_layout_debug(format!(\"{:#?}\", layout))" --- Layout { tabs: [ @@ -42,6 +42,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -61,6 +62,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, [], ), @@ -103,6 +105,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -122,6 +125,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, [], ), diff --git a/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__pane_template_command_with_cwd_overriden_by_its_consumers_command_cwd.snap b/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__pane_template_command_with_cwd_overriden_by_its_consumers_command_cwd.snap index 7e3cb306..a3d109a1 100644 --- a/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__pane_template_command_with_cwd_overriden_by_its_consumers_command_cwd.snap +++ b/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__pane_template_command_with_cwd_overriden_by_its_consumers_command_cwd.snap @@ -1,7 +1,7 @@ --- source: zellij-utils/src/input/./unit/layout_test.rs -assertion_line: 1562 -expression: "format!(\"{:#?}\", layout)" +assertion_line: 1575 +expression: "normalize_layout_debug(format!(\"{:#?}\", layout))" --- Layout { tabs: [ @@ -42,6 +42,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -61,6 +62,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, [], ), @@ -103,6 +105,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -122,6 +125,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, [], ), diff --git a/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__pane_template_command_with_cwd_remains_when_its_consumer_command_does_not_have_a_cwd.snap b/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__pane_template_command_with_cwd_remains_when_its_consumer_command_does_not_have_a_cwd.snap index 91e2f358..435ba244 100644 --- a/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__pane_template_command_with_cwd_remains_when_its_consumer_command_does_not_have_a_cwd.snap +++ b/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__pane_template_command_with_cwd_remains_when_its_consumer_command_does_not_have_a_cwd.snap @@ -1,7 +1,7 @@ --- source: zellij-utils/src/input/./unit/layout_test.rs -assertion_line: 1579 -expression: "format!(\"{:#?}\", layout)" +assertion_line: 1592 +expression: "normalize_layout_debug(format!(\"{:#?}\", layout))" --- Layout { tabs: [ @@ -42,6 +42,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -61,6 +62,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, [], ), @@ -103,6 +105,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -122,6 +125,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, [], ), diff --git a/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__pane_template_command_without_cwd_is_overriden_by_its_consumers_cwd.snap b/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__pane_template_command_without_cwd_is_overriden_by_its_consumers_cwd.snap index 2d0ca360..201b14dd 100644 --- a/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__pane_template_command_without_cwd_is_overriden_by_its_consumers_cwd.snap +++ b/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__pane_template_command_without_cwd_is_overriden_by_its_consumers_cwd.snap @@ -1,7 +1,7 @@ --- source: zellij-utils/src/input/./unit/layout_test.rs -assertion_line: 1597 -expression: "format!(\"{:#?}\", layout)" +assertion_line: 1610 +expression: "normalize_layout_debug(format!(\"{:#?}\", layout))" --- Layout { tabs: [ @@ -42,6 +42,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -61,6 +62,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, [], ), @@ -103,6 +105,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -122,6 +125,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, [], ), diff --git a/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__pane_template_command_without_cwd_receives_its_consumers_bare_cwd.snap b/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__pane_template_command_without_cwd_receives_its_consumers_bare_cwd.snap index fdbf56a3..a22a91ff 100644 --- a/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__pane_template_command_without_cwd_receives_its_consumers_bare_cwd.snap +++ b/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__pane_template_command_without_cwd_receives_its_consumers_bare_cwd.snap @@ -1,7 +1,7 @@ --- source: zellij-utils/src/input/./unit/layout_test.rs -assertion_line: 1634 -expression: "format!(\"{:#?}\", layout)" +assertion_line: 1647 +expression: "normalize_layout_debug(format!(\"{:#?}\", layout))" --- Layout { tabs: [ @@ -42,6 +42,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -61,6 +62,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, [], ), @@ -103,6 +105,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -122,6 +125,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, [], ), diff --git a/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__pane_template_with_bare_cwd_overriden_by_its_consumers_bare_cwd.snap b/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__pane_template_with_bare_cwd_overriden_by_its_consumers_bare_cwd.snap index 5bb6ccec..c56bb263 100644 --- a/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__pane_template_with_bare_cwd_overriden_by_its_consumers_bare_cwd.snap +++ b/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__pane_template_with_bare_cwd_overriden_by_its_consumers_bare_cwd.snap @@ -1,7 +1,7 @@ --- source: zellij-utils/src/input/./unit/layout_test.rs -assertion_line: 1652 -expression: "format!(\"{:#?}\", layout)" +assertion_line: 1665 +expression: "normalize_layout_debug(format!(\"{:#?}\", layout))" --- Layout { tabs: [ @@ -32,6 +32,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -51,6 +52,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, [], ), @@ -83,6 +85,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -102,6 +105,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, [], ), diff --git a/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__pane_template_with_bare_propagated_to_its_consumer_command_with_cwd.snap b/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__pane_template_with_bare_propagated_to_its_consumer_command_with_cwd.snap index 4e8812fa..9deba7ea 100644 --- a/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__pane_template_with_bare_propagated_to_its_consumer_command_with_cwd.snap +++ b/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__pane_template_with_bare_propagated_to_its_consumer_command_with_cwd.snap @@ -1,7 +1,7 @@ --- source: zellij-utils/src/input/./unit/layout_test.rs -assertion_line: 1686 -expression: "format!(\"{:#?}\", layout)" +assertion_line: 1699 +expression: "normalize_layout_debug(format!(\"{:#?}\", layout))" --- Layout { tabs: [ @@ -42,6 +42,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -61,6 +62,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, [], ), @@ -103,6 +105,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -122,6 +125,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, [], ), diff --git a/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__pane_template_with_bare_propagated_to_its_consumer_command_without_cwd.snap b/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__pane_template_with_bare_propagated_to_its_consumer_command_without_cwd.snap index 5ea6f110..c1701260 100644 --- a/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__pane_template_with_bare_propagated_to_its_consumer_command_without_cwd.snap +++ b/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__pane_template_with_bare_propagated_to_its_consumer_command_without_cwd.snap @@ -1,7 +1,7 @@ --- source: zellij-utils/src/input/./unit/layout_test.rs -assertion_line: 1668 -expression: "format!(\"{:#?}\", layout)" +assertion_line: 1681 +expression: "normalize_layout_debug(format!(\"{:#?}\", layout))" --- Layout { tabs: [ @@ -42,6 +42,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -61,6 +62,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, [], ), @@ -103,6 +105,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -122,6 +125,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, [], ), diff --git a/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__pane_template_with_bare_propagated_to_its_consumer_edit.snap b/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__pane_template_with_bare_propagated_to_its_consumer_edit.snap index 1913b50f..e6aea2c6 100644 --- a/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__pane_template_with_bare_propagated_to_its_consumer_edit.snap +++ b/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__pane_template_with_bare_propagated_to_its_consumer_edit.snap @@ -1,7 +1,7 @@ --- source: zellij-utils/src/input/./unit/layout_test.rs -assertion_line: 1702 -expression: "format!(\"{:#?}\", layout)" +assertion_line: 1715 +expression: "normalize_layout_debug(format!(\"{:#?}\", layout))" --- Layout { tabs: [ @@ -36,6 +36,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -55,6 +56,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, [], ), @@ -91,6 +93,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -110,6 +113,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, [], ), diff --git a/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__pane_template_with_command_propagated_to_its_consumer_edit.snap b/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__pane_template_with_command_propagated_to_its_consumer_edit.snap index f6bbaeed..6388aecd 100644 --- a/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__pane_template_with_command_propagated_to_its_consumer_edit.snap +++ b/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__pane_template_with_command_propagated_to_its_consumer_edit.snap @@ -1,7 +1,7 @@ --- source: zellij-utils/src/input/./unit/layout_test.rs -assertion_line: 1718 -expression: "format!(\"{:#?}\", layout)" +assertion_line: 1731 +expression: "normalize_layout_debug(format!(\"{:#?}\", layout))" --- Layout { tabs: [ @@ -36,6 +36,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -55,6 +56,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, [], ), @@ -91,6 +93,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -110,6 +113,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, [], ), diff --git a/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__tab_cwd_given_to_panes_without_cwd.snap b/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__tab_cwd_given_to_panes_without_cwd.snap index 8a8e5420..290ce3b5 100644 --- a/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__tab_cwd_given_to_panes_without_cwd.snap +++ b/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__tab_cwd_given_to_panes_without_cwd.snap @@ -1,7 +1,7 @@ --- source: zellij-utils/src/input/./unit/layout_test.rs -assertion_line: 1817 -expression: "format!(\"{:#?}\", layout)" +assertion_line: 1830 +expression: "normalize_layout_debug(format!(\"{:#?}\", layout))" --- Layout { tabs: [ @@ -32,6 +32,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -64,6 +65,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -83,6 +85,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, [], ), @@ -107,6 +110,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, [], ), diff --git a/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__tab_cwd_prepended_to_panes_with_cwd.snap b/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__tab_cwd_prepended_to_panes_with_cwd.snap index 1b37491e..92dd75c2 100644 --- a/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__tab_cwd_prepended_to_panes_with_cwd.snap +++ b/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__tab_cwd_prepended_to_panes_with_cwd.snap @@ -1,7 +1,7 @@ --- source: zellij-utils/src/input/./unit/layout_test.rs -assertion_line: 1832 -expression: "format!(\"{:#?}\", layout)" +assertion_line: 1845 +expression: "normalize_layout_debug(format!(\"{:#?}\", layout))" --- Layout { tabs: [ @@ -32,6 +32,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, TiledPaneLayout { children_split_direction: Horizontal, @@ -64,6 +65,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, ], split_size: None, @@ -83,6 +85,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, [], ), @@ -107,6 +110,7 @@ Layout { pane_initial_contents: None, default_fg: None, default_bg: None, + children_arrangement: None, }, [], ), diff --git a/zellij-utils/src/ipc/protobuf_conversion.rs b/zellij-utils/src/ipc/protobuf_conversion.rs index c07b34d5..8bd43081 100644 --- a/zellij-utils/src/ipc/protobuf_conversion.rs +++ b/zellij-utils/src/ipc/protobuf_conversion.rs @@ -4512,6 +4512,8 @@ impl TryFrom<crate::client_server_contract::client_server_contract::TiledPaneLay pane_initial_contents: layout.pane_initial_contents, default_fg: layout.default_fg, default_bg: layout.default_bg, + // no protobuf representation, same as default_fg/default_bg + children_arrangement: None, }) } } diff --git a/zellij-utils/src/kdl/kdl_layout_parser.rs b/zellij-utils/src/kdl/kdl_layout_parser.rs index 579a4b14..21fdc74c 100644 --- a/zellij-utils/src/kdl/kdl_layout_parser.rs +++ b/zellij-utils/src/kdl/kdl_layout_parser.rs @@ -2,9 +2,9 @@ use crate::input::{ command::RunCommand, config::ConfigError, layout::{ - FloatingPaneLayout, Layout, LayoutConstraint, PercentOrFixed, PluginUserConfiguration, Run, - RunPluginOrAlias, SplitDirection, SplitSize, SwapFloatingLayout, SwapTiledLayout, - TiledPaneLayout, + FloatingPaneLayout, Layout, LayoutConstraint, PaneArrangement, PercentOrFixed, + PluginUserConfiguration, Run, RunPluginOrAlias, SplitDirection, SplitSize, + SwapFloatingLayout, SwapTiledLayout, TiledPaneLayout, }, }; @@ -108,6 +108,7 @@ impl<'a> KdlLayoutParser<'a> { || property_name == "contents_file" || property_name == "default_fg" || property_name == "default_bg" + || property_name == "arrangement" } fn is_a_valid_floating_pane_property(&self, property_name: &str) -> bool { property_name == "borderless" @@ -571,6 +572,40 @@ impl<'a> KdlLayoutParser<'a> { .map(|s| s.to_string()); let default_bg = kdl_get_string_property_or_child_value_with_error!(kdl_node, "default_bg") .map(|s| s.to_string()); + let children_arrangement = + match kdl_get_string_property_or_child_value_with_error!(kdl_node, "arrangement") { + Some(raw) => match PaneArrangement::from_str(raw) { + Some(arrangement) => Some(arrangement), + None => { + return Err(ConfigError::new_layout_kdl_error( + format!( + "Unknown arrangement: \"{}\". Valid values are: {}", + raw, + PaneArrangement::possible_values() + ), + kdl_node.span().offset(), + kdl_node.span().len(), + )) + }, + }, + None => None, + }; + if children_arrangement.is_some() && external_children_index.is_none() { + // an arrangement only ever acts on panes inserted at a `children` + // placeholder, so without one it would silently do nothing + return Err(ConfigError::new_layout_kdl_error( + format!("A pane with an \"arrangement\" must have a \"children\" node"), + kdl_node.span().offset(), + kdl_node.span().len(), + )); + } + if children_arrangement.is_some() && children_are_stacked { + return Err(ConfigError::new_layout_kdl_error( + format!("A stacked pane cannot also have an \"arrangement\""), + kdl_node.span().offset(), + kdl_node.span().len(), + )); + } self.assert_no_mixed_children_and_properties(kdl_node)?; let pane_initial_contents = contents_file.and_then(|contents_file| { self.file_name @@ -595,6 +630,7 @@ impl<'a> KdlLayoutParser<'a> { pane_initial_contents, default_fg, default_bg, + children_arrangement, ..Default::default() }) } diff --git a/zellij-utils/src/plugin_api/action.rs b/zellij-utils/src/plugin_api/action.rs index c11b56f1..b660dd96 100644 --- a/zellij-utils/src/plugin_api/action.rs +++ b/zellij-utils/src/plugin_api/action.rs @@ -3111,6 +3111,8 @@ impl TryFrom<ProtobufTiledPaneLayout> for TiledPaneLayout { pane_initial_contents: protobuf.pane_initial_contents, default_fg: None, default_bg: None, + // no protobuf representation, same as default_fg/default_bg above + children_arrangement: None, }) } } |
