From 9afcb80c9590e710e560e4e9c9744fe04e5dfaab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6ran=20Karl?= <3951388+JoeKar@users.noreply.github.com> Date: Tue, 18 Jun 2024 22:50:40 +0200 Subject: [PATCH] action/command: Let `reload` really reload the `settings.json` --- internal/action/command.go | 18 ++++++++++++++---- internal/config/settings.go | 10 +++++++++- 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/internal/action/command.go b/internal/action/command.go index f88660da..81d2467b 100644 --- a/internal/action/command.go +++ b/internal/action/command.go @@ -357,10 +357,16 @@ func reloadRuntime(reloadPlugins bool) { err := config.ReadSettings() if err != nil { screen.TermMessage(err) - } - err = config.InitGlobalSettings() - if err != nil { - screen.TermMessage(err) + } else { + parsedSettings := config.ParsedSettings() + defaultSettings := config.DefaultAllSettings() + for k := range defaultSettings { + if _, ok := parsedSettings[k]; ok { + SetGlobalOptionNative(k, parsedSettings[k]) + } else { + SetGlobalOptionNative(k, defaultSettings[k]) + } + } } if reloadPlugins { @@ -393,6 +399,10 @@ func reloadRuntime(reloadPlugins bool) { screen.TermMessage(err) } for _, b := range buffer.OpenBuffers { + config.InitLocalSettings(b.Settings, b.Path) + for k, v := range b.Settings { + b.SetOptionNative(k, v) + } b.UpdateRules() } } diff --git a/internal/config/settings.go b/internal/config/settings.go index d25f0d07..d4acf26c 100644 --- a/internal/config/settings.go +++ b/internal/config/settings.go @@ -154,10 +154,10 @@ var ( func init() { ModifiedSettings = make(map[string]bool) VolatileSettings = make(map[string]bool) - parsedSettings = make(map[string]interface{}) } func ReadSettings() error { + parsedSettings = make(map[string]interface{}) filename := filepath.Join(ConfigDir, "settings.json") if _, e := os.Stat(filename); e == nil { input, err := ioutil.ReadFile(filename) @@ -189,6 +189,14 @@ func ReadSettings() error { return nil } +func ParsedSettings() map[string]interface{} { + s := make(map[string]interface{}) + for k, v := range parsedSettings { + s[k] = v + } + return s +} + func verifySetting(option string, value reflect.Type, def reflect.Type) bool { var interfaceArr []interface{} switch option {