tmux_interface/commands/miscellaneous/
lock_server_macro.rs

1/// # Manual
2///
3/// tmux ^0.8:
4/// ```text
5/// lock-server
6/// (alias: lock)
7/// ```
8#[macro_export]
9macro_rules! lock_server {
10    //(@cmd ($cmd:expr) -$unknown:tt, $($tail:tt)*) => {{
11        //::std::compile_error!("unknown flag, option or parameter: {}", $unknown);
12    //}};
13    (@cmd ($cmd:expr)) => {{
14        $cmd
15    }};
16    () => {{
17        $crate::LockServer::new()
18    }};
19    (($cmd:expr), $($tail:tt)*) => {{
20        $crate::lock_server!(@cmd ($cmd) $($tail)*,)
21    }};
22    ($($tail:tt)*) => {{
23        $crate::lock_server!(@cmd ({ $crate::LockServer::new() }) $($tail)*,)
24    }};
25}
26
27#[test]
28fn lock_server_macro() {
29    use std::borrow::Cow;
30
31    // # Manual
32    //
33    // tmux ^0.8:
34    // ```text
35    // lock-server
36    // (alias: lock)
37    // ```
38    let lock_server = lock_server!();
39
40    #[cfg(not(feature = "cmd_alias"))]
41    let cmd = "lock-server";
42    #[cfg(feature = "cmd_alias")]
43    let cmd = "lock";
44
45    let mut s = Vec::new();
46    s.push(cmd);
47    let s: Vec<Cow<str>> = s.into_iter().map(|a| a.into()).collect();
48
49    let lock_server = lock_server.build().to_vec();
50
51    assert_eq!(lock_server, s);
52}