aboutsummaryrefslogtreecommitdiff
path: root/alacritty/src
diff options
context:
space:
mode:
authorKirill Chibisov <contact@kchibisov.com>2022-08-25 08:51:19 +0300
committerGitHub <noreply@github.com>2022-08-25 05:51:19 +0000
commit791f79a02a4bbb509c257af2849e411d32f4c18b (patch)
tree509fe9e6e956dc458234348d4e2eb836a77c1774 /alacritty/src
parent8f88b4d4bed337d16e8d3d15d8e20cbe782696db (diff)
downloadr-alacritty-791f79a02a4bbb509c257af2849e411d32f4c18b.tar.gz
r-alacritty-791f79a02a4bbb509c257af2849e411d32f4c18b.tar.bz2
r-alacritty-791f79a02a4bbb509c257af2849e411d32f4c18b.zip
Rework `--class` CLI option
This commit swaps the order of `general` and `instance` arguments and also sets `instance` to `general` when only one argument was provided. This should make this option behave like in other terminals on X11, since they set either both or general by default, but not instance like Alacritty. Fixes #6279.
Diffstat (limited to 'alacritty/src')
-rw-r--r--alacritty/src/cli.rs29
-rw-r--r--alacritty/src/config/window.rs10
2 files changed, 21 insertions, 18 deletions
diff --git a/alacritty/src/cli.rs b/alacritty/src/cli.rs
index 8872ec99..e9c563d4 100644
--- a/alacritty/src/cli.rs
+++ b/alacritty/src/cli.rs
@@ -11,7 +11,7 @@ use serde_yaml::Value;
use alacritty_terminal::config::{Program, PtyConfig};
-use crate::config::window::{Class, Identity, DEFAULT_NAME};
+use crate::config::window::{Class, Identity};
use crate::config::{serde_utils, UiConfig};
/// CLI options for the main Alacritty executable.
@@ -159,19 +159,16 @@ fn option_as_value(option: &str) -> Result<Value, serde_yaml::Error> {
/// Parse the class CLI parameter.
fn parse_class(input: &str) -> Result<Class, String> {
- match input.find(',') {
- Some(position) => {
- let general = input[position + 1..].to_owned();
-
- // Warn the user if they've passed too many values.
- if general.contains(',') {
- return Err(String::from("Too many parameters"));
- }
-
- Ok(Class { instance: input[..position].into(), general })
+ let (general, instance) = match input.split_once(',') {
+ // Warn the user if they've passed too many values.
+ Some((_, instance)) if instance.contains(',') => {
+ return Err(String::from("Too many parameters"))
},
- None => Ok(Class { instance: input.into(), general: DEFAULT_NAME.into() }),
- }
+ Some((general, instance)) => (general, instance),
+ None => (input, input),
+ };
+
+ Ok(Class::new(general, instance))
}
/// Convert to hex if possible, else decimal
@@ -385,15 +382,15 @@ mod tests {
#[test]
fn parse_instance_class() {
let class = parse_class("one").unwrap();
+ assert_eq!(class.general, "one");
assert_eq!(class.instance, "one");
- assert_eq!(class.general, DEFAULT_NAME);
}
#[test]
fn parse_general_class() {
let class = parse_class("one,two").unwrap();
- assert_eq!(class.instance, "one");
- assert_eq!(class.general, "two");
+ assert_eq!(class.general, "one");
+ assert_eq!(class.instance, "two");
}
#[test]
diff --git a/alacritty/src/config/window.rs b/alacritty/src/config/window.rs
index 8a59a007..80df87b7 100644
--- a/alacritty/src/config/window.rs
+++ b/alacritty/src/config/window.rs
@@ -203,13 +203,19 @@ pub struct Dimensions {
/// Window class hint.
#[derive(Serialize, Debug, Clone, PartialEq, Eq)]
pub struct Class {
- pub instance: String,
pub general: String,
+ pub instance: String,
+}
+
+impl Class {
+ pub fn new(general: impl ToString, instance: impl ToString) -> Self {
+ Self { general: general.to_string(), instance: instance.to_string() }
+ }
}
impl Default for Class {
fn default() -> Self {
- Self { instance: DEFAULT_NAME.into(), general: DEFAULT_NAME.into() }
+ Self::new(DEFAULT_NAME, DEFAULT_NAME)
}
}