Skip to content

Commit 70f2438

Browse files
committed
fix(completion): use upstream go-jsonnet Formatter
1 parent 948a231 commit 70f2438

File tree

1 file changed

+20
-13
lines changed

1 file changed

+20
-13
lines changed

pkg/server/completion.go

Lines changed: 20 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88

99
"github.com/google/go-jsonnet"
1010
"github.com/google/go-jsonnet/ast"
11+
"github.com/google/go-jsonnet/formatter"
1112
"github.com/grafana/jsonnet-language-server/pkg/ast/processing"
1213
"github.com/grafana/jsonnet-language-server/pkg/nodestack"
1314
position "github.com/grafana/jsonnet-language-server/pkg/position_conversion"
@@ -163,29 +164,35 @@ func createCompletionItemsFromRanges(ranges []processing.ObjectRange, completion
163164
return items
164165
}
165166

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+
166176
func createCompletionItem(label, prefix string, kind protocol.CompletionItemKind, body ast.Node, position protocol.Position) protocol.CompletionItem {
167177
mustNotQuoteLabel := IsValidIdentifier(label)
168178

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 := ""
179180
if asFunc, ok := body.(*ast.Function); ok {
180181
kind = protocol.FunctionCompletion
181182
params := []string{}
182183
for _, param := range asFunc.Parameters {
183184
params = append(params, string(param.Name))
184185
}
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 = "."
188194
}
195+
detail := prefix + concat + insertText
189196

190197
item := protocol.CompletionItem{
191198
Label: label,

0 commit comments

Comments
 (0)