mirror of
https://github.com/zyedidia/micro.git
synced 2025-06-18 23:05:40 -04:00
settings.json only contains modified settings
If a setting has a default value it will not be listed in settings.json.
This commit is contained in:
parent
43924646f6
commit
ae05ff1811
@ -148,8 +148,23 @@ func InitLocalSettings(settings map[string]interface{}, path string) error {
|
|||||||
func WriteSettings(filename string) error {
|
func WriteSettings(filename string) error {
|
||||||
var err error
|
var err error
|
||||||
if _, e := os.Stat(ConfigDir); e == nil {
|
if _, e := os.Stat(ConfigDir); e == nil {
|
||||||
|
defaults := DefaultGlobalSettings()
|
||||||
|
|
||||||
|
// remove any options froms parsedSettings that have since been marked as default
|
||||||
|
for k, v := range parsedSettings {
|
||||||
|
if !strings.HasPrefix(reflect.TypeOf(v).String(), "map") {
|
||||||
|
cur, okcur := GlobalSettings[k]
|
||||||
|
if def, ok := defaults[k]; ok && okcur && reflect.DeepEqual(cur, def) {
|
||||||
|
delete(parsedSettings, k)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// add any options to parsedSettings that have since been marked as non-default
|
||||||
for k, v := range GlobalSettings {
|
for k, v := range GlobalSettings {
|
||||||
parsedSettings[k] = v
|
if def, ok := defaults[k]; !ok || !reflect.DeepEqual(v, def) {
|
||||||
|
parsedSettings[k] = v
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
txt, _ := json.MarshalIndent(parsedSettings, "", " ")
|
txt, _ := json.MarshalIndent(parsedSettings, "", " ")
|
||||||
@ -158,10 +173,21 @@ func WriteSettings(filename string) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// OverwriteSettings writes the current settings to settings.json and
|
||||||
|
// resets any user configuration of local settings present in settings.json
|
||||||
func OverwriteSettings(filename string) error {
|
func OverwriteSettings(filename string) error {
|
||||||
|
settings := make(map[string]interface{})
|
||||||
|
|
||||||
var err error
|
var err error
|
||||||
if _, e := os.Stat(ConfigDir); e == nil {
|
if _, e := os.Stat(ConfigDir); e == nil {
|
||||||
txt, _ := json.MarshalIndent(GlobalSettings, "", " ")
|
defaults := DefaultGlobalSettings()
|
||||||
|
for k, v := range GlobalSettings {
|
||||||
|
if def, ok := defaults[k]; !ok || !reflect.DeepEqual(v, def) {
|
||||||
|
settings[k] = v
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
txt, _ := json.MarshalIndent(settings, "", " ")
|
||||||
err = ioutil.WriteFile(filename, append(txt, '\n'), 0644)
|
err = ioutil.WriteFile(filename, append(txt, '\n'), 0644)
|
||||||
}
|
}
|
||||||
return err
|
return err
|
||||||
|
Loading…
Reference in New Issue
Block a user