@@ -682,6 +682,36 @@ func calcHash(b *Buffer, out *[md5.Size]byte) error {
682682 return nil
683683}
684684
685+ func parseDefFromFile (f config.RuntimeFile , header * highlight.Header ) * highlight.Def {
686+ data , err := f .Data ()
687+ if err != nil {
688+ screen .TermMessage ("Error loading syntax file " + f .Name () + ": " + err .Error ())
689+ return nil
690+ }
691+
692+ if header == nil {
693+ header , err = highlight .MakeHeaderYaml (data )
694+ if err != nil {
695+ screen .TermMessage ("Error parsing header for syntax file " + f .Name () + ": " + err .Error ())
696+ return nil
697+ }
698+ }
699+
700+ file , err := highlight .ParseFile (data )
701+ if err != nil {
702+ screen .TermMessage ("Error parsing syntax file " + f .Name () + ": " + err .Error ())
703+ return nil
704+ }
705+
706+ syndef , err := highlight .ParseDef (file , header )
707+ if err != nil {
708+ screen .TermMessage ("Error parsing syntax file " + f .Name () + ": " + err .Error ())
709+ return nil
710+ }
711+
712+ return syndef
713+ }
714+
685715// UpdateRules updates the syntax rules and filetype for this buffer
686716// This is called when the colorscheme changes
687717func (b * Buffer ) UpdateRules () {
@@ -850,23 +880,11 @@ func (b *Buffer) UpdateRules() {
850880 // we found a syntax file using a syntax header file
851881 for _ , f := range config .ListRuntimeFiles (config .RTSyntax ) {
852882 if f .Name () == syntaxFile {
853- data , err := f .Data ()
854- if err != nil {
855- screen .TermMessage ("Error loading syntax file " + f .Name () + ": " + err .Error ())
883+ syndef := parseDefFromFile (f , header )
884+ if syndef == nil {
856885 continue
857886 }
858887
859- file , err := highlight .ParseFile (data )
860- if err != nil {
861- screen .TermMessage ("Error parsing syntax file " + f .Name () + ": " + err .Error ())
862- continue
863- }
864-
865- syndef , err := highlight .ParseDef (file , header )
866- if err != nil {
867- screen .TermMessage ("Error parsing syntax file " + f .Name () + ": " + err .Error ())
868- continue
869- }
870888 b .SyntaxDef = syndef
871889 break
872890 }
@@ -916,29 +934,11 @@ func (b *Buffer) UpdateRules() {
916934 // search for the default file in the user's custom syntax files
917935 for _ , f := range config .ListRealRuntimeFiles (config .RTSyntax ) {
918936 if f .Name () == "default" {
919- data , err := f .Data ()
920- if err != nil {
921- screen .TermMessage ("Error loading syntax file " + f .Name () + ": " + err .Error ())
922- continue
923- }
924-
925- header , err = highlight .MakeHeaderYaml (data )
926- if err != nil {
927- screen .TermMessage ("Error parsing header for syntax file " + f .Name () + ": " + err .Error ())
937+ syndef := parseDefFromFile (f , nil )
938+ if syndef == nil {
928939 continue
929940 }
930941
931- file , err := highlight .ParseFile (data )
932- if err != nil {
933- screen .TermMessage ("Error parsing syntax file " + f .Name () + ": " + err .Error ())
934- continue
935- }
936-
937- syndef , err := highlight .ParseDef (file , header )
938- if err != nil {
939- screen .TermMessage ("Error parsing syntax file " + f .Name () + ": " + err .Error ())
940- continue
941- }
942942 b .SyntaxDef = syndef
943943 break
944944 }
@@ -948,23 +948,11 @@ func (b *Buffer) UpdateRules() {
948948 // search for the default file in the runtime files
949949 for _ , f := range config .ListRuntimeFiles (config .RTSyntax ) {
950950 if f .Name () == "default" {
951- data , err := f .Data ()
952- if err != nil {
953- screen .TermMessage ("Error loading syntax file " + f .Name () + ": " + err .Error ())
951+ syndef := parseDefFromFile (f , nil )
952+ if syndef == nil {
954953 continue
955954 }
956955
957- file , err := highlight .ParseFile (data )
958- if err != nil {
959- screen .TermMessage ("Error parsing syntax file " + f .Name () + ": " + err .Error ())
960- continue
961- }
962-
963- syndef , err := highlight .ParseDef (file , header )
964- if err != nil {
965- screen .TermMessage ("Error parsing syntax file " + f .Name () + ": " + err .Error ())
966- continue
967- }
968956 b .SyntaxDef = syndef
969957 break
970958 }
0 commit comments