4 "github.com/zyedidia/micro/v2/internal/config"
5 "github.com/zyedidia/micro/v2/internal/screen"
8 func (b *Buffer) SetOptionNative(option string, nativeValue interface{}) error {
9 b.Settings[option] = nativeValue
11 if option == "fastdirty" {
12 if !nativeValue.(bool) {
14 e := calcHash(b, &b.origHash)
15 if e == ErrFileTooLarge {
16 b.Settings["fastdirty"] = false
20 } else if option == "statusline" {
22 } else if option == "filetype" {
24 } else if option == "fileformat" {
25 switch b.Settings["fileformat"].(string) {
32 } else if option == "syntax" {
33 if !nativeValue.(bool) {
38 } else if option == "encoding" {
40 } else if option == "readonly" && b.Type.Kind == BTDefault.Kind {
41 b.Type.Readonly = nativeValue.(bool)
42 } else if option == "hlsearch" {
43 for _, buf := range OpenBuffers {
44 if b.SharedBuffer == buf.SharedBuffer {
45 buf.HighlightSearch = nativeValue.(bool)
50 if b.OptionCallback != nil {
51 b.OptionCallback(option, nativeValue)
57 // SetOption sets a given option to a value just for this buffer
58 func (b *Buffer) SetOption(option, value string) error {
59 if _, ok := b.Settings[option]; !ok {
60 return config.ErrInvalidOption
63 nativeValue, err := config.GetNativeValue(option, b.Settings[option], value)
68 return b.SetOptionNative(option, nativeValue)