Have go plugin create its own options

This commit is contained in:
Zachary Yedidia 2016-04-30 12:13:21 -04:00
parent 05e2886dca
commit 908bcb22ae
4 changed files with 27 additions and 18 deletions

View file

@ -195,7 +195,6 @@ func main() {
LoadSyntaxFiles()
// Load the help files
LoadHelp()
LoadPlugins()
buf := NewBuffer(string(input), filename)
@ -219,6 +218,10 @@ func main() {
L.SetGlobal("view", luar.New(L, view))
L.SetGlobal("settings", luar.New(L, &settings))
L.SetGlobal("messenger", luar.New(L, messenger))
L.SetGlobal("GetOption", luar.New(L, GetOption))
L.SetGlobal("AddOption", luar.New(L, AddOption))
LoadPlugins()
for {
// Display everything

View file

@ -55,6 +55,20 @@ func WriteSettings(filename string) error {
return err
}
// AddOption creates a new option. This is meant to be called by plugins to add options.
func AddOption(name string, value interface{}) {
settings[name] = value
err := WriteSettings(configDir + "/settings.json")
if err != nil {
TermMessage("Error writing settings.json file: " + err.Error())
}
}
// GetOption returns the specified option. This is meant to be called by plugins to add options.
func GetOption(name string) interface{} {
return settings[name]
}
// DefaultSettings returns the default settings for micro
func DefaultSettings() map[string]interface{} {
return map[string]interface{}{
@ -64,8 +78,6 @@ func DefaultSettings() map[string]interface{} {
"syntax": true,
"tabsToSpaces": false,
"ruler": true,
"gofmt": false,
"goimports": false,
}
}

View file

@ -195,20 +195,7 @@ Here are the options that you can set:
default value: `on`
* `gofmt`: Run `gofmt` whenever the file is saved (this only applies to `.go`
files)
default value: `off`
* `goimports`: run `goimports` whenever the file is saved (this only applies
to `.go` files)
default value: `off`
Any option you set in the editor will be saved to the file
~/.config/micro/settings.json so, in effect, your configuration file will be
created for you. If you'd like to take your configuration with you to another
machine, simply copy the settings.json to the other machine.
In the future, the `gofmt` and `goimports` will be refactored using a plugin
system. However, currently they make it easier to program micro in micro.

View file

@ -1,8 +1,15 @@
if GetOption("goimports") == nil then
AddOption("goimports", false)
end
if GetOption("gofmt") == nil then
AddOption("gofmt", true)
end
function go_onSave()
if view.Buf.Filetype == "Go" then
if settings.GoImports then
if GetOption("goimports") then
go_goimports()
elseif settings.GoFmt then
elseif GetOption("gofmt") then
go_gofmt()
end
go_build()