From 521b63a28cef7c2953dcba6c826ccde46d19c9d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6ran=20Karl?= <3951388+JoeKar@users.noreply.github.com> Date: Mon, 17 Jun 2024 17:34:38 +0200 Subject: [PATCH] buffer/settings: On `filetype` change reload parsed local settings only Additionally keep volatile settings as they have been set by the user. --- internal/buffer/settings.go | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/internal/buffer/settings.go b/internal/buffer/settings.go index 355cf864..38385c57 100644 --- a/internal/buffer/settings.go +++ b/internal/buffer/settings.go @@ -26,7 +26,23 @@ func (b *Buffer) SetOptionNative(option string, nativeValue interface{}) error { } else if option == "statusline" { screen.Redraw() } else if option == "filetype" { - config.InitLocalSettings(b.Settings, b.Path) + settings := config.ParsedSettings() + settings["filetype"] = nativeValue + config.InitLocalSettings(settings, b.Path) + for k, v := range config.DefaultCommonSettings() { + if k == "filetype" { + continue + } + if _, ok := config.VolatileSettings[k]; ok { + // filetype should not override volatile settings + continue + } + if _, ok := settings[k]; ok { + b.SetOptionNative(k, settings[k]) + } else { + b.SetOptionNative(k, v) + } + } b.UpdateRules() } else if option == "fileformat" { switch b.Settings["fileformat"].(string) {