Skip to content

Commit

Permalink
Merge branch 'master' into handle-unsaved-files
Browse files Browse the repository at this point in the history
  • Loading branch information
johnsoncodehk committed Aug 25, 2024
2 parents 930b280 + 7e8bc50 commit 28cbdee
Show file tree
Hide file tree
Showing 6 changed files with 107 additions and 67 deletions.
23 changes: 14 additions & 9 deletions packages/language-service/lib/features/provideCodeActions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -79,15 +79,20 @@ export function register(context: LanguageServiceContext) {
}, token);

codeActions?.forEach(codeAction => {
codeAction.data = {
uri: uri.toString(),
version: document.version,
original: {
data: codeAction.data,
edit: codeAction.edit,
},
pluginIndex: context.plugins.indexOf(plugin),
} satisfies ServiceCodeActionData;
if (plugin[1].resolveCodeAction) {
codeAction.data = {
uri: uri.toString(),
version: document.version,
original: {
data: codeAction.data,
edit: codeAction.edit,
},
pluginIndex: context.plugins.indexOf(plugin),
} satisfies ServiceCodeActionData;
}
else {
delete codeAction.data;
}
});

if (codeActions && plugin[1].transformCodeAction) {
Expand Down
21 changes: 13 additions & 8 deletions packages/language-service/lib/features/provideCodeLenses.ts
Original file line number Diff line number Diff line change
Expand Up @@ -37,14 +37,19 @@ export function register(context: LanguageServiceContext) {
const pluginIndex = context.plugins.indexOf(plugin);

codeLens?.forEach(codeLens => {
codeLens.data = {
kind: 'normal',
uri: uri.toString(),
original: {
data: codeLens.data,
},
pluginIndex,
} satisfies ServiceCodeLensData;
if (plugin[1].resolveCodeLens) {
codeLens.data = {
kind: 'normal',
uri: uri.toString(),
original: {
data: codeLens.data,
},
pluginIndex,
} satisfies ServiceCodeLensData;
}
else {
delete codeLens.data;
}
});

const ranges = await plugin[1].provideReferencesCodeLensRanges?.(document, token);
Expand Down
75 changes: 45 additions & 30 deletions packages/language-service/lib/features/provideCompletionItems.ts
Original file line number Diff line number Diff line change
Expand Up @@ -94,16 +94,21 @@ export function register(context: LanguageServiceContext) {
}

for (const item of cacheData.list.items) {
item.data = {
uri: uri.toString(),
original: {
additionalTextEdits: item.additionalTextEdits,
textEdit: item.textEdit,
data: item.data,
},
pluginIndex: pluginIndex,
embeddedDocumentUri: embeddedDocument.uri,
} satisfies ServiceCompletionData;
if (cacheData.plugin.resolveCompletionItem) {
item.data = {
uri: uri.toString(),
original: {
additionalTextEdits: item.additionalTextEdits,
textEdit: item.textEdit,
data: item.data,
},
pluginIndex: pluginIndex,
embeddedDocumentUri: embeddedDocument.uri,
} satisfies ServiceCompletionData;
}
else {
delete item.data;
}
}

cacheData.list = transformCompletionList(
Expand All @@ -129,16 +134,21 @@ export function register(context: LanguageServiceContext) {
}

for (const item of cacheData.list.items) {
item.data = {
uri: uri.toString(),
original: {
additionalTextEdits: item.additionalTextEdits,
textEdit: item.textEdit,
data: item.data,
},
pluginIndex: pluginIndex,
embeddedDocumentUri: undefined,
} satisfies ServiceCompletionData;
if (cacheData.plugin.resolveCompletionItem) {
item.data = {
uri: uri.toString(),
original: {
additionalTextEdits: item.additionalTextEdits,
textEdit: item.textEdit,
data: item.data,
},
pluginIndex: pluginIndex,
embeddedDocumentUri: undefined,
} satisfies ServiceCompletionData;
}
else {
delete item.data;
}
}
}
}
Expand Down Expand Up @@ -211,16 +221,21 @@ export function register(context: LanguageServiceContext) {
const pluginIndex = context.plugins.indexOf(plugin);

for (const item of completionList.items) {
item.data = {
uri: uri.toString(),
original: {
additionalTextEdits: item.additionalTextEdits,
textEdit: item.textEdit,
data: item.data,
},
pluginIndex,
embeddedDocumentUri: docs ? document.uri : undefined,
} satisfies ServiceCompletionData;
if (plugin[1].resolveCompletionItem) {
item.data = {
uri: uri.toString(),
original: {
additionalTextEdits: item.additionalTextEdits,
textEdit: item.textEdit,
data: item.data,
},
pluginIndex,
embeddedDocumentUri: docs ? document.uri : undefined,
} satisfies ServiceCompletionData;
}
else {
delete item.data;
}
}

if (docs) {
Expand Down
19 changes: 12 additions & 7 deletions packages/language-service/lib/features/provideDocumentLinks.ts
Original file line number Diff line number Diff line change
Expand Up @@ -29,13 +29,18 @@ export function register(context: LanguageServiceContext) {
const links = await plugin[1].provideDocumentLinks?.(document, token);

for (const link of links ?? []) {
link.data = {
uri: uri.toString(),
original: {
data: link.data,
},
pluginIndex: context.plugins.indexOf(plugin),
} satisfies DocumentLinkData;
if (plugin[1].resolveDocumentLink) {
link.data = {
uri: uri.toString(),
original: {
data: link.data,
},
pluginIndex: context.plugins.indexOf(plugin),
} satisfies DocumentLinkData;
}
else {
delete link.data;
}
}

return links;
Expand Down
19 changes: 12 additions & 7 deletions packages/language-service/lib/features/provideInlayHints.ts
Original file line number Diff line number Diff line change
Expand Up @@ -45,13 +45,18 @@ export function register(context: LanguageServiceContext) {
}
const hints = await plugin[1].provideInlayHints?.(document, arg, token);
hints?.forEach(link => {
link.data = {
uri: uri.toString(),
original: {
data: link.data,
},
pluginIndex: context.plugins.indexOf(plugin),
} satisfies InlayHintData;
if (plugin[1].resolveInlayHint) {
link.data = {
uri: uri.toString(),
original: {
data: link.data,
},
pluginIndex: context.plugins.indexOf(plugin),
} satisfies InlayHintData;
}
else {
delete link.data;
}
});

return hints;
Expand Down
17 changes: 11 additions & 6 deletions packages/language-service/lib/features/provideWorkspaceSymbols.ts
Original file line number Diff line number Diff line change
Expand Up @@ -59,12 +59,17 @@ export function register(context: LanguageServiceContext) {
.filter(symbol => !!symbol);

symbols?.forEach(symbol => {
symbol.data = {
original: {
data: symbol.data,
},
pluginIndex: context.plugins.indexOf(plugin),
} satisfies WorkspaceSymbolData;
if (plugin[1].resolveWorkspaceSymbol) {
symbol.data = {
original: {
data: symbol.data,
},
pluginIndex: context.plugins.indexOf(plugin),
} satisfies WorkspaceSymbolData;
}
else {
delete symbol.data;
}
});

symbolsList.push(symbols);
Expand Down

0 comments on commit 28cbdee

Please sign in to comment.