Skip to content

Commit 089160a

Browse files
committed
buffer: Refactor UpdateRules() by creating parseDefFromFile()
This will reduce the length of this function and thus improves the readability.
1 parent ed993a4 commit 089160a

File tree

1 file changed

+36
-48
lines changed

1 file changed

+36
-48
lines changed

internal/buffer/buffer.go

Lines changed: 36 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -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
687717
func (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

Comments
 (0)