}
func SetGlobalOptionNative(option string, nativeValue interface{}) error {
- config.GlobalSettings[option] = nativeValue
-
- if option == "colorscheme" {
- // LoadSyntaxFiles()
- config.InitColorscheme()
- for _, b := range buffer.OpenBuffers {
- b.UpdateRules()
+ local := false
+ for _, s := range config.LocalSettings {
+ if s == option {
+ local = true
+ break
}
- } else if option == "infobar" || option == "keymenu" {
- Tabs.Resize()
- } else if option == "mouse" {
- if !nativeValue.(bool) {
- screen.Screen.DisableMouse()
+ }
+
+ if !local {
+ config.GlobalSettings[option] = nativeValue
+
+ if option == "colorscheme" {
+ // LoadSyntaxFiles()
+ config.InitColorscheme()
+ for _, b := range buffer.OpenBuffers {
+ b.UpdateRules()
+ }
+ } else if option == "infobar" || option == "keymenu" {
+ Tabs.Resize()
+ } else if option == "mouse" {
+ if !nativeValue.(bool) {
+ screen.Screen.DisableMouse()
+ } else {
+ screen.Screen.EnableMouse()
+ }
+ // autosave option has been removed
+ // } 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 {
- screen.Screen.EnableMouse()
- }
- // autosave option has been removed
- // } 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 {
- 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)
+ 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)
+ }
}
}
}
return commonsettings
}
+// a list of settings that should only be globally modified and their
+// default values
var defaultGlobalSettings = map[string]interface{}{
// "autosave": float64(0),
"colorscheme": "default",
"sucmd": "sudo",
}
+// a list of settings that should never be globally modified
+var LocalSettings = []string{
+ "filetype",
+ "readonly",
+}
+
// DefaultGlobalSettings returns the default global settings for micro
// Note that colorscheme is a global only option
func DefaultGlobalSettings() map[string]interface{} {
return allsettings
}
+// GetNativeValue parses and validates a value for a given option
func GetNativeValue(option string, realValue interface{}, value string) (interface{}, error) {
var native interface{}
kind := reflect.TypeOf(realValue).Kind()