Skip to content

Commit ae4a8e3

Browse files
committed
1 parent 6570efc commit ae4a8e3

2 files changed

Lines changed: 44 additions & 1 deletion

File tree

src/vs/editor/contrib/suggest/suggest.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ export class CompletionItem {
9494
this.isInvalid = this.isInvalid
9595
|| Range.spansMultipleLines(completion.range.insert) || Range.spansMultipleLines(completion.range.replace)
9696
|| completion.range.insert.startLineNumber !== position.lineNumber || completion.range.replace.startLineNumber !== position.lineNumber
97-
|| Range.compareRangesUsingStarts(completion.range.insert, completion.range.replace) !== 0;
97+
|| completion.range.insert.startColumn !== completion.range.replace.startColumn;
9898
}
9999

100100
// create the suggestion resolver

src/vs/editor/contrib/suggest/test/suggest.test.ts

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,4 +106,47 @@ suite('Suggest', function () {
106106
assert.ok(items[0].provider === foo);
107107
});
108108
});
109+
110+
test('Ctrl+space completions stopped working with the latest Insiders, #97650', async function () {
111+
112+
113+
const foo = new class implements CompletionItemProvider {
114+
115+
triggerCharacters = [];
116+
117+
provideCompletionItems() {
118+
return {
119+
suggestions: [{
120+
label: 'one',
121+
kind: CompletionItemKind.Class,
122+
insertText: 'one',
123+
range: {
124+
insert: new Range(0, 0, 0, 0),
125+
replace: new Range(0, 0, 0, 10)
126+
}
127+
}, {
128+
label: 'two',
129+
kind: CompletionItemKind.Class,
130+
insertText: 'two',
131+
range: {
132+
insert: new Range(0, 0, 0, 0),
133+
replace: new Range(0, 1, 0, 10)
134+
}
135+
}]
136+
};
137+
}
138+
};
139+
140+
const registration = CompletionProviderRegistry.register({ pattern: 'bar/path', scheme: 'foo' }, foo);
141+
const items = await provideSuggestionItems(model, new Position(0, 0), new CompletionOptions(undefined, undefined, new Set<CompletionItemProvider>().add(foo)));
142+
registration.dispose();
143+
144+
assert.equal(items.length, 2);
145+
const [a, b] = items;
146+
147+
assert.equal(a.completion.label, 'one');
148+
assert.equal(a.isInvalid, false);
149+
assert.equal(b.completion.label, 'two');
150+
assert.equal(b.isInvalid, true);
151+
});
109152
});

0 commit comments

Comments
 (0)