action/command: Let reload really reload the settings.json

This commit is contained in:
Jöran Karl
2024-06-18 22:50:40 +02:00
parent fd3a00226c
commit 9afcb80c95
2 changed files with 23 additions and 5 deletions

View File

@@ -357,10 +357,16 @@ func reloadRuntime(reloadPlugins bool) {
err := config.ReadSettings() err := config.ReadSettings()
if err != nil { if err != nil {
screen.TermMessage(err) screen.TermMessage(err)
} } else {
err = config.InitGlobalSettings() parsedSettings := config.ParsedSettings()
if err != nil { defaultSettings := config.DefaultAllSettings()
screen.TermMessage(err) for k := range defaultSettings {
if _, ok := parsedSettings[k]; ok {
SetGlobalOptionNative(k, parsedSettings[k])
} else {
SetGlobalOptionNative(k, defaultSettings[k])
}
}
} }
if reloadPlugins { if reloadPlugins {
@@ -393,6 +399,10 @@ func reloadRuntime(reloadPlugins bool) {
screen.TermMessage(err) screen.TermMessage(err)
} }
for _, b := range buffer.OpenBuffers { for _, b := range buffer.OpenBuffers {
config.InitLocalSettings(b.Settings, b.Path)
for k, v := range b.Settings {
b.SetOptionNative(k, v)
}
b.UpdateRules() b.UpdateRules()
} }
} }

View File

@@ -154,10 +154,10 @@ var (
func init() { func init() {
ModifiedSettings = make(map[string]bool) ModifiedSettings = make(map[string]bool)
VolatileSettings = make(map[string]bool) VolatileSettings = make(map[string]bool)
parsedSettings = make(map[string]interface{})
} }
func ReadSettings() error { func ReadSettings() error {
parsedSettings = make(map[string]interface{})
filename := filepath.Join(ConfigDir, "settings.json") filename := filepath.Join(ConfigDir, "settings.json")
if _, e := os.Stat(filename); e == nil { if _, e := os.Stat(filename); e == nil {
input, err := ioutil.ReadFile(filename) input, err := ioutil.ReadFile(filename)
@@ -189,6 +189,14 @@ func ReadSettings() error {
return nil 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 { func verifySetting(option string, value reflect.Type, def reflect.Type) bool {
var interfaceArr []interface{} var interfaceArr []interface{}
switch option { switch option {