(option string, nativeValue any)
| 572 | } |
| 573 | |
| 574 | func doSetGlobalOptionNative(option string, nativeValue any) error { |
| 575 | if reflect.DeepEqual(config.GlobalSettings[option], nativeValue) { |
| 576 | return nil |
| 577 | } |
| 578 | |
| 579 | config.GlobalSettings[option] = nativeValue |
| 580 | config.ModifiedSettings[option] = true |
| 581 | delete(config.VolatileSettings, option) |
| 582 | |
| 583 | if option == "colorscheme" { |
| 584 | // LoadSyntaxFiles() |
| 585 | config.InitColorscheme() |
| 586 | for _, b := range buffer.OpenBuffers { |
| 587 | b.UpdateRules() |
| 588 | } |
| 589 | } else if option == "infobar" || option == "keymenu" { |
| 590 | Tabs.Resize() |
| 591 | } else if option == "mouse" { |
| 592 | if !nativeValue.(bool) { |
| 593 | screen.Screen.DisableMouse() |
| 594 | } else { |
| 595 | screen.Screen.EnableMouse() |
| 596 | } |
| 597 | } else if option == "autosave" { |
| 598 | if nativeValue.(float64) > 0 { |
| 599 | config.SetAutoTime(nativeValue.(float64)) |
| 600 | } else { |
| 601 | config.SetAutoTime(0) |
| 602 | } |
| 603 | } else if option == "paste" { |
| 604 | screen.Screen.SetPaste(nativeValue.(bool)) |
| 605 | } else if option == "clipboard" { |
| 606 | m := clipboard.SetMethod(nativeValue.(string)) |
| 607 | err := clipboard.Initialize(m) |
| 608 | if err != nil { |
| 609 | return err |
| 610 | } |
| 611 | } else { |
| 612 | for _, pl := range config.Plugins { |
| 613 | if option == pl.Name { |
| 614 | if nativeValue.(bool) && !pl.Loaded { |
| 615 | pl.Load() |
| 616 | _, err := pl.Call("init") |
| 617 | if err != nil && err != config.ErrNoSuchFunction { |
| 618 | screen.TermMessage(err) |
| 619 | } |
| 620 | } else if !nativeValue.(bool) && pl.Loaded { |
| 621 | _, err := pl.Call("deinit") |
| 622 | if err != nil && err != config.ErrNoSuchFunction { |
| 623 | screen.TermMessage(err) |
| 624 | } |
| 625 | } |
| 626 | } |
| 627 | } |
| 628 | } |
| 629 | |
| 630 | return nil |
| 631 | } |
no test coverage detected