tmux_interface/commands/buffers/
delete_buffer_macro.rs

1/// Delete the buffer named buffer-name, or the most recently added automatically named buffer
2/// if not specified.
3///
4/// # Manual
5///
6/// tmux ^2.0:
7/// ```text
8/// delete-buffer [-b buffer-name]
9/// (alias: deleteb)
10/// ```
11///
12/// tmux ^1.5:
13/// ```text
14/// delete-buffer [-b buffer-index]
15/// (alias: deleteb)
16/// ```
17///
18/// tmux ^0.8:
19/// ```text
20/// delete-buffer [-b buffer-index] [-t target-session]
21/// (alias: deleteb)
22/// ```
23#[macro_export]
24macro_rules! delete_buffer {
25    (@cmd ($cmd:expr) -b $buffer:expr, $($tail:tt)*) => {{
26        $crate::choose_buffer!(@cmd ({
27            #[cfg(feature = "tmux_2_0")]
28            {
29                $cmd.buffer_name($buffer)
30            }
31            #[cfg(all(feature = "tmux_1_5", not(feature = "tmux_2_0")))]
32            {
33                $cmd.buffer_index($buffer)
34            }
35        }) $($tail)*)
36    }};
37    (@cmd ($cmd:expr) -t $target_session:expr, $($tail:tt)*) => {{
38        $crate::choose_buffer!(@cmd ({
39            $cmd.target_session($target_session)
40        }) $($tail)*)
41    }};
42    //(@cmd ($cmd:expr) -$unknown:tt, $($tail:tt)*) => {{
43        //::std::compile_error!("unknown flag, option or parameter: {}", $unknown);
44    //}};
45    (@cmd ($cmd:expr)) => {{
46        $cmd
47    }};
48    () => {{
49        $crate::DeleteBuffer::new()
50    }};
51    (($cmd:expr), $($tail:tt)*) => {{
52        $crate::delete_buffer!(@cmd ($cmd) $($tail)*,)
53    }};
54    ($($tail:tt)*) => {{
55        $crate::delete_buffer!(@cmd ({ $crate::DeleteBuffer::new() }) $($tail)*,)
56    }};
57}
58
59#[test]
60fn delete_buffer_macro() {
61    use crate::TargetPane;
62    use std::borrow::Cow;
63
64    // Delete the buffer named buffer-name, or the most recently added automatically named buffer
65    // if not specified.
66    //
67    // # Manual
68    //
69    // tmux ^2.0:
70    // ```text
71    // delete-buffer [-b buffer-name]
72    // (alias: deleteb)
73    // ```
74    //
75    // tmux ^1.5 v2.0:
76    // ```text
77    // delete-buffer [-b buffer-index]
78    // (alias: deleteb)
79    // ```
80    //
81    // tmux ^0.8:
82    // ```text
83    // delete-buffer [-b buffer-index] [-t target-session]
84    // (alias: deleteb)
85    // ```
86    let buffer_name = TargetPane::Raw("1").to_string();
87
88    let delete_buffer = delete_buffer!();
89    #[cfg(feature = "tmux_2_0")]
90    let delete_buffer = delete_buffer!((delete_buffer), -b buffer_name);
91    #[cfg(all(feature = "tmux_1_5", not(feature = "tmux_2_0")))]
92    let delete_buffer = delete_buffer!((delete_buffer), -b buffer_name);
93    #[cfg(all(feature = "tmux_0_8", not(feature = "tmux_1_5")))]
94    let delete_buffer = delete_buffer!((delete_buffer), -t buffer_name);
95
96    #[cfg(not(feature = "cmd_alias"))]
97    let cmd = "delete-buffer";
98    #[cfg(feature = "cmd_alias")]
99    let cmd = "deleteb";
100
101    let mut s = Vec::new();
102    s.push(cmd);
103
104    #[cfg(feature = "tmux_2_0")]
105    s.extend_from_slice(&["-b", "1"]);
106    #[cfg(all(feature = "tmux_1_5", not(feature = "tmux_2_0")))]
107    s.extend_from_slice(&["-b", "1"]);
108    #[cfg(all(feature = "tmux_0_8", not(feature = "tmux_1_5")))]
109    s.extend_from_slice(&["-t", "1"]);
110    let s: Vec<Cow<str>> = s.into_iter().map(|a| a.into()).collect();
111
112    let delete_buffer = delete_buffer.build().to_vec();
113
114    assert_eq!(delete_buffer, s);
115}