1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
use crate::options::{SetOptionTr, USER_OPTION_MARKER};
use crate::TmuxCommand;
use std::borrow::Cow;

pub trait SetUserOption: SetOptionTr {
    fn user_option<'a, S, T>(name: S, value: Option<T>) -> TmuxCommand<'a>
    where
        S: Into<Cow<'a, str>>,
        T: Into<Cow<'a, str>>,
    {
        Self::set(format!("{}{}", USER_OPTION_MARKER, name.into()), value)
    }

    /// # Manual
    ///
    /// ```text
    /// @user-option-name value
    /// ```
    fn user_option_ext<'a, U, S, T>(target: Option<U>, name: S, value: Option<T>) -> TmuxCommand<'a>
    where
        U: Into<Cow<'a, str>>,
        S: Into<Cow<'a, str>>,
        T: Into<Cow<'a, str>>,
    {
        Self::set_ext(
            target,
            format!("{}{}", USER_OPTION_MARKER, name.into()),
            value,
        )
    }
}