tmux_interface/commands/buffers/
set_buffer_macro.rs1#[macro_export]
32macro_rules! set_buffer {
33 (@cmd ($cmd:expr) -a, $($tail:tt)*) => {{
35 $crate::set_buffer!(@cmd ({
36 $cmd.append()
37 }) $($tail)*)
38 }};
39
40 (@cmd ($cmd:expr) -w, $($tail:tt)*) => {{
42 $crate::set_buffer!(@cmd ({
43 $cmd.send_to_clipboard()
44 }) $($tail)*)
45 }};
46
47 (@cmd ($cmd:expr) -b $buffer:expr, $($tail:tt)*) => {{
49 $crate::set_buffer!(@cmd ({
50 #[cfg(all(feature = "tmux_0_8", not(feature = "tmux_2_0")))]
51 {
52 $cmd.buffer_index($buffer)
53 }
54 #[cfg(feature = "tmux_2_0")]
55 {
56 $cmd.buffer_name($buffer)
57 }
58 }) $($tail)*)
59 }};
60
61 (@cmd ($cmd:expr) -t $target:expr, $($tail:tt)*) => {{
63 $crate::set_buffer!(@cmd ({
64 #[cfg(feature = "tmux_3_2")]
65 {
66 $cmd.target_client($target)
67 }
68 #[cfg(all(feature = "tmux_0_8", not(feature = "tmux_1_5")))]
69 {
70 $cmd.target_session($target)
71 }
72 }) $($tail)*)
73 }};
74
75 (@cmd ($cmd:expr) -n $new_buffer_name:expr, $($tail:tt)*) => {{
77 $crate::set_buffer!(@cmd ({
78 $cmd.new_buffer_name($new_buffer_name)
79 }) $($tail)*)
80 }};
81
82 (@cmd ($cmd:expr) $data:expr, $($tail:tt)*) => {{
84 $crate::set_buffer!(@cmd ({
85 $cmd.data($data)
86 }) $($tail)*)
87 }};
88
89 (@cmd ($cmd:expr)) => {{
93 $cmd
94 }};
95 () => {{
96 $crate::SetBuffer::new()
97 }};
98 (($cmd:expr), $($tail:tt)*) => {{
99 $crate::set_buffer!(@cmd ($cmd) $($tail)*,)
100 }};
101 ($($tail:tt)*) => {{
102 $crate::set_buffer!(@cmd ({ $crate::SetBuffer::new() }) $($tail)*,)
103 }};
104}
105
106#[test]
107fn set_buffer_macro() {
108 use std::borrow::Cow;
109
110 let set_buffer = set_buffer!();
139 #[cfg(feature = "tmux_2_0")]
140 let set_buffer = set_buffer!((set_buffer), -a);
141 #[cfg(feature = "tmux_3_2")]
142 let set_buffer = set_buffer!((set_buffer), -w);
143 #[cfg(all(feature = "tmux_0_8", not(feature = "tmux_2_0")))]
144 let set_buffer = set_buffer!((set_buffer), -b "1");
145 #[cfg(feature = "tmux_2_0")]
146 let set_buffer = set_buffer!((set_buffer), -b "2");
147 #[cfg(feature = "tmux_3_2")]
148 let set_buffer = set_buffer!((set_buffer), -t "3");
149 #[cfg(all(feature = "tmux_0_8", not(feature = "tmux_1_5")))]
150 let set_buffer = set_buffer!((set_buffer), -t "4");
151 #[cfg(feature = "tmux_2_0")]
152 let set_buffer = set_buffer!((set_buffer), -n "5");
153 #[cfg(feature = "tmux_0_8")]
154 let set_buffer = set_buffer!((set_buffer), "6");
155
156 #[cfg(not(feature = "cmd_alias"))]
157 let cmd = "set-buffer";
158 #[cfg(feature = "cmd_alias")]
159 let cmd = "setb";
160
161 let mut s = Vec::new();
162 s.push(cmd);
163 #[cfg(feature = "tmux_2_0")]
164 s.push("-a");
165 #[cfg(feature = "tmux_3_2")]
166 s.push("-w");
167 #[cfg(all(feature = "tmux_0_8", not(feature = "tmux_2_0")))]
168 s.extend_from_slice(&["-b", "1"]);
169 #[cfg(feature = "tmux_2_0")]
170 s.extend_from_slice(&["-b", "2"]);
171 #[cfg(feature = "tmux_3_2")]
172 s.extend_from_slice(&["-t", "3"]);
173 #[cfg(all(feature = "tmux_0_8", not(feature = "tmux_1_5")))]
174 s.extend_from_slice(&["-t", "4"]);
175 #[cfg(feature = "tmux_2_0")]
176 s.extend_from_slice(&["-n", "5"]);
177 #[cfg(feature = "tmux_0_8")]
178 s.push("6");
179 let s: Vec<Cow<str>> = s.into_iter().map(|a| a.into()).collect();
180 let set_buffer = set_buffer.build().to_vec();
181
182 assert_eq!(set_buffer, s);
183}