diff options
author | Kirill Chibisov <contact@kchibisov.com> | 2020-07-11 20:03:09 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-07-11 20:03:09 +0300 |
commit | 18cf806a27f06185b1ceb2d63f3b9bc2dd3dc80e (patch) | |
tree | 6609ca3aec4fe8da171de474a4a8e8d9b572f0e5 /alacritty/src/cli.rs | |
parent | 5f039cee49b9c817177c6feecc5e7d97fb0a57e1 (diff) | |
download | r-alacritty-18cf806a27f06185b1ceb2d63f3b9bc2dd3dc80e.tar.gz r-alacritty-18cf806a27f06185b1ceb2d63f3b9bc2dd3dc80e.tar.bz2 r-alacritty-18cf806a27f06185b1ceb2d63f3b9bc2dd3dc80e.zip |
Remove gui dependencies from alacritty_terminal
This commit removes font dependency from alacritty_terminal,
so it'll simplify the usage of alacritty_terminal as a library,
since you won't link to system's libraries anymore. It also
moves many alacritty related config options from it.
Fixes #3393.
Diffstat (limited to 'alacritty/src/cli.rs')
-rw-r--r-- | alacritty/src/cli.rs | 51 |
1 files changed, 30 insertions, 21 deletions
diff --git a/alacritty/src/cli.rs b/alacritty/src/cli.rs index 89db20e1..1f677488 100644 --- a/alacritty/src/cli.rs +++ b/alacritty/src/cli.rs @@ -4,9 +4,11 @@ use std::path::PathBuf; use clap::{crate_authors, crate_description, crate_name, crate_version, App, Arg}; use log::{self, error, LevelFilter}; -use alacritty_terminal::config::{Delta, Dimensions, Program, DEFAULT_NAME}; +use alacritty_terminal::config::Program; use alacritty_terminal::index::{Column, Line}; +use crate::config::ui_config::Delta; +use crate::config::window::{Dimensions, DEFAULT_NAME}; use crate::config::Config; #[cfg(not(any(target_os = "macos", windows)))] @@ -263,35 +265,42 @@ impl Options { } if let Some(lcr) = self.live_config_reload { - config.set_live_config_reload(lcr); + config.ui_config.set_live_config_reload(lcr); } config.shell = self.command.or(config.shell); config.hold = self.hold; - config.set_dynamic_title(config.dynamic_title() && self.title.is_none()); - config.window.dimensions = self.dimensions.unwrap_or(config.window.dimensions); - config.window.title = self.title.unwrap_or(config.window.title); - config.window.position = self.position.or(config.window.position); - config.window.embed = self.embed.and_then(|embed| embed.parse().ok()); + let dynamic_title = config.ui_config.dynamic_title() && self.title.is_none(); + config.ui_config.set_dynamic_title(dynamic_title); - config.window.class.instance = self.class_instance.unwrap_or(config.window.class.instance); - config.window.class.general = self.class_general.unwrap_or(config.window.class.general); + replace_if_some(&mut config.ui_config.window.dimensions, self.dimensions); + replace_if_some(&mut config.ui_config.window.title, self.title); + config.ui_config.window.position = self.position.or(config.ui_config.window.position); + config.ui_config.window.embed = self.embed.and_then(|embed| embed.parse().ok()); + replace_if_some(&mut config.ui_config.window.class.instance, self.class_instance); + replace_if_some(&mut config.ui_config.window.class.general, self.class_general); - config.debug.print_events = self.print_events || config.debug.print_events; - config.debug.log_level = max(config.debug.log_level, self.log_level); - config.debug.ref_test = self.ref_test || config.debug.ref_test; - config.debug.persistent_logging = - self.persistent_logging || config.debug.persistent_logging; + config.ui_config.debug.print_events |= self.print_events; + config.ui_config.debug.log_level = max(config.ui_config.debug.log_level, self.log_level); + config.ui_config.debug.ref_test |= self.ref_test; + config.ui_config.debug.persistent_logging |= self.persistent_logging; - if config.debug.print_events { - config.debug.log_level = max(config.debug.log_level, LevelFilter::Info); + if config.ui_config.debug.print_events { + config.ui_config.debug.log_level = + max(config.ui_config.debug.log_level, LevelFilter::Info); } config } } +fn replace_if_some<T>(option: &mut T, value: Option<T>) { + if let Some(value) = value { + *option = value; + } +} + #[cfg(test)] mod tests { use crate::cli::Options; @@ -300,11 +309,11 @@ mod tests { #[test] fn dynamic_title_ignoring_options_by_default() { let config = Config::default(); - let old_dynamic_title = config.dynamic_title(); + let old_dynamic_title = config.ui_config.dynamic_title(); let config = Options::default().into_config(config); - assert_eq!(old_dynamic_title, config.dynamic_title()); + assert_eq!(old_dynamic_title, config.ui_config.dynamic_title()); } #[test] @@ -315,16 +324,16 @@ mod tests { options.title = Some("foo".to_owned()); let config = options.into_config(config); - assert!(!config.dynamic_title()); + assert!(!config.ui_config.dynamic_title()); } #[test] fn dynamic_title_not_overridden_by_config() { let mut config = Config::default(); - config.window.title = "foo".to_owned(); + config.ui_config.window.title = "foo".to_owned(); let config = Options::default().into_config(config); - assert!(config.dynamic_title()); + assert!(config.ui_config.dynamic_title()); } } |