diff --git a/internal/config/settings.go b/internal/config/settings.go index b7097087a9..b7eb69bed4 100644 --- a/internal/config/settings.go +++ b/internal/config/settings.go @@ -186,11 +186,17 @@ func validateParsedSettings() error { } } } else { - if _, e := glob.Compile(k); e != nil { - err = errors.New("Error with glob setting " + k + ": " + e.Error()) + tk := strings.TrimPrefix(k, "glob:") + if _, e := glob.Compile(tk); e != nil { + err = errors.New("Error with glob setting " + tk + ": " + e.Error()) delete(parsedSettings, k) continue } + if !strings.HasPrefix(k, "glob:") { + delete(parsedSettings, k) + k = "glob:" + k + parsedSettings[k] = v + } for k1, v1 := range v.(map[string]any) { if _, ok := defaults[k1]; ok { if e := verifySetting(k1, v1, defaults[k1]); e != nil { @@ -309,8 +315,9 @@ func InitGlobalSettings() error { // Must be called after ReadSettings func UpdatePathGlobLocals(settings map[string]any, path string) { for k, v := range parsedSettings { - if strings.HasPrefix(reflect.TypeOf(v).String(), "map") && !strings.HasPrefix(k, "ft:") { - g, _ := glob.Compile(k) + if strings.HasPrefix(reflect.TypeOf(v).String(), "map") && strings.HasPrefix(k, "glob:") { + tk := strings.TrimPrefix(k, "glob:") + g, _ := glob.Compile(tk) if g.MatchString(path) { for k1, v1 := range v.(map[string]any) { settings[k1] = v1 diff --git a/runtime/help/options.md b/runtime/help/options.md index 706881a5e7..a68e35dce6 100644 --- a/runtime/help/options.md +++ b/runtime/help/options.md @@ -671,10 +671,10 @@ Or similarly you can match with globs: ```json { - "*.go": { + "glob:*.go": { "tabstospaces": false }, - "*.rb": { + "glob:*.rb": { "tabsize": 2 }, "tabstospaces": true,