Skip to main content

tmux_interface/commands/buffers/
set_buffer_macro.rs

1// auto-generated file
2//
3
4/// Set the contents of the specified buffer to data.
5///
6/// # Manual
7///
8/// tmux >=3.2:
9/// ```text
10/// set-buffer [-aw] [-b buffer-name] [-t target-client] [-n new-buffer-name] data
11/// (alias: setb)
12/// ```
13///
14/// tmux >=2.0:
15/// ```text
16/// set-buffer [-a] [-b buffer-name] [-n new-buffer-name] data
17/// (alias: setb)
18/// ```
19///
20/// tmux >=1.5:
21/// ```text
22/// set-buffer [-b buffer-index] data
23/// (alias: setb)
24/// ```
25///
26/// tmux >=0.8:
27/// ```text
28/// set-buffer [-b buffer-index] [-t target-session] data
29/// (alias: setb)
30/// ```
31#[macro_export]
32macro_rules! set_buffer {
33    // `[-a]`
34    (@cmd ($cmd:expr) -a, $($tail:tt)*) => {{
35        $crate::set_buffer!(@cmd ({
36            $cmd.append()
37        }) $($tail)*)
38    }};
39
40    // `[-w]`
41    (@cmd ($cmd:expr) -w, $($tail:tt)*) => {{
42        $crate::set_buffer!(@cmd ({
43            $cmd.send_to_clipboard()
44        }) $($tail)*)
45    }};
46
47    // `[-b buffer]`
48    (@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    // `[-t target]`
62    (@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    // `[-n new-buffer-name]`
76    (@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    // `[data]`
83    (@cmd ($cmd:expr) $data:expr, $($tail:tt)*) => {{
84        $crate::set_buffer!(@cmd ({
85            $cmd.data($data)
86        }) $($tail)*)
87    }};
88
89    //(@cmd ($cmd:expr) -$unknown:tt, $($tail:tt)*) => {{
90        //::std::compile_error!("unknown flag, option or parameter: {}", $unknown);
91    //}};
92    (@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    // Set the contents of the specified buffer to data.
111    //
112    // # Manual
113    //
114    // tmux >=3.2:
115    // ```text
116    // set-buffer [-aw] [-b buffer-name] [-t target-client] [-n new-buffer-name] data
117    // (alias: setb)
118    // ```
119    //
120    // tmux >=2.0:
121    // ```text
122    // set-buffer [-a] [-b buffer-name] [-n new-buffer-name] data
123    // (alias: setb)
124    // ```
125    //
126    // tmux >=1.5:
127    // ```text
128    // set-buffer [-b buffer-index] data
129    // (alias: setb)
130    // ```
131    //
132    // tmux >=0.8:
133    // ```text
134    // set-buffer [-b buffer-index] [-t target-session] data
135    // (alias: setb)
136    // ```
137
138    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}