@@ -378,8 +378,21 @@ async function createProjectService(
378
378
const disposables : Array < Disposable | Promise < Disposable > > = [ ]
379
379
let documentSelector = projectConfig . documentSelector
380
380
381
+ let itemDefaults =
382
+ params . capabilities . textDocument ?. completion ?. completionList ?. itemDefaults ?? [ ]
383
+
384
+ // VS Code _does_ support `itemDefaults.data` since at least 1.67.0 (this extension's min version)
385
+ // but it doesn't advertise it in its capabilities. So we manually add it here.
386
+ // See also: https://github.com/microsoft/vscode-languageserver-node/issues/1181
387
+ if ( params . clientInfo ?. name === 'Visual Studio Code' && ! itemDefaults . includes ( 'data' ) ) {
388
+ itemDefaults . push ( 'data' )
389
+ }
390
+
381
391
let state : State = {
382
392
enabled : false ,
393
+ completionItemData : {
394
+ _projectKey : projectKey ,
395
+ } ,
383
396
editor : {
384
397
connection,
385
398
folder,
@@ -390,6 +403,7 @@ async function createProjectService(
390
403
capabilities : {
391
404
configuration : true ,
392
405
diagnosticRelatedInformation : true ,
406
+ itemDefaults,
393
407
} ,
394
408
documents : documentService . documents ,
395
409
getConfiguration,
@@ -1114,21 +1128,13 @@ async function createProjectService(
1114
1128
let settings = await state . editor . getConfiguration ( document . uri )
1115
1129
if ( ! settings . tailwindCSS . suggestions ) return null
1116
1130
if ( await isExcluded ( state , document ) ) return null
1117
- let result = await doComplete ( state , document , params . position , params . context )
1118
- if ( ! result ) return result
1119
- return {
1120
- isIncomplete : result . isIncomplete ,
1121
- items : result . items . map ( ( item ) => ( {
1122
- ...item ,
1123
- data : { projectKey, originalData : item . data } ,
1124
- } ) ) ,
1125
- }
1131
+ return doComplete ( state , document , params . position , params . context )
1126
1132
} , null )
1127
1133
} ,
1128
1134
onCompletionResolve ( item : CompletionItem ) : Promise < CompletionItem > {
1129
1135
return withFallback ( ( ) => {
1130
1136
if ( ! state . enabled ) return null
1131
- return resolveCompletionItem ( state , { ... item , data : item . data ?. originalData } )
1137
+ return resolveCompletionItem ( state , item )
1132
1138
} , null )
1133
1139
} ,
1134
1140
async onCodeAction ( params : CodeActionParams ) : Promise < CodeAction [ ] > {
@@ -2162,7 +2168,7 @@ class TW {
2162
2168
}
2163
2169
2164
2170
async onCompletionResolve ( item : CompletionItem ) : Promise < CompletionItem > {
2165
- return this . projects . get ( item . data . projectKey ) ?. onCompletionResolve ( item ) ?? null
2171
+ return this . projects . get ( item . data ?. _projectKey ) ?. onCompletionResolve ( item ) ?? null
2166
2172
}
2167
2173
2168
2174
onCodeAction ( params : CodeActionParams ) : Promise < CodeAction [ ] > {
0 commit comments