integrate with d2lsp completions
This commit is contained in:
parent
8d9bf98e59
commit
9e20ed816d
2 changed files with 35 additions and 0 deletions
|
|
@ -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"`
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Reference in a new issue