From 5fff4d348b98555a0a6d614d0e6940bc644eb2d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6ran=20Karl?= <3951388+JoeKar@users.noreply.github.com> Date: Fri, 22 Mar 2024 18:44:39 +0100 Subject: [PATCH] command: Refactor SetGlobalOptionNative() Co-authored-by: Dmitry Maluka --- internal/action/command.go | 101 ++++++++++++++++++------------------- 1 file changed, 48 insertions(+), 53 deletions(-) diff --git a/internal/action/command.go b/internal/action/command.go index 3fdab3ee0..80ffb8a01 100644 --- a/internal/action/command.go +++ b/internal/action/command.go @@ -473,72 +473,67 @@ func (h *BufPane) NewTabCmd(args []string) { } func SetGlobalOptionNative(option string, nativeValue interface{}) error { - local := false + // check for local option first... for _, s := range config.LocalSettings { if s == option { - local = true - break + MainTab().CurPane().Buf.SetOptionNative(option, nativeValue) + return nil } } - if !local { - config.GlobalSettings[option] = nativeValue - config.ModifiedSettings[option] = true - delete(config.VolatileSettings, option) + // ...if it's not local continue with the globals + config.GlobalSettings[option] = nativeValue + config.ModifiedSettings[option] = true + delete(config.VolatileSettings, option) - 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() - } - } 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 - } + 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 { - 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) - } + 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 { + 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 { - MainTab().CurPane().Buf.SetOptionNative(option, nativeValue) - return nil - } for _, b := range buffer.OpenBuffers { b.SetOptionNative(option, nativeValue) }