@@ -32,6 +32,7 @@ export interface SessionOptions {
3232 logToConsole : boolean ;
3333 includeAutomaticOptionalChainCompletions : boolean ;
3434 includeCompletionsWithSnippetText : boolean ;
35+ includeCompletionsForModuleExports : boolean ;
3536 forceStrictTemplates : boolean ;
3637 disableBlockSyntax : boolean ;
3738 disableLetSyntax : boolean ;
@@ -49,7 +50,7 @@ const EMPTY_RANGE = lsp.Range.create(0, 0, 0, 0);
4950const setImmediateP = promisify ( setImmediate ) ;
5051
5152const defaultFormatOptions : ts . FormatCodeSettings = { } ;
52- const defaultPreferences : ts . UserPreferences = { } ;
53+ let defaultPreferences : ts . UserPreferences = { } ;
5354
5455const htmlLS = getHTMLLanguageService ( ) ;
5556
@@ -70,6 +71,7 @@ export class Session {
7071 private readonly openFiles = new MruTracker ( ) ;
7172 private readonly includeAutomaticOptionalChainCompletions : boolean ;
7273 private readonly includeCompletionsWithSnippetText : boolean ;
74+ private readonly includeCompletionsForModuleExports : boolean ;
7375 private snippetSupport : boolean | undefined ;
7476 private diagnosticsTimeout : NodeJS . Timeout | null = null ;
7577 private isProjectLoading = false ;
@@ -86,8 +88,13 @@ export class Session {
8688 this . includeAutomaticOptionalChainCompletions =
8789 options . includeAutomaticOptionalChainCompletions ;
8890 this . includeCompletionsWithSnippetText = options . includeCompletionsWithSnippetText ;
91+ this . includeCompletionsForModuleExports = options . includeCompletionsForModuleExports ;
8992 this . logger = options . logger ;
9093 this . logToConsole = options . logToConsole ;
94+ defaultPreferences = {
95+ ...defaultPreferences ,
96+ includeCompletionsForModuleExports : options . includeCompletionsForModuleExports ,
97+ } ;
9198 // Create a connection for the server. The connection uses Node's IPC as a transport.
9299 this . connection = lsp . createConnection ( {
93100 // cancelUndispatched is a "middleware" to handle all cancellation requests.
@@ -150,6 +157,7 @@ export class Session {
150157 // We don't want the AutoImportProvider projects to be created. See
151158 // https://devblogs.microsoft.com/typescript/announcing-typescript-4-0/#smarter-auto-imports
152159 includePackageJsonAutoImports : 'off' ,
160+ includeCompletionsForModuleExports : this . includeCompletionsForModuleExports ,
153161 } ,
154162 watchOptions : {
155163 // Used as watch options when not specified by user's `tsconfig`.
@@ -1234,12 +1242,14 @@ export class Session {
12341242 let options : ts . GetCompletionsAtPositionOptions = { } ;
12351243 const includeCompletionsWithSnippetText =
12361244 this . includeCompletionsWithSnippetText && this . snippetSupport ;
1237- if ( this . includeAutomaticOptionalChainCompletions || includeCompletionsWithSnippetText ) {
1245+ if ( this . includeAutomaticOptionalChainCompletions || includeCompletionsWithSnippetText ||
1246+ this . includeCompletionsForModuleExports ) {
12381247 options = {
12391248 includeAutomaticOptionalChainCompletions : this . includeAutomaticOptionalChainCompletions ,
12401249 includeCompletionsWithSnippetText : includeCompletionsWithSnippetText ,
12411250 includeCompletionsWithInsertText :
12421251 this . includeAutomaticOptionalChainCompletions || includeCompletionsWithSnippetText ,
1252+ includeCompletionsForModuleExports : this . includeCompletionsForModuleExports ,
12431253 } ;
12441254 }
12451255
@@ -1269,8 +1279,8 @@ export class Session {
12691279
12701280 const offset = lspPositionToTsPosition ( scriptInfo , position ) ;
12711281 const details = languageService . getCompletionEntryDetails (
1272- filePath , offset , item . insertText ?? item . label , undefined , undefined , undefined ,
1273- undefined ) ;
1282+ filePath , offset , item . insertText ?? item . label , undefined , undefined , defaultPreferences ,
1283+ data . tsData ) ;
12741284 if ( details === undefined ) {
12751285 return item ;
12761286 }
0 commit comments