tmux_interface/commands/windows_and_panes/
previous_layout_macro.rs1#[macro_export]
11macro_rules! previous_layout {
12 (@cmd ($cmd:expr) -t $target_window:expr, $($tail:tt)*) => {{
14 $crate::previous_layout!(@cmd ({
15 $cmd.target_window($target_window)
16 }) $($tail)*)
17 }};
18 (@cmd ($cmd:expr)) => {{
22 $cmd
23 }};
24 () => {{
25 $crate::PreviousLayout::new()
26 }};
27 (($cmd:expr), $($tail:tt)*) => {{
28 $crate::previous_layout!(@cmd ($cmd) $($tail)*,)
29 }};
30 ($($tail:tt)*) => {{
31 $crate::previous_layout!(@cmd ({ $crate::PreviousLayout::new() }) $($tail)*,)
32 }};
33}
34
35#[test]
36fn previous_layout_macro() {
37 use crate::TargetWindow;
38 use std::borrow::Cow;
39
40 let target_window = TargetWindow::Raw("1").to_string();
51
52 let previous_layout = previous_layout!();
53 #[cfg(feature = "tmux_1_3")]
54 let previous_layout = previous_layout!((previous_layout), -t & target_window);
55
56 #[cfg(not(feature = "cmd_alias"))]
57 let cmd = "previous-layout";
58 #[cfg(feature = "cmd_alias")]
59 let cmd = "prevl";
60
61 let mut s = Vec::new();
62 s.push(cmd);
63 #[cfg(feature = "tmux_1_3")]
64 s.extend_from_slice(&["-t", "1"]);
65 let s: Vec<Cow<str>> = s.into_iter().map(|a| a.into()).collect();
66
67 let previous_layout = previous_layout.build().to_vec();
68
69 assert_eq!(previous_layout, s);
70}