commit
22b30599d8
2 changed files with 15 additions and 38 deletions
|
|
@ -244,6 +244,6 @@ keybinds:
|
||||||
# Choose what to do when zellij receives SIGTERM, SIGINT, SIGQUIT or SIGHUP
|
# Choose what to do when zellij receives SIGTERM, SIGINT, SIGQUIT or SIGHUP
|
||||||
# eg. when terminal window with an active zellij session is closed
|
# eg. when terminal window with an active zellij session is closed
|
||||||
# Options:
|
# Options:
|
||||||
# - Detach (Default)
|
# - detach (Default)
|
||||||
# - Quit
|
# - quit
|
||||||
#on_force_close: Quit
|
#on_force_close: quit
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,9 @@ use zellij_tile::data::InputMode;
|
||||||
|
|
||||||
#[derive(Copy, Clone, Debug, PartialEq, Deserialize, Serialize)]
|
#[derive(Copy, Clone, Debug, PartialEq, Deserialize, Serialize)]
|
||||||
pub enum OnForceClose {
|
pub enum OnForceClose {
|
||||||
|
#[serde(alias = "quit")]
|
||||||
Quit,
|
Quit,
|
||||||
|
#[serde(alias = "detach")]
|
||||||
Detach,
|
Detach,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -32,7 +34,7 @@ impl FromStr for OnForceClose {
|
||||||
|
|
||||||
#[derive(Clone, Default, Debug, PartialEq, Deserialize, Serialize, StructOpt)]
|
#[derive(Clone, Default, Debug, PartialEq, Deserialize, Serialize, StructOpt)]
|
||||||
/// Options that can be set either through the config file,
|
/// Options that can be set either through the config file,
|
||||||
/// or cli flags
|
/// or cli flags - cli flags should take precedence over the config file
|
||||||
pub struct Options {
|
pub struct Options {
|
||||||
/// Allow plugins to use a more simplified layout
|
/// Allow plugins to use a more simplified layout
|
||||||
/// that is compatible with more fonts
|
/// that is compatible with more fonts
|
||||||
|
|
@ -54,6 +56,7 @@ pub struct Options {
|
||||||
pub layout_dir: Option<PathBuf>,
|
pub layout_dir: Option<PathBuf>,
|
||||||
#[structopt(long)]
|
#[structopt(long)]
|
||||||
#[serde(default)]
|
#[serde(default)]
|
||||||
|
/// Disable handling of mouse events
|
||||||
pub disable_mouse_mode: bool,
|
pub disable_mouse_mode: bool,
|
||||||
/// Set behaviour on force close (quit or detach)
|
/// Set behaviour on force close (quit or detach)
|
||||||
#[structopt(long)]
|
#[structopt(long)]
|
||||||
|
|
@ -73,42 +76,16 @@ impl Options {
|
||||||
/// will supercede a `Some` in `self`
|
/// will supercede a `Some` in `self`
|
||||||
// TODO: Maybe a good candidate for a macro?
|
// TODO: Maybe a good candidate for a macro?
|
||||||
pub fn merge(&self, other: Options) -> Options {
|
pub fn merge(&self, other: Options) -> Options {
|
||||||
let simplified_ui = if other.simplified_ui {
|
let merge_bool = |opt_other, opt_self| if opt_other { true } else { opt_self };
|
||||||
true
|
|
||||||
} else {
|
|
||||||
self.simplified_ui
|
|
||||||
};
|
|
||||||
|
|
||||||
let default_mode = match other.default_mode {
|
let simplified_ui = merge_bool(other.simplified_ui, self.simplified_ui);
|
||||||
None => self.default_mode,
|
let disable_mouse_mode = merge_bool(other.disable_mouse_mode, self.disable_mouse_mode);
|
||||||
other => other,
|
|
||||||
};
|
|
||||||
|
|
||||||
let default_shell = match other.default_shell {
|
let default_mode = other.default_mode.or(self.default_mode);
|
||||||
None => self.default_shell.clone(),
|
let default_shell = other.default_shell.or_else(|| self.default_shell.clone());
|
||||||
other => other,
|
let layout_dir = other.layout_dir.or_else(|| self.layout_dir.clone());
|
||||||
};
|
let theme = other.theme.or_else(|| self.theme.clone());
|
||||||
|
let on_force_close = other.on_force_close.or(self.on_force_close);
|
||||||
let layout_dir = match other.layout_dir {
|
|
||||||
None => self.layout_dir.clone(),
|
|
||||||
other => other,
|
|
||||||
};
|
|
||||||
|
|
||||||
let theme = match other.theme {
|
|
||||||
None => self.theme.clone(),
|
|
||||||
other => other,
|
|
||||||
};
|
|
||||||
|
|
||||||
let disable_mouse_mode = if other.disable_mouse_mode {
|
|
||||||
true
|
|
||||||
} else {
|
|
||||||
self.disable_mouse_mode
|
|
||||||
};
|
|
||||||
|
|
||||||
let on_force_close = match other.on_force_close {
|
|
||||||
None => self.on_force_close,
|
|
||||||
other => other,
|
|
||||||
};
|
|
||||||
|
|
||||||
Options {
|
Options {
|
||||||
simplified_ui,
|
simplified_ui,
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue