integrate with d2lsp completions

This commit is contained in:
Alexander Wang 2024-12-29 09:50:10 -07:00
parent 8d9bf98e59
commit 9e20ed816d
No known key found for this signature in database
GPG key ID: BE3937D0D52D8927
2 changed files with 35 additions and 0 deletions

View file

@ -159,3 +159,37 @@ func Decode(args []js.Value) (interface{}, error) {
func GetVersion(args []js.Value) (interface{}, error) {
return version.Version, nil
}
func GetCompletions(args []js.Value) (interface{}, error) {
if len(args) < 3 {
return nil, &WASMError{Message: "missing required arguments", Code: 400}
}
text := args[0].String()
line := args[1].Int()
column := args[2].Int()
completions, err := d2lsp.GetCompletionItems(text, line, column)
if err != nil {
return nil, &WASMError{Message: err.Error(), Code: 500}
}
// Convert to map for JSON serialization
items := make([]map[string]interface{}, len(completions))
for i, completion := range completions {
items[i] = map[string]interface{}{
"label": completion.Label,
"kind": int(completion.Kind),
"detail": completion.Detail,
"insertText": completion.InsertText,
}
}
return CompletionResponse{
Items: items,
}, nil
}
type CompletionResponse struct {
Items []map[string]interface{} `json:"items"`
}

View file

@ -11,6 +11,7 @@ import (
func main() {
api := d2wasm.NewD2API()
api.Register("getCompletions", d2wasm.GetCompletions)
api.Register("getParentID", d2wasm.GetParentID)
api.Register("getObjOrder", d2wasm.GetObjOrder)
api.Register("getRefRanges", d2wasm.GetRefRanges)