Skip to content

Commit

Permalink
Fix overwriting persistent non-default settings with temporary defaul…
Browse files Browse the repository at this point in the history
…t settings (#3010)

Passing options via micro -option=value in the command line should only
temporarily override the option value for the current micro session,
not change it permanently in settings.json. But currently it wrongly
writes it to settings.json in the case when the value passed via command
line is the default value of this option, while the current permanent
setting in settings.json is a non-default value.

Fixes #3005
  • Loading branch information
dmaluka authored Mar 14, 2024
1 parent 606bcec commit c24604d
Show file tree
Hide file tree
Showing 3 changed files with 9 additions and 1 deletion.
1 change: 1 addition & 0 deletions cmd/micro/micro.go
Original file line number Diff line number Diff line change
Expand Up @@ -275,6 +275,7 @@ func main() {
continue
}
config.GlobalSettings[k] = nativeValue
config.VolatileSettings[k] = true
}
}

Expand Down
1 change: 1 addition & 0 deletions internal/action/command.go
Original file line number Diff line number Diff line change
Expand Up @@ -482,6 +482,7 @@ func SetGlobalOptionNative(option string, nativeValue interface{}) error {
if !local {
config.GlobalSettings[option] = nativeValue
config.ModifiedSettings[option] = true
delete(config.VolatileSettings, option)

if option == "colorscheme" {
// LoadSyntaxFiles()
Expand Down
8 changes: 7 additions & 1 deletion internal/config/settings.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,10 +34,15 @@ var (
// ModifiedSettings is a map of settings which should be written to disk
// because they have been modified by the user in this session
ModifiedSettings map[string]bool

// VolatileSettings is a map of settings which should not be written to disk
// because they have been temporarily set for this session only
VolatileSettings map[string]bool
)

func init() {
ModifiedSettings = make(map[string]bool)
VolatileSettings = make(map[string]bool)
parsedSettings = make(map[string]interface{})
}

Expand Down Expand Up @@ -176,7 +181,8 @@ func WriteSettings(filename string) error {
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) {
_, vol := VolatileSettings[k]
if def, ok := defaults[k]; ok && okcur && !vol && reflect.DeepEqual(cur, def) {
delete(parsedSettings, k)
}
}
Expand Down

0 comments on commit c24604d

Please sign in to comment.