diff --git a/internal/action/actions.go b/internal/action/actions.go index 3db9af31..3f0d6ee1 100644 --- a/internal/action/actions.go +++ b/internal/action/actions.go @@ -1278,20 +1278,20 @@ func (h *BufPane) Quit() bool { } } if h.Buf.Modified() { - // if config.GlobalSettings["autosave"].(float64) > 0 { - // autosave on means we automatically save when quitting - // h.Save() - // quit() - // } else { - InfoBar.YNPrompt("Save changes to "+h.Buf.GetName()+" before closing? (y,n,esc)", func(yes, canceled bool) { - if !canceled && !yes { - quit() - } else if !canceled && yes { - h.Save() - quit() - } - }) - // } + if config.GlobalSettings["autosave"].(float64) > 0 { + // autosave on means we automatically save when quitting + h.Save() + quit() + } else { + InfoBar.YNPrompt("Save changes to "+h.Buf.GetName()+" before closing? (y,n,esc)", func(yes, canceled bool) { + if !canceled && !yes { + quit() + } else if !canceled && yes { + h.Save() + quit() + } + }) + } } else { quit() } diff --git a/internal/action/command.go b/internal/action/command.go index 94383bf7..724a8d69 100644 --- a/internal/action/command.go +++ b/internal/action/command.go @@ -442,14 +442,13 @@ func SetGlobalOptionNative(option string, nativeValue interface{}) error { } 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 == "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 { diff --git a/internal/buffer/buffer.go b/internal/buffer/buffer.go index 48b30e04..903aa78e 100644 --- a/internal/buffer/buffer.go +++ b/internal/buffer/buffer.go @@ -6,6 +6,7 @@ import ( "errors" "io" "io/ioutil" + "log" "os" "path/filepath" "strconv" @@ -527,6 +528,7 @@ func (b *Buffer) UpdateRules() { if syntaxFile == "" { // search for the syntax file in the user's custom syntax files for _, f := range config.ListRealRuntimeFiles(config.RTSyntax) { + log.Println("real runtime file", f.Name()) data, err := f.Data() if err != nil { screen.TermMessage("Error loading syntax file " + f.Name() + ": " + err.Error()) @@ -540,7 +542,7 @@ func (b *Buffer) UpdateRules() { continue } - if (ft == "unknown" || ft == "" && highlight.MatchFiletype(header.FtDetect, b.Path, b.lines[0].data)) || header.FileType == ft { + if ((ft == "unknown" || ft == "") && highlight.MatchFiletype(header.FtDetect, b.Path, b.lines[0].data)) || header.FileType == ft { syndef, err := highlight.ParseDef(file, header) if err != nil { screen.TermMessage("Error parsing syntax file " + f.Name() + ": " + err.Error()) diff --git a/internal/config/settings.go b/internal/config/settings.go index f11443fe..e8f37e01 100644 --- a/internal/config/settings.go +++ b/internal/config/settings.go @@ -35,7 +35,7 @@ func init() { // Options with validators var optionValidators = map[string]optionValidator{ - // "autosave": validateNonNegativeValue, + "autosave": validateNonNegativeValue, "tabsize": validatePositiveValue, "scrollmargin": validateNonNegativeValue, "scrollspeed": validateNonNegativeValue, @@ -58,6 +58,18 @@ func ReadSettings() error { if err != nil { return errors.New("Error reading settings.json: " + err.Error()) } + + // check if autosave is a boolean and convert it to float if so + if v, ok := parsedSettings["autosave"]; ok { + s, ok := v.(bool) + if ok { + if s { + parsedSettings["autosave"] = 8.0 + } else { + parsedSettings["autosave"] = 0.0 + } + } + } } } return nil @@ -232,7 +244,7 @@ func DefaultCommonSettings() map[string]interface{} { // a list of settings that should only be globally modified and their // default values var defaultGlobalSettings = map[string]interface{}{ - // "autosave": float64(0), + "autosave": float64(0), "colorscheme": "default", "infobar": true, "keymenu": false,