tmux_interface/commands/buffers/
load_buffer_macro.rs1#[macro_export]
29macro_rules! load_buffer {
30 (@cmd ($cmd:expr) -w, $($tail:tt)*) => {{
32 $crate::load_buffer!(@cmd ({
33 $cmd.send_to_clipboard()
34 }) $($tail)*)
35 }};
36 (@cmd ($cmd:expr) -b $buffer:expr, $($tail:tt)*) => {{
39 $crate::load_buffer!(@cmd ({
40 #[cfg(feature = "tmux_2_0")]
41 {
42 $cmd.buffer_name($buffer)
43 }
44 #[cfg(all(feature = "tmux_0_8", not(feature = "tmux_2_0")))]
45 {
46 $cmd.buffer_index($buffer)
47 }
48 }) $($tail)*)
49 }};
50 (@cmd ($cmd:expr) -t $target_client:expr, $($tail:tt)*) => {{
52 $crate::load_buffer!(@cmd ({
53 $cmd.target_client($target_client)
54 }) $($tail)*)
55 }};
56 (@cmd ($cmd:expr) -t $target_session:expr, $($tail:tt)*) => {{
58 $crate::load_buffer!(@cmd ({
59 $cmd.target_session($target_session)
60 }) $($tail)*)
61 }};
62 (@cmd ($cmd:expr) $path:expr, $($tail:tt)*) => {{
64 $crate::load_buffer!(@cmd ({
65 $cmd.path($path)
66 }) $($tail)*)
67 }};
68 (@cmd ($cmd:expr)) => {{
72 $cmd
73 }};
74 () => {{
75 $crate::LoadBuffer::new()
76 }};
77 (($cmd:expr), $($tail:tt)*) => {{
78 $crate::load_buffer!(@cmd ($cmd) $($tail)*,)
79 }};
80 ($($tail:tt)*) => {{
81 $crate::load_buffer!(@cmd ({ $crate::LoadBuffer::new() }) $($tail)*,)
82 }};
83}
84
85#[test]
86fn load_buffer_macro() {
87 use std::borrow::Cow;
88
89 let load_buffer = load_buffer!();
117 #[cfg(feature = "tmux_3_2")]
118 let load_buffer = load_buffer!((load_buffer), -w);
119 #[cfg(feature = "tmux_2_0")]
120 let load_buffer = load_buffer!((load_buffer), -b "1");
121 #[cfg(feature = "tmux_3_2")]
122 let load_buffer = load_buffer!((load_buffer), -t "2");
123 #[cfg(all(feature = "tmux_0_8", not(feature = "tmux_2_0")))]
124 let load_buffer = load_buffer!((load_buffer), -b "3");
125 #[cfg(all(feature = "tmux_0_8", not(feature = "tmux_1_5")))]
126 let load_buffer = load_buffer!((load_buffer), -t "4");
127 #[cfg(feature = "tmux_0_8")]
128 let load_buffer = load_buffer!((load_buffer), "5");
129
130 #[cfg(not(feature = "cmd_alias"))]
131 let cmd = "load-buffer";
132 #[cfg(feature = "cmd_alias")]
133 let cmd = "loadb";
134
135 let mut s = Vec::new();
136 s.push(cmd);
137 #[cfg(feature = "tmux_3_2")]
138 s.push("-w");
139 #[cfg(feature = "tmux_2_0")]
140 s.extend_from_slice(&["-b", "1"]);
141 #[cfg(feature = "tmux_3_2")]
142 s.extend_from_slice(&["-t", "2"]);
143 #[cfg(all(feature = "tmux_0_8", not(feature = "tmux_2_0")))]
144 s.extend_from_slice(&["-b", "3"]);
145 #[cfg(all(feature = "tmux_0_8", not(feature = "tmux_1_5")))]
146 s.extend_from_slice(&["-t", "4"]);
147 #[cfg(feature = "tmux_0_8")]
148 s.push("5");
149 let s: Vec<Cow<str>> = s.into_iter().map(|a| a.into()).collect();
150
151 let load_buffer = load_buffer.build().to_vec();
152
153 assert_eq!(load_buffer, s);
154}