command: Prevent re-writing settings in case of local option (#3178)
* command: Prevent re-writing settings in case of local option * command: Refactor SetGlobalOptionNative() Co-authored-by: Dmitry Maluka <dmitrymaluka@gmail.com> --------- Co-authored-by: Dmitry Maluka <dmitrymaluka@gmail.com>
This commit is contained in:
parent
acb0d763df
commit
426aa9bb8b
1 changed files with 50 additions and 55 deletions
|
@ -513,74 +513,69 @@ func (h *BufPane) NewTabCmd(args []string) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func SetGlobalOptionNative(option string, nativeValue interface{}) error {
|
func SetGlobalOptionNative(option string, nativeValue interface{}) error {
|
||||||
local := false
|
// check for local option first...
|
||||||
for _, s := range config.LocalSettings {
|
for _, s := range config.LocalSettings {
|
||||||
if s == option {
|
if s == option {
|
||||||
local = true
|
MainTab().CurPane().Buf.SetOptionNative(option, nativeValue)
|
||||||
break
|
return nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if !local {
|
// ...if it's not local continue with the globals
|
||||||
config.GlobalSettings[option] = nativeValue
|
config.GlobalSettings[option] = nativeValue
|
||||||
config.ModifiedSettings[option] = true
|
config.ModifiedSettings[option] = true
|
||||||
delete(config.VolatileSettings, option)
|
delete(config.VolatileSettings, option)
|
||||||
|
|
||||||
if option == "colorscheme" {
|
if option == "colorscheme" {
|
||||||
// LoadSyntaxFiles()
|
// LoadSyntaxFiles()
|
||||||
config.InitColorscheme()
|
config.InitColorscheme()
|
||||||
for _, b := range buffer.OpenBuffers {
|
for _, b := range buffer.OpenBuffers {
|
||||||
b.UpdateRules()
|
b.UpdateRules()
|
||||||
}
|
}
|
||||||
} else if option == "infobar" || option == "keymenu" {
|
} else if option == "infobar" || option == "keymenu" {
|
||||||
Tabs.Resize()
|
Tabs.Resize()
|
||||||
} else if option == "mouse" {
|
} else if option == "mouse" {
|
||||||
if !nativeValue.(bool) {
|
if !nativeValue.(bool) {
|
||||||
screen.Screen.DisableMouse()
|
screen.Screen.DisableMouse()
|
||||||
} else {
|
|
||||||
screen.Screen.EnableMouse()
|
|
||||||
}
|
|
||||||
} else if option == "autosave" {
|
|
||||||
if nativeValue.(float64) > 0 {
|
|
||||||
config.SetAutoTime(int(nativeValue.(float64)))
|
|
||||||
config.StartAutoSave()
|
|
||||||
} else {
|
|
||||||
config.SetAutoTime(0)
|
|
||||||
}
|
|
||||||
} else if option == "paste" {
|
|
||||||
screen.Screen.SetPaste(nativeValue.(bool))
|
|
||||||
} else if option == "clipboard" {
|
|
||||||
m := clipboard.SetMethod(nativeValue.(string))
|
|
||||||
err := clipboard.Initialize(m)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
for _, pl := range config.Plugins {
|
screen.Screen.EnableMouse()
|
||||||
if option == pl.Name {
|
}
|
||||||
if nativeValue.(bool) && !pl.Loaded {
|
} else if option == "autosave" {
|
||||||
pl.Load()
|
if nativeValue.(float64) > 0 {
|
||||||
_, err := pl.Call("init")
|
config.SetAutoTime(int(nativeValue.(float64)))
|
||||||
if err != nil && err != config.ErrNoSuchFunction {
|
config.StartAutoSave()
|
||||||
screen.TermMessage(err)
|
} else {
|
||||||
}
|
config.SetAutoTime(0)
|
||||||
} else if !nativeValue.(bool) && pl.Loaded {
|
}
|
||||||
_, err := pl.Call("deinit")
|
} else if option == "paste" {
|
||||||
if err != nil && err != config.ErrNoSuchFunction {
|
screen.Screen.SetPaste(nativeValue.(bool))
|
||||||
screen.TermMessage(err)
|
} else if option == "clipboard" {
|
||||||
}
|
m := clipboard.SetMethod(nativeValue.(string))
|
||||||
|
err := clipboard.Initialize(m)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
for _, pl := range config.Plugins {
|
||||||
|
if option == pl.Name {
|
||||||
|
if nativeValue.(bool) && !pl.Loaded {
|
||||||
|
pl.Load()
|
||||||
|
_, err := pl.Call("init")
|
||||||
|
if err != nil && err != config.ErrNoSuchFunction {
|
||||||
|
screen.TermMessage(err)
|
||||||
|
}
|
||||||
|
} else if !nativeValue.(bool) && pl.Loaded {
|
||||||
|
_, err := pl.Call("deinit")
|
||||||
|
if err != nil && err != config.ErrNoSuchFunction {
|
||||||
|
screen.TermMessage(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if local {
|
for _, b := range buffer.OpenBuffers {
|
||||||
MainTab().CurPane().Buf.SetOptionNative(option, nativeValue)
|
b.SetOptionNative(option, nativeValue)
|
||||||
} else {
|
|
||||||
for _, b := range buffer.OpenBuffers {
|
|
||||||
b.SetOptionNative(option, nativeValue)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return config.WriteSettings(filepath.Join(config.ConfigDir, "settings.json"))
|
return config.WriteSettings(filepath.Join(config.ConfigDir, "settings.json"))
|
||||||
|
|
Loading…
Reference in a new issue