Skip to content

Commit b179dee

Browse files
committed
Only use isNewIdentifierLocation to disable commit characers instead of all suggestions
Fixes microsoft#54267
1 parent b64ff63 commit b179dee

1 file changed

Lines changed: 22 additions & 12 deletions

File tree

extensions/typescript-language-features/src/features/completions.ts

Lines changed: 22 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,14 @@ import * as typeConverters from '../utils/typeConverters';
1616
import TypingsStatus from '../utils/typingsStatus';
1717
import 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

2428
class 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

Comments
 (0)