tmux_interface/commands/buffers/
set_buffer_macro.rs1#[macro_export]
29macro_rules! set_buffer {
30 (@cmd ($cmd:expr) -a, $($tail:tt)*) => {{
32 $crate::set_buffer!(@cmd ({
33 $cmd.append()
34 }) $($tail)*)
35 }};
36 (@cmd ($cmd:expr) -w, $($tail:tt)*) => {{
38 $crate::set_buffer!(@cmd ({
39 $cmd.send_to_clipboard()
40 }) $($tail)*)
41 }};
42 (@cmd ($cmd:expr) -b $buffer:expr, $($tail:tt)*) => {{
45 $crate::set_buffer!(@cmd ({
46 #[cfg(feature = "tmux_2_0")]
47 {
48 $cmd.buffer_name($buffer)
49 }
50 #[cfg(all(feature = "tmux_0_8", not(feature = "tmux_2_0")))]
51 {
52 $cmd.buffer_index($buffer)
53 }
54 }) $($tail)*)
55 }};
56 (@cmd ($cmd:expr) -t $target_client:expr, $($tail:tt)*) => {{
58 $crate::set_buffer!(@cmd ({
59 $cmd.target_client($target_client)
60 }) $($tail)*)
61 }};
62 (@cmd ($cmd:expr) -n $new_buffer_name:expr, $($tail:tt)*) => {{
64 $crate::set_buffer!(@cmd ({
65 $cmd.new_buffer_name($new_buffer_name)
66 }) $($tail)*)
67 }};
68 (@cmd ($cmd:expr) -t $target_session:expr, $($tail:tt)*) => {{
70 $crate::set_buffer!(@cmd ({
71 $cmd.target_session($target_session)
72 }) $($tail)*)
73 }};
74 (@cmd ($cmd:expr) $data:expr, $($tail:tt)*) => {{
76 $crate::set_buffer!(@cmd ({
77 $cmd.data($data)
78 }) $($tail)*)
79 }};
80 (@cmd ($cmd:expr)) => {{
84 $cmd
85 }};
86 () => {{
87 $crate::SetBuffer::new()
88 }};
89 (($cmd:expr), $($tail:tt)*) => {{
90 $crate::set_buffer!(@cmd ($cmd) $($tail)*,)
91 }};
92 ($($tail:tt)*) => {{
93 $crate::set_buffer!(@cmd ({ $crate::SetBuffer::new() }) $($tail)*,)
94 }};
95}
96
97#[test]
98fn set_buffer_macro() {
99 use std::borrow::Cow;
100
101 let set_buffer = set_buffer!();
130 #[cfg(feature = "tmux_2_0")]
131 let set_buffer = set_buffer!((set_buffer), -a);
132 #[cfg(feature = "tmux_3_2")]
133 let set_buffer = set_buffer!((set_buffer), -w);
134 #[cfg(feature = "tmux_2_0")]
135 let set_buffer = set_buffer!((set_buffer), -b "1");
136 #[cfg(feature = "tmux_3_2")]
137 let set_buffer = set_buffer!((set_buffer), -t "2");
138 #[cfg(feature = "tmux_2_0")]
139 let set_buffer = set_buffer!((set_buffer), -n "3");
140 #[cfg(all(feature = "tmux_0_8", not(feature = "tmux_2_0")))]
141 let set_buffer = set_buffer!((set_buffer), -b "4");
142 #[cfg(all(feature = "tmux_0_8", not(feature = "tmux_1_5")))]
143 let set_buffer = set_buffer!((set_buffer), -t "5");
144 #[cfg(feature = "tmux_0_8")]
145 let set_buffer = set_buffer!((set_buffer), "6");
146
147 #[cfg(not(feature = "cmd_alias"))]
148 let cmd = "set-buffer";
149 #[cfg(feature = "cmd_alias")]
150 let cmd = "setb";
151
152 let mut s = Vec::new();
153 s.push(cmd);
154 #[cfg(feature = "tmux_2_0")]
155 s.push("-a");
156 #[cfg(feature = "tmux_3_2")]
157 s.push("-w");
158 #[cfg(feature = "tmux_2_0")]
159 s.extend_from_slice(&["-b", "1"]);
160 #[cfg(feature = "tmux_3_2")]
161 s.extend_from_slice(&["-t", "2"]);
162 #[cfg(feature = "tmux_2_0")]
163 s.extend_from_slice(&["-n", "3"]);
164 #[cfg(all(feature = "tmux_0_8", not(feature = "tmux_2_0")))]
165 s.extend_from_slice(&["-b", "4"]);
166 #[cfg(all(feature = "tmux_0_8", not(feature = "tmux_1_5")))]
167 s.extend_from_slice(&["-t", "5"]);
168 #[cfg(feature = "tmux_0_8")]
169 s.push("6");
170 let s: Vec<Cow<str>> = s.into_iter().map(|a| a.into()).collect();
171
172 let set_buffer = set_buffer.build().to_vec();
173
174 assert_eq!(set_buffer, s);
175}