Skip to content

Commit

Permalink
Merge pull request #612 from a-kenji/improve-options
Browse files Browse the repository at this point in the history
Improve options
  • Loading branch information
a-kenji authored Jul 9, 2021
2 parents f755ef2 + 8363705 commit 22b3059
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 38 deletions.
6 changes: 3 additions & 3 deletions zellij-utils/assets/config/default.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -244,6 +244,6 @@ keybinds:
# Choose what to do when zellij receives SIGTERM, SIGINT, SIGQUIT or SIGHUP
# eg. when terminal window with an active zellij session is closed
# Options:
# - Detach (Default)
# - Quit
#on_force_close: Quit
# - detach (Default)
# - quit
#on_force_close: quit
47 changes: 12 additions & 35 deletions zellij-utils/src/input/options.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,9 @@ use zellij_tile::data::InputMode;

#[derive(Copy, Clone, Debug, PartialEq, Deserialize, Serialize)]
pub enum OnForceClose {
#[serde(alias = "quit")]
Quit,
#[serde(alias = "detach")]
Detach,
}

Expand All @@ -32,7 +34,7 @@ impl FromStr for OnForceClose {

#[derive(Clone, Default, Debug, PartialEq, Deserialize, Serialize, StructOpt)]
/// 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 {
/// Allow plugins to use a more simplified layout
/// that is compatible with more fonts
Expand All @@ -54,6 +56,7 @@ pub struct Options {
pub layout_dir: Option<PathBuf>,
#[structopt(long)]
#[serde(default)]
/// Disable handling of mouse events
pub disable_mouse_mode: bool,
/// Set behaviour on force close (quit or detach)
#[structopt(long)]
Expand All @@ -73,42 +76,16 @@ impl Options {
/// will supercede a `Some` in `self`
// TODO: Maybe a good candidate for a macro?
pub fn merge(&self, other: Options) -> Options {
let simplified_ui = if other.simplified_ui {
true
} else {
self.simplified_ui
};

let default_mode = match other.default_mode {
None => self.default_mode,
other => other,
};

let default_shell = match other.default_shell {
None => self.default_shell.clone(),
other => other,
};
let merge_bool = |opt_other, opt_self| if opt_other { true } else { opt_self };

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 simplified_ui = merge_bool(other.simplified_ui, self.simplified_ui);
let disable_mouse_mode = merge_bool(other.disable_mouse_mode, self.disable_mouse_mode);

let on_force_close = match other.on_force_close {
None => self.on_force_close,
other => other,
};
let default_mode = other.default_mode.or(self.default_mode);
let default_shell = other.default_shell.or_else(|| self.default_shell.clone());
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);

Options {
simplified_ui,
Expand Down

0 comments on commit 22b3059

Please sign in to comment.