From dba8ef2fdd2e1846a40594dcfce287f3577044ac Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Sun, 2 Feb 2020 14:35:30 -0500 Subject: [PATCH] Use namespaces for plugin options --- cmd/micro/initlua.go | 4 ++-- internal/config/settings.go | 12 +++++++++--- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/cmd/micro/initlua.go b/cmd/micro/initlua.go index 3d70880b..08c808c2 100644 --- a/cmd/micro/initlua.go +++ b/cmd/micro/initlua.go @@ -78,8 +78,8 @@ func luaImportMicroConfig() *lua.LTable { ulua.L.SetField(pkg, "RTSyntax", luar.New(ulua.L, config.RTSyntax)) ulua.L.SetField(pkg, "RTHelp", luar.New(ulua.L, config.RTHelp)) ulua.L.SetField(pkg, "RTPlugin", luar.New(ulua.L, config.RTPlugin)) - ulua.L.SetField(pkg, "RegisterCommonOption", luar.New(ulua.L, config.RegisterCommonOption)) - ulua.L.SetField(pkg, "RegisterGlobalOption", luar.New(ulua.L, config.RegisterGlobalOption)) + ulua.L.SetField(pkg, "RegisterCommonOption", luar.New(ulua.L, config.RegisterCommonOptionPlug)) + ulua.L.SetField(pkg, "RegisterGlobalOption", luar.New(ulua.L, config.RegisterGlobalOptionPlug)) ulua.L.SetField(pkg, "GetGlobalOption", luar.New(ulua.L, config.GetGlobalOption)) ulua.L.SetField(pkg, "SetGlobalOption", luar.New(ulua.L, action.SetGlobalOption)) ulua.L.SetField(pkg, "SetGlobalOptionNative", luar.New(ulua.L, action.SetGlobalOptionNative)) diff --git a/internal/config/settings.go b/internal/config/settings.go index 63fc3b58..76f11771 100644 --- a/internal/config/settings.go +++ b/internal/config/settings.go @@ -119,8 +119,9 @@ func WriteSettings(filename string) error { return err } -// RegisterCommonOption creates a new option. This is meant to be called by plugins to add options. -func RegisterCommonOption(name string, defaultvalue interface{}) error { +// RegisterCommonOptionPlug creates a new option (called pl.name). This is meant to be called by plugins to add options. +func RegisterCommonOptionPlug(pl string, name string, defaultvalue interface{}) error { + name = pl + "." + name if v, ok := GlobalSettings[name]; !ok { defaultCommonSettings[name] = defaultvalue GlobalSettings[name] = defaultvalue @@ -134,6 +135,12 @@ func RegisterCommonOption(name string, defaultvalue interface{}) error { return nil } +// RegisterGlobalOptionPlug creates a new global-only option (named pl.name) +func RegisterGlobalOptionPlug(pl string, name string, defaultvalue interface{}) error { + return RegisterGlobalOption(pl+"."+name, defaultvalue) +} + +// RegisterGlobalOption creates a new global-only option func RegisterGlobalOption(name string, defaultvalue interface{}) error { if v, ok := GlobalSettings[name]; !ok { defaultGlobalSettings[name] = defaultvalue @@ -229,7 +236,6 @@ var defaultGlobalSettings = map[string]interface{}{ // a list of settings that should never be globally modified var LocalSettings = []string{ - "fileformat", "filetype", "readonly", }