@@ -32,6 +32,7 @@ export interface SessionOptions {
32
32
logToConsole : boolean ;
33
33
includeAutomaticOptionalChainCompletions : boolean ;
34
34
includeCompletionsWithSnippetText : boolean ;
35
+ includeCompletionsForModuleExports : boolean ;
35
36
forceStrictTemplates : boolean ;
36
37
disableBlockSyntax : boolean ;
37
38
disableLetSyntax : boolean ;
@@ -49,7 +50,7 @@ const EMPTY_RANGE = lsp.Range.create(0, 0, 0, 0);
49
50
const setImmediateP = promisify ( setImmediate ) ;
50
51
51
52
const defaultFormatOptions : ts . FormatCodeSettings = { } ;
52
- const defaultPreferences : ts . UserPreferences = { } ;
53
+ let defaultPreferences : ts . UserPreferences = { } ;
53
54
54
55
const htmlLS = getHTMLLanguageService ( ) ;
55
56
@@ -70,6 +71,7 @@ export class Session {
70
71
private readonly openFiles = new MruTracker ( ) ;
71
72
private readonly includeAutomaticOptionalChainCompletions : boolean ;
72
73
private readonly includeCompletionsWithSnippetText : boolean ;
74
+ private readonly includeCompletionsForModuleExports : boolean ;
73
75
private snippetSupport : boolean | undefined ;
74
76
private diagnosticsTimeout : NodeJS . Timeout | null = null ;
75
77
private isProjectLoading = false ;
@@ -86,8 +88,14 @@ export class Session {
86
88
this . includeAutomaticOptionalChainCompletions =
87
89
options . includeAutomaticOptionalChainCompletions ;
88
90
this . includeCompletionsWithSnippetText = options . includeCompletionsWithSnippetText ;
91
+ this . includeCompletionsForModuleExports = options . includeCompletionsForModuleExports ;
89
92
this . logger = options . logger ;
90
93
this . logToConsole = options . logToConsole ;
94
+ defaultPreferences =
95
+ {
96
+ ...defaultPreferences ,
97
+ includeCompletionsForModuleExports : options . includeCompletionsForModuleExports ,
98
+ }
91
99
// Create a connection for the server. The connection uses Node's IPC as a transport.
92
100
this . connection = lsp . createConnection ( {
93
101
// cancelUndispatched is a "middleware" to handle all cancellation requests.
@@ -150,6 +158,7 @@ export class Session {
150
158
// We don't want the AutoImportProvider projects to be created. See
151
159
// https://devblogs.microsoft.com/typescript/announcing-typescript-4-0/#smarter-auto-imports
152
160
includePackageJsonAutoImports : 'off' ,
161
+ includeCompletionsForModuleExports : this . includeCompletionsForModuleExports ,
153
162
} ,
154
163
watchOptions : {
155
164
// Used as watch options when not specified by user's `tsconfig`.
@@ -1234,12 +1243,14 @@ export class Session {
1234
1243
let options : ts . GetCompletionsAtPositionOptions = { } ;
1235
1244
const includeCompletionsWithSnippetText =
1236
1245
this . includeCompletionsWithSnippetText && this . snippetSupport ;
1237
- if ( this . includeAutomaticOptionalChainCompletions || includeCompletionsWithSnippetText ) {
1246
+ if ( this . includeAutomaticOptionalChainCompletions || includeCompletionsWithSnippetText ||
1247
+ this . includeCompletionsForModuleExports ) {
1238
1248
options = {
1239
1249
includeAutomaticOptionalChainCompletions : this . includeAutomaticOptionalChainCompletions ,
1240
1250
includeCompletionsWithSnippetText : includeCompletionsWithSnippetText ,
1241
1251
includeCompletionsWithInsertText :
1242
1252
this . includeAutomaticOptionalChainCompletions || includeCompletionsWithSnippetText ,
1253
+ includeCompletionsForModuleExports : this . includeCompletionsForModuleExports ,
1243
1254
} ;
1244
1255
}
1245
1256
@@ -1269,8 +1280,8 @@ export class Session {
1269
1280
1270
1281
const offset = lspPositionToTsPosition ( scriptInfo , position ) ;
1271
1282
const details = languageService . getCompletionEntryDetails (
1272
- filePath , offset , item . insertText ?? item . label , undefined , undefined , undefined ,
1273
- undefined ) ;
1283
+ filePath , offset , item . insertText ?? item . label , undefined , undefined , defaultPreferences ,
1284
+ data . tsData ) ;
1274
1285
if ( details === undefined ) {
1275
1286
return item ;
1276
1287
}
0 commit comments