From 5610d01e08675e290af4f5c9bcf6fd090beb50c8 Mon Sep 17 00:00:00 2001 From: Dmytro Maluka Date: Thu, 18 Apr 2024 22:39:16 +0200 Subject: [PATCH] UpdateRules: fix `set filetype unknown` Fix `set filetype unknown` not working as expected in the following scenario: 1. open foo.txt (no filetype detected) -> ft is `unknown`, highlighted with default.yaml, as expected 2. `set filetype go` -> ft is `go`, highlighted with go.yaml as expected 3. `set filetype unknown` -> ft is still `go`, still highlighted with go.yaml (whereas expected behavior is: ft is `unknown`, highlighted with default.yaml) Fix that by always updating b.SyntaxDef value, not reusing the old one. This also makes the code simpler and easier to understand. --- internal/buffer/buffer.go | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/internal/buffer/buffer.go b/internal/buffer/buffer.go index 0892df45..e46905c3 100644 --- a/internal/buffer/buffer.go +++ b/internal/buffer/buffer.go @@ -753,6 +753,8 @@ func (b *Buffer) UpdateRules() { return } + b.SyntaxDef = nil + // syntaxFileInfo is an internal helper structure // to store properties of one single syntax file type syntaxFileInfo struct { @@ -945,16 +947,14 @@ func (b *Buffer) UpdateRules() { highlight.ResolveIncludes(b.SyntaxDef, files) } - if b.Highlighter == nil || syntaxFile != "" { - if b.SyntaxDef != nil { - b.Settings["filetype"] = b.SyntaxDef.FileType - } else { - // search for the default file in the user's custom syntax files - b.SyntaxDef = findRealRuntimeSyntaxDef("default", nil) - if b.SyntaxDef == nil { - // search for the default file in the runtime files - b.SyntaxDef = findRuntimeSyntaxDef("default", nil) - } + if b.SyntaxDef != nil { + b.Settings["filetype"] = b.SyntaxDef.FileType + } else { + // search for the default file in the user's custom syntax files + b.SyntaxDef = findRealRuntimeSyntaxDef("default", nil) + if b.SyntaxDef == nil { + // search for the default file in the runtime files + b.SyntaxDef = findRuntimeSyntaxDef("default", nil) } }