@@ -46,11 +46,12 @@ impl Loader {
46
46
return Ok ( self . base16_default ( ) ) ;
47
47
}
48
48
49
- let mut raw_theme: RawTheme = self . load_raw ( name) ?;
49
+ let path = self . path ( name, false ) ;
50
+ let mut raw_theme: RawTheme = self . load_raw ( path) ?;
50
51
51
52
if let Some ( parent_theme_name) = & raw_theme. inherits_from {
52
- // let parent_theme_name = "bogster" ;
53
- let parent_raw_theme = self . load_raw ( parent_theme_name ) ?;
53
+ let path = self . path ( parent_theme_name, parent_theme_name == name ) ;
54
+ let parent_raw_theme = self . load_raw ( path ) ?;
54
55
55
56
raw_theme. inherit ( parent_raw_theme) ;
56
57
}
@@ -74,19 +75,18 @@ impl Loader {
74
75
}
75
76
76
77
// Loads the raw theme data first from the user_dir then in default_dir
77
- fn load_raw ( & self , name : & str ) -> Result < RawTheme , anyhow:: Error > {
78
- let path = self . path ( name) ;
78
+ fn load_raw ( & self , path : PathBuf ) -> Result < RawTheme , anyhow:: Error > {
79
79
let data = std:: fs:: read ( & path) ?;
80
80
81
81
toml:: from_slice ( data. as_slice ( ) ) . context ( "Faled to deserialize theme" )
82
82
}
83
83
84
84
// Returns the path to the theme name
85
- fn path ( & self , name : & str ) -> PathBuf {
85
+ fn path ( & self , name : & str , only_default_dir : bool ) -> PathBuf {
86
86
let filename = format ! ( "{}.toml" , name) ;
87
87
88
88
let user_path = self . user_dir . join ( & filename) ;
89
- if user_path. exists ( ) {
89
+ if !only_default_dir && user_path. exists ( ) {
90
90
user_path
91
91
} else {
92
92
self . default_dir . join ( filename)
0 commit comments