Skip to content

Commit c599f2b

Browse files
committed
feat: completed provideSignatureHelp
1 parent 2035fc4 commit c599f2b

File tree

2 files changed

+33
-23
lines changed

2 files changed

+33
-23
lines changed

src/monaco/code2monaco.ts

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,3 +151,27 @@ export function asLocation(definition: vscode.LocationLink): monaco.languages.Lo
151151
export function asUri(uri: vscode.URI): monaco.Uri {
152152
return monaco.Uri.parse(uri);
153153
}
154+
155+
export function asSignatureHelp(signatureHelp: vscode.SignatureHelp): monaco.languages.SignatureHelp {
156+
return {
157+
signatures: signatureHelp.signatures.map(asSignatureInformation),
158+
activeSignature: signatureHelp.activeSignature ?? 0,
159+
activeParameter: signatureHelp.activeParameter ?? 0,
160+
};
161+
}
162+
163+
export function asSignatureInformation(signatureInformation: vscode.SignatureInformation): monaco.languages.SignatureInformation {
164+
return {
165+
label: signatureInformation.label,
166+
documentation: signatureInformation.documentation,
167+
parameters: signatureInformation.parameters ? signatureInformation.parameters.map(asParameterInformation) : [],
168+
activeParameter: signatureInformation.activeParameter,
169+
};
170+
}
171+
172+
export function asParameterInformation(parameterInformation: vscode.ParameterInformation): monaco.languages.ParameterInformation {
173+
return {
174+
label: parameterInformation.label,
175+
documentation: parameterInformation.documentation,
176+
};
177+
}

src/monaco/ls.ts

Lines changed: 9 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -248,30 +248,16 @@ export async function setupLs(modelsMap: Ref<Map<string, monaco.editor.ITextMode
248248
monaco.languages.registerSignatureHelpProvider(lang, {
249249
signatureHelpTriggerCharacters: ['(', ','],
250250
provideSignatureHelp: async (model, position) => {
251-
const result = await ls.getSignatureHelp(model.uri.toString(), {
252-
line: position.lineNumber - 1,
253-
character: position.column - 1,
254-
});
255-
if (!result) {
256-
return undefined;
251+
const codeResult = await ls.getSignatureHelp(
252+
model.uri.toString(),
253+
monaco2code.asPosition(position),
254+
);
255+
if (codeResult) {
256+
return {
257+
value: code2monaco.asSignatureHelp(codeResult),
258+
dispose: () => { },
259+
};
257260
}
258-
259-
return {
260-
value: {
261-
signatures: result.signatures.map((x) => ({
262-
label: x.label,
263-
documentation: x.documentation,
264-
parameters:
265-
x.parameters?.map((y) => ({
266-
label: y.label,
267-
documentation: y.documentation,
268-
})) ?? [],
269-
})),
270-
activeSignature: result.activeSignature!,
271-
activeParameter: result.activeParameter!,
272-
},
273-
dispose: () => { },
274-
};
275261
},
276262
}),
277263
);

0 commit comments

Comments
 (0)