@@ -16,10 +16,14 @@ import * as typeConverters from '../utils/typeConverters';
1616import TypingsStatus from '../utils/typingsStatus' ;
1717import FileConfigurationManager from './fileConfigurationManager' ;
1818
19+ const localize = nls . loadMessageBundle ( ) ;
1920
2021
21-
22- const localize = nls . loadMessageBundle ( ) ;
22+ interface CommitCharactersSettings {
23+ readonly enable : boolean ;
24+ readonly enableDotCompletions : boolean ;
25+ readonly enableCallCompletions : boolean ;
26+ }
2327
2428class MyCompletionItem extends vscode . CompletionItem {
2529 public readonly useCodeSnippet : boolean ;
@@ -29,8 +33,8 @@ class MyCompletionItem extends vscode.CompletionItem {
2933 public readonly document : vscode . TextDocument ,
3034 line : string ,
3135 public readonly tsEntry : Proto . CompletionEntry ,
32- enableDotCompletions : boolean ,
33- useCodeSnippetsOnMethodSuggest : boolean
36+ useCodeSnippetsOnMethodSuggest : boolean ,
37+ commitCharactersSettings : CommitCharactersSettings
3438 ) {
3539 super ( tsEntry . name ) ;
3640
@@ -49,7 +53,7 @@ class MyCompletionItem extends vscode.CompletionItem {
4953
5054 this . kind = MyCompletionItem . convertKind ( tsEntry . kind ) ;
5155 this . position = position ;
52- this . commitCharacters = MyCompletionItem . getCommitCharacters ( enableDotCompletions , ! useCodeSnippetsOnMethodSuggest , tsEntry . kind ) ;
56+ this . commitCharacters = MyCompletionItem . getCommitCharacters ( commitCharactersSettings , tsEntry . kind ) ;
5357 this . useCodeSnippet = useCodeSnippetsOnMethodSuggest && ( this . kind === vscode . CompletionItemKind . Function || this . kind === vscode . CompletionItemKind . Method ) ;
5458 if ( tsEntry . replacementSpan ) {
5559 this . range = typeConverters . Range . fromTextSpan ( tsEntry . replacementSpan ) ;
@@ -144,8 +148,7 @@ class MyCompletionItem extends vscode.CompletionItem {
144148 }
145149
146150 private static getCommitCharacters (
147- enableDotCompletions : boolean ,
148- enableCallCompletions : boolean ,
151+ settings : CommitCharactersSettings ,
149152 kind : string
150153 ) : string [ ] | undefined {
151154 const commitCharacters : string [ ] = [ ] ;
@@ -157,7 +160,7 @@ class MyCompletionItem extends vscode.CompletionItem {
157160 case PConst . Kind . indexSignature :
158161 case PConst . Kind . enum :
159162 case PConst . Kind . interface :
160- if ( enableDotCompletions ) {
163+ if ( settings . enableDotCompletions ) {
161164 commitCharacters . push ( '.' ) ;
162165 }
163166 break ;
@@ -172,10 +175,10 @@ class MyCompletionItem extends vscode.CompletionItem {
172175 case PConst . Kind . class :
173176 case PConst . Kind . function :
174177 case PConst . Kind . memberFunction :
175- if ( enableDotCompletions ) {
178+ if ( settings . enableDotCompletions ) {
176179 commitCharacters . push ( '.' , ',' ) ;
177180 }
178- if ( enableCallCompletions ) {
181+ if ( settings . enableCallCompletions ) {
179182 commitCharacters . push ( '(' ) ;
180183 }
181184 break ;
@@ -306,13 +309,16 @@ class TypeScriptCompletionItemProvider implements vscode.CompletionItemProvider
306309 triggerCharacter : context . triggerCharacter as Proto . CompletionsTriggerCharacter
307310 } ;
308311
312+
313+ let enableCommitCharacters = true ;
309314 let msg : ReadonlyArray < Proto . CompletionEntry > | undefined = undefined ;
310315 try {
311316 if ( this . client . apiVersion . gte ( API . v300 ) ) {
312317 const { body } = await this . client . execute ( 'completionInfo' , args , token ) ;
313- if ( ! body || body . isNewIdentifierLocation ) {
318+ if ( ! body ) {
314319 return null ;
315320 }
321+ enableCommitCharacters = ! body . isNewIdentifierLocation ;
316322 msg = body . entries ;
317323 } else {
318324 const { body } = await this . client . execute ( 'completions' , args , token ) ;
@@ -328,7 +334,11 @@ class TypeScriptCompletionItemProvider implements vscode.CompletionItemProvider
328334 const enableDotCompletions = this . shouldEnableDotCompletions ( document , position ) ;
329335 return msg
330336 . filter ( entry => ! shouldExcludeCompletionEntry ( entry , completionConfiguration ) )
331- . map ( entry => new MyCompletionItem ( position , document , line . text , entry , enableDotCompletions , completionConfiguration . useCodeSnippetsOnMethodSuggest ) ) ;
337+ . map ( entry => new MyCompletionItem ( position , document , line . text , entry , completionConfiguration . useCodeSnippetsOnMethodSuggest , {
338+ enable : enableCommitCharacters ,
339+ enableDotCompletions,
340+ enableCallCompletions : ! completionConfiguration . useCodeSnippetsOnMethodSuggest
341+ } ) ) ;
332342 }
333343
334344 public async resolveCompletionItem (
0 commit comments