Răsfoiți Sursa

refactor(config): make every setting optional with override layer

Signed-off-by: Sandro-Alessio Gierens <sandro@gierens.de>
Sandro-Alessio Gierens 1 an în urmă
părinte
comite
1636bd6193
2 a modificat fișierele cu 12 adăugiri și 21 ștergeri
  1. 2 0
      src/theme/mod.rs
  2. 10 21
      src/theme/ui_styles.rs

+ 2 - 0
src/theme/mod.rs

@@ -8,7 +8,9 @@ use crate::output::file_name::Colours as FileNameColours;
 use crate::output::render;
 
 mod ui_styles;
+pub(crate) use self::ui_styles::FileType as ThemeFileType;
 pub use self::ui_styles::UiStyles;
+pub(crate) use self::ui_styles::*;
 
 mod lsc;
 pub use self::lsc::LSColors;

+ 10 - 21
src/theme/ui_styles.rs

@@ -4,16 +4,16 @@ use serde::{Deserialize, Serialize};
 use std::collections::HashMap;
 use std::default::Default;
 
-#[derive(Debug, PartialEq, Eq, Clone, Copy, Serialize, Deserialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, Copy, Serialize, Deserialize)]
 pub struct IconStyle {
-    pub icon: Option<char>,
+    pub glyph: Option<char>,
     pub style: Option<Style>,
 }
 
-#[derive(Debug, PartialEq, Eq, Clone, Serialize, Deserialize)]
-pub struct IconStyles {
-    pub filenames: Option<HashMap<String, IconStyle>>,
-    pub extensions: Option<HashMap<String, IconStyle>>,
+#[derive(Debug, Default, PartialEq, Eq, Clone, Copy, Serialize, Deserialize)]
+pub struct FileNameStyle {
+    pub icon: Option<IconStyle>,
+    pub filename: Option<Style>,
 }
 
 #[rustfmt::skip]
@@ -39,13 +39,13 @@ pub struct UiStyles {
     pub octal:        Option<Style>,          // oc
     pub flags:        Option<Style>,          // ff
 
-    pub icon:         Option<Style>,  // ic
     pub symlink_path:         Option<Style>,  // lp
     pub control_char:         Option<Style>,  // cc
     pub broken_symlink:       Option<Style>,  // or
     pub broken_path_overlay:  Option<Style>,  // bO
 
-    pub icons: Option<IconStyles>,
+    pub filenames: Option<HashMap<String, FileNameStyle>>,
+    pub extensions: Option<HashMap<String, FileNameStyle>>,
 }
 // Macro to generate .unwrap_or_default getters for each field to cut down boilerplate
 macro_rules! field_accessors {
@@ -490,7 +490,8 @@ impl UiStyles {
             broken_symlink: Some(Style::default()),
             broken_path_overlay: Some(Style::default()),
 
-            icons: None,
+            filenames: None,
+            extensions: None,
         }
     }
 }
@@ -588,18 +589,6 @@ impl UiStyles {
             "cc" => self.control_char                    = Some(pair.to_style()),
             "bO" => self.broken_path_overlay             = Some(pair.to_style()),
 
-            "ic" => self.icon                           = Some(pair.to_style()),
-
-            "xx" => self.punctuation                    = Some(pair.to_style()),
-            "da" => self.date                           = Some(pair.to_style()),
-            "in" => self.inode                          = Some(pair.to_style()),
-            "bl" => self.blocks                         = Some(pair.to_style()),
-            "hd" => self.header                         = Some(pair.to_style()),
-            "oc" => self.octal                          = Some(pair.to_style()),
-            "ff" => self.flags                          = Some(pair.to_style()),
-            "lp" => self.symlink_path                   = Some(pair.to_style()),
-            "cc" => self.control_char                   = Some(pair.to_style()),
-            "bO" => self.broken_path_overlay            = Some(pair.to_style()),
             "mp" => self.filekinds().mount_point          = Some(pair.to_style()),
             "sp" => self.filekinds().special              = Some(pair.to_style()),  // Catch-all for unrecognized file kind