aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Duerr <chrisduerr@users.noreply.github.com>2018-09-28 19:53:57 +0000
committerGitHub <noreply@github.com>2018-09-28 19:53:57 +0000
commit93837110aace817f1cbb2a4de7a7facd3cde4a7b (patch)
tree766c07ace83a2da7ee59c6883837c7449d329959
parent5e97fcbea4d763ab7059cce201d110ba9fb6c19f (diff)
downloadalacritty-93837110aace817f1cbb2a4de7a7facd3cde4a7b.tar.gz
alacritty-93837110aace817f1cbb2a4de7a7facd3cde4a7b.zip
Fix deserialization of old decorations values
The deprecated `window.decoration` values `true` and `false` were using the `visit_bool` visitor for serde. However, only the `str` visitor was ever called. To print the correct deprecation notice, the bool visitor has been removed and the warning has been added for the `"true"` and `"false"` str visitor.
-rw-r--r--src/config.rs44
1 files changed, 25 insertions, 19 deletions
diff --git a/src/config.rs b/src/config.rs
index 66cf1a6f..0f250522 100644
--- a/src/config.rs
+++ b/src/config.rs
@@ -279,29 +279,27 @@ impl<'de> Deserialize<'de> for Decorations {
f.write_str("Some subset of full|transparent|buttonless|none")
}
- fn visit_bool<E>(self, value: bool) -> ::std::result::Result<Decorations, E>
- where E: de::Error
- {
- if value {
- eprintln!("deprecated decorations boolean value, use one of \
- default|transparent|buttonless|none instead; Falling back to \"full\"");
- Ok(Decorations::Full)
- } else {
- eprintln!("deprecated decorations boolean value, use one of \
- default|transparent|buttonless|none instead; Falling back to \"none\"");
- Ok(Decorations::None)
- }
- }
-
#[cfg(target_os = "macos")]
fn visit_str<E>(self, value: &str) -> ::std::result::Result<Decorations, E>
where E: de::Error
{
- match value {
+ match value.to_lowercase().as_str() {
"transparent" => Ok(Decorations::Transparent),
"buttonless" => Ok(Decorations::Buttonless),
"none" => Ok(Decorations::None),
"full" => Ok(Decorations::Full),
+ "true" => {
+ eprintln!("deprecated decorations boolean value, \
+ use one of transparent|buttonless|none|full instead; \
+ Falling back to \"full\"");
+ Ok(Decorations::Full)
+ },
+ "false" => {
+ eprintln!("deprecated decorations boolean value, \
+ use one of transparent|buttonless|none|full instead; \
+ Falling back to \"none\"");
+ Ok(Decorations::None)
+ },
_ => {
eprintln!("invalid decorations value: {}; Using default value", value);
Ok(Decorations::Full)
@@ -316,14 +314,22 @@ impl<'de> Deserialize<'de> for Decorations {
match value.to_lowercase().as_str() {
"none" => Ok(Decorations::None),
"full" => Ok(Decorations::Full),
- "transparent" => {
- eprintln!("macos-only decorations value: {}; Using default value", value);
+ "true" => {
+ eprintln!("deprecated decorations boolean value, \
+ use one of none|full instead; \
+ Falling back to \"full\"");
Ok(Decorations::Full)
},
- "buttonless" => {
+ "false" => {
+ eprintln!("deprecated decorations boolean value, \
+ use one of none|full instead; \
+ Falling back to \"none\"");
+ Ok(Decorations::None)
+ },
+ "transparent" | "buttonless" => {
eprintln!("macos-only decorations value: {}; Using default value", value);
Ok(Decorations::Full)
- }
+ },
_ => {
eprintln!("invalid decorations value: {}; Using default value", value);
Ok(Decorations::Full)