Skip to content

Commit 28cbdee

Browse files
committed
Merge branch 'master' into handle-unsaved-files
2 parents 930b280 + 7e8bc50 commit 28cbdee

File tree

6 files changed

+107
-67
lines changed

6 files changed

+107
-67
lines changed

packages/language-service/lib/features/provideCodeActions.ts

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -79,15 +79,20 @@ export function register(context: LanguageServiceContext) {
7979
}, token);
8080

8181
codeActions?.forEach(codeAction => {
82-
codeAction.data = {
83-
uri: uri.toString(),
84-
version: document.version,
85-
original: {
86-
data: codeAction.data,
87-
edit: codeAction.edit,
88-
},
89-
pluginIndex: context.plugins.indexOf(plugin),
90-
} satisfies ServiceCodeActionData;
82+
if (plugin[1].resolveCodeAction) {
83+
codeAction.data = {
84+
uri: uri.toString(),
85+
version: document.version,
86+
original: {
87+
data: codeAction.data,
88+
edit: codeAction.edit,
89+
},
90+
pluginIndex: context.plugins.indexOf(plugin),
91+
} satisfies ServiceCodeActionData;
92+
}
93+
else {
94+
delete codeAction.data;
95+
}
9196
});
9297

9398
if (codeActions && plugin[1].transformCodeAction) {

packages/language-service/lib/features/provideCodeLenses.ts

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -37,14 +37,19 @@ export function register(context: LanguageServiceContext) {
3737
const pluginIndex = context.plugins.indexOf(plugin);
3838

3939
codeLens?.forEach(codeLens => {
40-
codeLens.data = {
41-
kind: 'normal',
42-
uri: uri.toString(),
43-
original: {
44-
data: codeLens.data,
45-
},
46-
pluginIndex,
47-
} satisfies ServiceCodeLensData;
40+
if (plugin[1].resolveCodeLens) {
41+
codeLens.data = {
42+
kind: 'normal',
43+
uri: uri.toString(),
44+
original: {
45+
data: codeLens.data,
46+
},
47+
pluginIndex,
48+
} satisfies ServiceCodeLensData;
49+
}
50+
else {
51+
delete codeLens.data;
52+
}
4853
});
4954

5055
const ranges = await plugin[1].provideReferencesCodeLensRanges?.(document, token);

packages/language-service/lib/features/provideCompletionItems.ts

Lines changed: 45 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -94,16 +94,21 @@ export function register(context: LanguageServiceContext) {
9494
}
9595

9696
for (const item of cacheData.list.items) {
97-
item.data = {
98-
uri: uri.toString(),
99-
original: {
100-
additionalTextEdits: item.additionalTextEdits,
101-
textEdit: item.textEdit,
102-
data: item.data,
103-
},
104-
pluginIndex: pluginIndex,
105-
embeddedDocumentUri: embeddedDocument.uri,
106-
} satisfies ServiceCompletionData;
97+
if (cacheData.plugin.resolveCompletionItem) {
98+
item.data = {
99+
uri: uri.toString(),
100+
original: {
101+
additionalTextEdits: item.additionalTextEdits,
102+
textEdit: item.textEdit,
103+
data: item.data,
104+
},
105+
pluginIndex: pluginIndex,
106+
embeddedDocumentUri: embeddedDocument.uri,
107+
} satisfies ServiceCompletionData;
108+
}
109+
else {
110+
delete item.data;
111+
}
107112
}
108113

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

131136
for (const item of cacheData.list.items) {
132-
item.data = {
133-
uri: uri.toString(),
134-
original: {
135-
additionalTextEdits: item.additionalTextEdits,
136-
textEdit: item.textEdit,
137-
data: item.data,
138-
},
139-
pluginIndex: pluginIndex,
140-
embeddedDocumentUri: undefined,
141-
} satisfies ServiceCompletionData;
137+
if (cacheData.plugin.resolveCompletionItem) {
138+
item.data = {
139+
uri: uri.toString(),
140+
original: {
141+
additionalTextEdits: item.additionalTextEdits,
142+
textEdit: item.textEdit,
143+
data: item.data,
144+
},
145+
pluginIndex: pluginIndex,
146+
embeddedDocumentUri: undefined,
147+
} satisfies ServiceCompletionData;
148+
}
149+
else {
150+
delete item.data;
151+
}
142152
}
143153
}
144154
}
@@ -211,16 +221,21 @@ export function register(context: LanguageServiceContext) {
211221
const pluginIndex = context.plugins.indexOf(plugin);
212222

213223
for (const item of completionList.items) {
214-
item.data = {
215-
uri: uri.toString(),
216-
original: {
217-
additionalTextEdits: item.additionalTextEdits,
218-
textEdit: item.textEdit,
219-
data: item.data,
220-
},
221-
pluginIndex,
222-
embeddedDocumentUri: docs ? document.uri : undefined,
223-
} satisfies ServiceCompletionData;
224+
if (plugin[1].resolveCompletionItem) {
225+
item.data = {
226+
uri: uri.toString(),
227+
original: {
228+
additionalTextEdits: item.additionalTextEdits,
229+
textEdit: item.textEdit,
230+
data: item.data,
231+
},
232+
pluginIndex,
233+
embeddedDocumentUri: docs ? document.uri : undefined,
234+
} satisfies ServiceCompletionData;
235+
}
236+
else {
237+
delete item.data;
238+
}
224239
}
225240

226241
if (docs) {

packages/language-service/lib/features/provideDocumentLinks.ts

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -29,13 +29,18 @@ export function register(context: LanguageServiceContext) {
2929
const links = await plugin[1].provideDocumentLinks?.(document, token);
3030

3131
for (const link of links ?? []) {
32-
link.data = {
33-
uri: uri.toString(),
34-
original: {
35-
data: link.data,
36-
},
37-
pluginIndex: context.plugins.indexOf(plugin),
38-
} satisfies DocumentLinkData;
32+
if (plugin[1].resolveDocumentLink) {
33+
link.data = {
34+
uri: uri.toString(),
35+
original: {
36+
data: link.data,
37+
},
38+
pluginIndex: context.plugins.indexOf(plugin),
39+
} satisfies DocumentLinkData;
40+
}
41+
else {
42+
delete link.data;
43+
}
3944
}
4045

4146
return links;

packages/language-service/lib/features/provideInlayHints.ts

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -45,13 +45,18 @@ export function register(context: LanguageServiceContext) {
4545
}
4646
const hints = await plugin[1].provideInlayHints?.(document, arg, token);
4747
hints?.forEach(link => {
48-
link.data = {
49-
uri: uri.toString(),
50-
original: {
51-
data: link.data,
52-
},
53-
pluginIndex: context.plugins.indexOf(plugin),
54-
} satisfies InlayHintData;
48+
if (plugin[1].resolveInlayHint) {
49+
link.data = {
50+
uri: uri.toString(),
51+
original: {
52+
data: link.data,
53+
},
54+
pluginIndex: context.plugins.indexOf(plugin),
55+
} satisfies InlayHintData;
56+
}
57+
else {
58+
delete link.data;
59+
}
5560
});
5661

5762
return hints;

packages/language-service/lib/features/provideWorkspaceSymbols.ts

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -59,12 +59,17 @@ export function register(context: LanguageServiceContext) {
5959
.filter(symbol => !!symbol);
6060

6161
symbols?.forEach(symbol => {
62-
symbol.data = {
63-
original: {
64-
data: symbol.data,
65-
},
66-
pluginIndex: context.plugins.indexOf(plugin),
67-
} satisfies WorkspaceSymbolData;
62+
if (plugin[1].resolveWorkspaceSymbol) {
63+
symbol.data = {
64+
original: {
65+
data: symbol.data,
66+
},
67+
pluginIndex: context.plugins.indexOf(plugin),
68+
} satisfies WorkspaceSymbolData;
69+
}
70+
else {
71+
delete symbol.data;
72+
}
6873
});
6974

7075
symbolsList.push(symbols);

0 commit comments

Comments
 (0)