in tools/goplssetting/goplssetting.go [198:249]
func collectProperties(m map[string][]*OptionJSON) (goplsProperties, goProperties map[string]*Object, err error) {
var sorted []string
var containsEmpty bool
for k := range m {
if k == "" {
containsEmpty = true
continue
}
sorted = append(sorted, k)
}
sort.Strings(sorted)
if containsEmpty {
sorted = append(sorted, "")
}
goplsProperties, goProperties = map[string]*Object{}, map[string]*Object{}
for _, hierarchy := range sorted {
if hierarchy == "ui.inlayhint" {
for _, opt := range m[hierarchy] {
for _, k := range opt.EnumKeys.Keys {
unquotedName, err := strconv.Unquote(k.Name)
if err != nil {
return nil, nil, err
}
key := "go.inlayHints." + unquotedName
goProperties[key] = &Object{
MarkdownDescription: k.Doc,
Type: "boolean",
Default: formatDefault(k.Default, "boolean"),
}
}
}
continue
}
for _, opt := range m[hierarchy] {
obj, err := toObject(opt)
if err != nil {
return nil, nil, err
}
// TODO(hyangah): move diagnostic to all go.diagnostic.
if hierarchy == "ui.diagnostic" && opt.Name == "vulncheck" {
goProperties["go.diagnostic.vulncheck"] = obj
continue
}
key := opt.Name
if hierarchy != "" {
key = hierarchy + "." + key
}
goplsProperties[key] = obj
}
}
return goplsProperties, goProperties, nil
}