in internal/langserver/handlers/tfschema/candidates.go [63:109]
func typeCandidates(prefix *string, r lsp.Range) []lsp.CompletionItem {
candidates := make([]lsp.CompletionItem, 0)
if prefix == nil || !strings.Contains(*prefix, "@") {
for resourceType := range azure.GetAzureSchema().Resources {
candidates = append(candidates, lsp.CompletionItem{
Label: fmt.Sprintf(`"%s"`, resourceType),
Kind: lsp.ValueCompletion,
Documentation: lsp.MarkupContent{
Kind: "markdown",
Value: fmt.Sprintf("Type: `%s` \n", resourceType),
},
SortText: resourceType,
InsertTextFormat: lsp.SnippetTextFormat,
InsertTextMode: lsp.AdjustIndentation,
TextEdit: &lsp.TextEdit{
Range: r,
NewText: fmt.Sprintf(`"%s@$0"`, resourceType),
},
Command: constTriggerSuggestCommand(),
})
}
} else {
resourceType := (*prefix)[0:strings.Index(*prefix, "@")]
apiVersions := azure.GetApiVersions(resourceType)
sort.Strings(apiVersions)
length := len(apiVersions)
for index, apiVersion := range apiVersions {
candidates = append(candidates, lsp.CompletionItem{
Label: fmt.Sprintf(`"%s@%s"`, resourceType, apiVersion),
Kind: lsp.ValueCompletion,
Documentation: lsp.MarkupContent{
Kind: "markdown",
Value: fmt.Sprintf("Type: `%s` \nAPI Version: `%s`", resourceType, apiVersion),
},
SortText: fmt.Sprintf("%04d", length-index),
InsertTextFormat: lsp.PlainTextTextFormat,
InsertTextMode: lsp.AdjustIndentation,
TextEdit: &lsp.TextEdit{
Range: r,
NewText: fmt.Sprintf(`"%s@%s"`, resourceType, apiVersion),
},
})
}
}
return candidates
}