This commit is contained in:
Johannes Rieken
2018-04-04 10:15:18 +02:00
parent b393ca69ac
commit 6caf60fa70
2 changed files with 31 additions and 11 deletions
+15 -9
View File
@@ -66,18 +66,24 @@ export class LRUMemory extends Memory {
// in order of completions, select the first
// that has been used in the past
let { word } = model.getWordUntilPosition(pos);
if (word.length !== 0) {
return 0;
}
let lineSuffix = model.getLineContent(pos.lineNumber).substr(pos.column - 10, pos.column - 1);
if (/\s$/.test(lineSuffix)) {
return 0;
}
let res = 0;
let seq = -1;
if (word.length === 0) {
for (let i = 0; i < items.length; i++) {
const { suggestion } = items[i];
const key = `${model.getLanguageIdentifier().language}/${suggestion.label}`;
const item = this._cache.get(key);
if (item && item.touch > seq && item.type === suggestion.type && item.insertText === suggestion.insertText) {
seq = item.touch;
res = i;
}
for (let i = 0; i < items.length; i++) {
const { suggestion } = items[i];
const key = `${model.getLanguageIdentifier().language}/${suggestion.label}`;
const item = this._cache.get(key);
if (item && item.touch > seq && item.type === suggestion.type && item.insertText === suggestion.insertText) {
seq = item.touch;
res = i;
}
}
return res;
@@ -21,7 +21,7 @@ suite('SuggestMemories', function () {
setup(function () {
pos = { lineNumber: 1, column: 1 };
buffer = TextModel.createFromString('This is some text');
buffer = TextModel.createFromString('This is some text.\nthis.\nfoo: ,');
items = [
createSuggestItem('foo', 0),
createSuggestItem('bar', 0)
@@ -39,7 +39,9 @@ suite('SuggestMemories', function () {
mem.memorize(buffer, pos, null);
});
test('ShyMemories', function () {
test('LRUMemory', function () {
pos = { lineNumber: 2, column: 6 };
const mem = new LRUMemory();
mem.memorize(buffer, pos, items[1]);
@@ -59,7 +61,19 @@ suite('SuggestMemories', function () {
createSuggestItem('new1', 0),
createSuggestItem('new2', 0)
]), 0);
});
test('intellisense is not showing top options first #43429', function () {
// ensure we don't memorize for whitespace prefixes
pos = { lineNumber: 2, column: 6 };
const mem = new LRUMemory();
mem.memorize(buffer, pos, items[1]);
assert.equal(mem.select(buffer, pos, items), 1);
assert.equal(mem.select(buffer, { lineNumber: 3, column: 5 }, items), 0); // foo: |,
assert.equal(mem.select(buffer, { lineNumber: 3, column: 6 }, items), 1); // foo: ,|
});
test('PrefixMemory', function () {