@@ -740,6 +740,45 @@ func findRuntimeSyntaxDef(name string, header *highlight.Header) *highlight.Def
740740 return nil
741741}
742742
743+ func resolveIncludes (syndef * highlight.Def ) {
744+ if ! highlight .HasIncludes (syndef ) {
745+ return
746+ }
747+ includes := highlight .GetIncludes (syndef )
748+
749+ var files []* highlight.File
750+ for _ , f := range config .ListRuntimeFiles (config .RTSyntax ) {
751+ data , err := f .Data ()
752+ if err != nil {
753+ screen .TermMessage ("Error loading syntax file " + f .Name () + ": " + err .Error ())
754+ continue
755+ }
756+
757+ header , err := highlight .MakeHeaderYaml (data )
758+ if err != nil {
759+ screen .TermMessage ("Error parsing syntax file " + f .Name () + ": " + err .Error ())
760+ continue
761+ }
762+
763+ for _ , i := range includes {
764+ if header .FileType == i {
765+ file , err := highlight .ParseFile (data )
766+ if err != nil {
767+ screen .TermMessage ("Error parsing syntax file " + f .Name () + ": " + err .Error ())
768+ continue
769+ }
770+ files = append (files , file )
771+ break
772+ }
773+ }
774+ if len (files ) >= len (includes ) {
775+ break
776+ }
777+ }
778+
779+ highlight .ResolveIncludes (syndef , files )
780+ }
781+
743782// UpdateRules updates the syntax rules and filetype for this buffer
744783// This is called when the colorscheme changes
745784func (b * Buffer ) UpdateRules () {
@@ -922,40 +961,8 @@ func (b *Buffer) UpdateRules() {
922961 }
923962 }
924963
925- if b .SyntaxDef != nil && highlight .HasIncludes (b .SyntaxDef ) {
926- includes := highlight .GetIncludes (b .SyntaxDef )
927-
928- var files []* highlight.File
929- for _ , f := range config .ListRuntimeFiles (config .RTSyntax ) {
930- data , err := f .Data ()
931- if err != nil {
932- screen .TermMessage ("Error loading syntax file " + f .Name () + ": " + err .Error ())
933- continue
934- }
935-
936- header , err := highlight .MakeHeaderYaml (data )
937- if err != nil {
938- screen .TermMessage ("Error parsing syntax file " + f .Name () + ": " + err .Error ())
939- continue
940- }
941-
942- for _ , i := range includes {
943- if header .FileType == i {
944- file , err := highlight .ParseFile (data )
945- if err != nil {
946- screen .TermMessage ("Error parsing syntax file " + f .Name () + ": " + err .Error ())
947- continue
948- }
949- files = append (files , file )
950- break
951- }
952- }
953- if len (files ) >= len (includes ) {
954- break
955- }
956- }
957-
958- highlight .ResolveIncludes (b .SyntaxDef , files )
964+ if b .SyntaxDef != nil {
965+ resolveIncludes (b .SyntaxDef )
959966 }
960967
961968 if b .SyntaxDef != nil {
0 commit comments