From 3ef6ffdf58a66f74a8903b7479b43195b13aeb69 Mon Sep 17 00:00:00 2001 From: johnsoncodehk Date: Thu, 9 Jun 2022 16:45:28 +0800 Subject: [PATCH] feat: implemented resolveCompletionItem --- src/monaco/ls.ts | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/src/monaco/ls.ts b/src/monaco/ls.ts index a264d044..de31177b 100644 --- a/src/monaco/ls.ts +++ b/src/monaco/ls.ts @@ -191,12 +191,14 @@ export async function setupLs(modelsMap: Ref(); + disposables.value.push( monaco.languages.registerCompletionItemProvider(lang, { // https://github.com/johnsoncodehk/volar/blob/2f786182250d27e99cc3714fbfc7d209616e2289/packages/vue-language-server/src/registers/registerlanguageFeatures.ts#L57 triggerCharacters: '!@#$%^&*()_+-=`~{}|[]\:";\'<>?,./ '.split(''), provideCompletionItems: async (model, position, context) => { - const result = await ls.doComplete( + const codeResult = await ls.doComplete( model.uri.fsPath, { line: position.lineNumber - 1, @@ -207,7 +209,22 @@ export async function setupLs(modelsMap: Ref { + let codeItem = completionItems.get(monacoItem); + if (codeItem) { + codeItem = await ls.doCompletionResolve(codeItem); + monacoItem = code2monaco.asCompletionItem(codeItem); + completionItems.set(monacoItem, codeItem); + } + return monacoItem; }, }), );