From c791cef9c6ce1431cda60e43f14a06198db92dff Mon Sep 17 00:00:00 2001 From: Dmitry Maluka Date: Fri, 3 Nov 2023 00:51:30 +0100 Subject: [PATCH 1/4] Fix default setting for global & common options Apply the same fix as 4d13308 to all kinds of options, not just to plugin options. --- internal/config/settings.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/internal/config/settings.go b/internal/config/settings.go index 72e998f1..af472651 100644 --- a/internal/config/settings.go +++ b/internal/config/settings.go @@ -239,7 +239,7 @@ func RegisterGlobalOptionPlug(pl string, name string, defaultvalue interface{}) // RegisterCommonOption creates a new option func RegisterCommonOption(name string, defaultvalue interface{}) error { - if v, ok := GlobalSettings[name]; !ok { + if _, ok := GlobalSettings[name]; !ok { defaultCommonSettings[name] = defaultvalue GlobalSettings[name] = defaultvalue err := WriteSettings(filepath.Join(ConfigDir, "settings.json")) @@ -247,14 +247,14 @@ func RegisterCommonOption(name string, defaultvalue interface{}) error { return errors.New("Error writing settings.json file: " + err.Error()) } } else { - defaultCommonSettings[name] = v + defaultCommonSettings[name] = defaultvalue } return nil } // RegisterGlobalOption creates a new global-only option func RegisterGlobalOption(name string, defaultvalue interface{}) error { - if v, ok := GlobalSettings[name]; !ok { + if _, ok := GlobalSettings[name]; !ok { DefaultGlobalOnlySettings[name] = defaultvalue GlobalSettings[name] = defaultvalue err := WriteSettings(filepath.Join(ConfigDir, "settings.json")) @@ -262,7 +262,7 @@ func RegisterGlobalOption(name string, defaultvalue interface{}) error { return errors.New("Error writing settings.json file: " + err.Error()) } } else { - DefaultGlobalOnlySettings[name] = v + DefaultGlobalOnlySettings[name] = defaultvalue } return nil } From 12398916c790cf07efa570c63f74230f5ecc25ea Mon Sep 17 00:00:00 2001 From: Dmitry Maluka Date: Fri, 3 Nov 2023 00:58:30 +0100 Subject: [PATCH 2/4] Fix code duplication in RegisterCommonOptionPlug Avoid code duplication between RegisterCommonOption() and RegisterCommonOptionPlug(), exactly the same way as it is done for RegisterGlobalOption() and RegisterGlobalOptionPlug(). --- internal/config/settings.go | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/internal/config/settings.go b/internal/config/settings.go index af472651..eb377d11 100644 --- a/internal/config/settings.go +++ b/internal/config/settings.go @@ -218,18 +218,7 @@ func OverwriteSettings(filename string) error { // RegisterCommonOptionPlug creates a new option (called pl.name). This is meant to be called by plugins to add options. func RegisterCommonOptionPlug(pl string, name string, defaultvalue interface{}) error { - name = pl + "." + name - if _, ok := GlobalSettings[name]; !ok { - defaultCommonSettings[name] = defaultvalue - GlobalSettings[name] = defaultvalue - err := WriteSettings(filepath.Join(ConfigDir, "settings.json")) - if err != nil { - return errors.New("Error writing settings.json file: " + err.Error()) - } - } else { - defaultCommonSettings[name] = defaultvalue - } - return nil + return RegisterCommonOption(pl+"."+name, defaultvalue) } // RegisterGlobalOptionPlug creates a new global-only option (named pl.name) From a373d22939d7ea5e918ac8d29f8a8275571ec9c1 Mon Sep 17 00:00:00 2001 From: Dmitry Maluka Date: Fri, 3 Nov 2023 01:07:29 +0100 Subject: [PATCH 3/4] Refactor defaultvalue setting a bit --- internal/config/settings.go | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/internal/config/settings.go b/internal/config/settings.go index eb377d11..6494c1f3 100644 --- a/internal/config/settings.go +++ b/internal/config/settings.go @@ -229,30 +229,26 @@ func RegisterGlobalOptionPlug(pl string, name string, defaultvalue interface{}) // RegisterCommonOption creates a new option func RegisterCommonOption(name string, defaultvalue interface{}) error { if _, ok := GlobalSettings[name]; !ok { - defaultCommonSettings[name] = defaultvalue GlobalSettings[name] = defaultvalue err := WriteSettings(filepath.Join(ConfigDir, "settings.json")) if err != nil { return errors.New("Error writing settings.json file: " + err.Error()) } - } else { - defaultCommonSettings[name] = defaultvalue } + defaultCommonSettings[name] = defaultvalue return nil } // RegisterGlobalOption creates a new global-only option func RegisterGlobalOption(name string, defaultvalue interface{}) error { if _, ok := GlobalSettings[name]; !ok { - DefaultGlobalOnlySettings[name] = defaultvalue GlobalSettings[name] = defaultvalue err := WriteSettings(filepath.Join(ConfigDir, "settings.json")) if err != nil { return errors.New("Error writing settings.json file: " + err.Error()) } - } else { - DefaultGlobalOnlySettings[name] = defaultvalue } + DefaultGlobalOnlySettings[name] = defaultvalue return nil } From 359b58a89bd6eedf8d28e34935952dfc60560552 Mon Sep 17 00:00:00 2001 From: Dmitry Maluka Date: Fri, 3 Nov 2023 01:11:05 +0100 Subject: [PATCH 4/4] Don't rewrite settings.json when registering options It doesn't seem necessary to write settings to settings.json when registering a new option. The option is set to its default value, which means that it will not be written to settings.json (precisely because it's the default value), so the contents of settings.json don't change and thus don't need to be written again. This unneeded writing, in particular, causes unexpected "The file on disk has changed. Reload file? (y,n,esc)" each time when we open settings.json via micro. Fixes #2647 --- internal/config/settings.go | 8 -------- 1 file changed, 8 deletions(-) diff --git a/internal/config/settings.go b/internal/config/settings.go index 6494c1f3..dc342590 100644 --- a/internal/config/settings.go +++ b/internal/config/settings.go @@ -230,10 +230,6 @@ func RegisterGlobalOptionPlug(pl string, name string, defaultvalue interface{}) func RegisterCommonOption(name string, defaultvalue interface{}) error { if _, ok := GlobalSettings[name]; !ok { GlobalSettings[name] = defaultvalue - err := WriteSettings(filepath.Join(ConfigDir, "settings.json")) - if err != nil { - return errors.New("Error writing settings.json file: " + err.Error()) - } } defaultCommonSettings[name] = defaultvalue return nil @@ -243,10 +239,6 @@ func RegisterCommonOption(name string, defaultvalue interface{}) error { func RegisterGlobalOption(name string, defaultvalue interface{}) error { if _, ok := GlobalSettings[name]; !ok { GlobalSettings[name] = defaultvalue - err := WriteSettings(filepath.Join(ConfigDir, "settings.json")) - if err != nil { - return errors.New("Error writing settings.json file: " + err.Error()) - } } DefaultGlobalOnlySettings[name] = defaultvalue return nil