-
Notifications
You must be signed in to change notification settings - Fork 0
/
hello-json-completion.ts
23 lines (19 loc) · 1011 Bytes
/
hello-json-completion.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import { CompletionAcceptor, CompletionContext, DefaultCompletionProvider, MaybePromise, NextFeature } from "langium";
import { HelloJsonServices } from "./hello-json-module";
export class HelloJsonCompletionProvider extends DefaultCompletionProvider {
constructor(public services: HelloJsonServices) {
super(services);
}
protected override completionFor(context: CompletionContext, next: NextFeature, acceptor: CompletionAcceptor): MaybePromise<void> {
const externalModel = this.services.external.HelloJsonExternalJsonModel;
const ref = externalModel.getReferenceUrlAndFqn(context.node);
if (ref!==undefined && next.feature.$containerProperty==='elements') {
const url = ref.url;
const completionValues = externalModel.getAllData(url);
completionValues.forEach(v=>{
acceptor({detail: v.fqn, kind: 1, label: v.fqn});
})
}
return super.completionFor(context, next, acceptor);
}
}