|
8 | 8 |
|
9 | 9 | "github.com/google/go-jsonnet"
|
10 | 10 | "github.com/google/go-jsonnet/ast"
|
| 11 | + "github.com/google/go-jsonnet/formatter" |
11 | 12 | "github.com/grafana/jsonnet-language-server/pkg/ast/processing"
|
12 | 13 | "github.com/grafana/jsonnet-language-server/pkg/nodestack"
|
13 | 14 | position "github.com/grafana/jsonnet-language-server/pkg/position_conversion"
|
@@ -163,29 +164,35 @@ func createCompletionItemsFromRanges(ranges []processing.ObjectRange, completion
|
163 | 164 | return items
|
164 | 165 | }
|
165 | 166 |
|
| 167 | +func formatLabel(str string) string { |
| 168 | + interStr := "interimPath" + str |
| 169 | + fmtStr, _ := formatter.Format("", interStr, formatter.DefaultOptions()) |
| 170 | + ret, _ := strings.CutPrefix(fmtStr, "interimPath") |
| 171 | + ret, _ = strings.CutPrefix(ret, ".") |
| 172 | + ret = strings.TrimRight(ret, "\n") |
| 173 | + return ret |
| 174 | +} |
| 175 | + |
166 | 176 | func createCompletionItem(label, prefix string, kind protocol.CompletionItemKind, body ast.Node, position protocol.Position) protocol.CompletionItem {
|
167 | 177 | mustNotQuoteLabel := IsValidIdentifier(label)
|
168 | 178 |
|
169 |
| - insertText := label |
170 |
| - detail := label |
171 |
| - if prefix != "" { |
172 |
| - detail = prefix + "." + insertText |
173 |
| - } |
174 |
| - if !mustNotQuoteLabel { |
175 |
| - insertText = "['" + label + "']" |
176 |
| - detail = prefix + insertText |
177 |
| - } |
178 |
| - |
| 179 | + paramsString := "" |
179 | 180 | if asFunc, ok := body.(*ast.Function); ok {
|
180 | 181 | kind = protocol.FunctionCompletion
|
181 | 182 | params := []string{}
|
182 | 183 | for _, param := range asFunc.Parameters {
|
183 | 184 | params = append(params, string(param.Name))
|
184 | 185 | }
|
185 |
| - paramsString := "(" + strings.Join(params, ", ") + ")" |
186 |
| - detail += paramsString |
187 |
| - insertText += paramsString |
| 186 | + paramsString = "(" + strings.Join(params, ", ") + ")" |
| 187 | + } |
| 188 | + |
| 189 | + insertText := formatLabel("['" + label + "']" + paramsString) |
| 190 | + |
| 191 | + concat := "" |
| 192 | + if prefix != "" && !strings.HasPrefix(insertText, "[") { |
| 193 | + concat = "." |
188 | 194 | }
|
| 195 | + detail := prefix + concat + insertText |
189 | 196 |
|
190 | 197 | item := protocol.CompletionItem{
|
191 | 198 | Label: label,
|
|
0 commit comments