@@ -108,7 +108,7 @@ func readLine(reader *bufio.Reader, c context) (string, []string, lineType, erro
108108 return line , lineParts , lineType , err
109109}
110110
111- func parseConfig (confReader io.Reader , err error ) ([]Mode , []Binding , []Variable , []string , error ) {
111+ func parseConfig (confReader io.Reader , confPath string , err error ) ([]Mode , []Binding , []Variable , []string , error ) {
112112 if err != nil {
113113 return []Mode {}, []Binding {}, []Variable {}, []string {}, errors .New ("Couldn't get the config file" )
114114 }
@@ -118,7 +118,7 @@ func parseConfig(confReader io.Reader, err error) ([]Mode, []Binding, []Variable
118118 var modes []Mode
119119 var bindings []Binding
120120 var variables []Variable
121- var includes []string
121+ var includes []helpers. Include
122122
123123 context := mainContext
124124 var readErr error
@@ -145,7 +145,11 @@ func parseConfig(confReader io.Reader, err error) ([]Mode, []Binding, []Variable
145145 modes = append (modes , Mode {Name : name })
146146 continue
147147 case includeLine :
148- includes = append (includes , strings .Join (lineParts [1 :], " " ))
148+ inc := helpers.Include {
149+ ParentPath : confPath ,
150+ Path : strings .Join (lineParts [1 :], " " ),
151+ }
152+ includes = append (includes , inc )
149153 continue
150154 case bindCodeBracket :
151155 if context == mainContext {
@@ -210,12 +214,14 @@ func parseConfig(confReader io.Reader, err error) ([]Mode, []Binding, []Variable
210214}
211215
212216func parse (confReader io.Reader , err error ) ([]Mode , []Binding , error ) {
213- modes , bindings , variables , includes , err := parseConfig (confReader , err )
217+ configPath , _ := helpers .GetSwayDefaultConfig ()
218+ modes , bindings , variables , includes , err := parseConfig (confReader , configPath , err )
214219 if err != nil {
215220 return []Mode {}, []Binding {}, errors .New ("Couldn't get the config file" )
216221 }
217222 var parsedIncludes []string
218- for _ , incl := range includes {
223+ for j := 0 ; j < len (includes ); j ++ {
224+ incl := includes [j ]
219225 done := false
220226 for _ , ap := range parsedIncludes {
221227 if ap == incl {
@@ -229,7 +235,7 @@ func parse(confReader io.Reader, err error) ([]Mode, []Binding, error) {
229235 if err != nil {
230236 log .Printf ("couldn't open the included file %s, got err: %v\n " , incl , ferr )
231237 }
232- m , b , v , i , perr := parseConfig (f , err )
238+ m , b , v , i , perr := parseConfig (f , incl , err )
233239 if err != nil {
234240 log .Printf ("couldn't parse the included file %s, got err: %v\n " , incl , perr )
235241 }
@@ -356,10 +362,8 @@ func replaceVariablesInBindings(variables []Variable, bindings []Binding) []Bind
356362 for mkey := range bindings [key ].Modifiers {
357363 bindings [key ].Modifiers [mkey ] = variableNameToValue (variables , bindings [key ].Modifiers [mkey ])
358364 }
359-
360365 nb = append (nb , bindings [key ])
361366 }
362-
363367 return bindings
364368}
365369
@@ -368,12 +372,10 @@ func replaceVariablesInModes(variables []Variable, modes []Mode) []Mode {
368372 modes [mkey ].Name = variableNameToValue (variables , modes [mkey ].Name )
369373 modes [mkey ].Bindings = replaceVariablesInBindings (variables , mode .Bindings )
370374 }
371-
372375 return modes
373376}
374377
375378func sortModifiers (bindings []Binding ) []Binding {
376-
377379 for key := range bindings {
378380 var a []string
379381 var b []string
@@ -388,6 +390,5 @@ func sortModifiers(bindings []Binding) []Binding {
388390 sort .Strings (b )
389391 bindings [key ].Modifiers = append (a , b ... )
390392 }
391-
392393 return bindings
393394}
0 commit comments