diff --git a/assets/js/utils/__tests__/local-autocompleter.spec.ts b/assets/js/utils/__tests__/local-autocompleter.spec.ts index 3bca08b88..f1ae05cd0 100644 --- a/assets/js/utils/__tests__/local-autocompleter.spec.ts +++ b/assets/js/utils/__tests__/local-autocompleter.spec.ts @@ -87,6 +87,14 @@ describe('LocalAutocompleter', () => { `); }); + it('should return a suggestion at the start of the index', () => { + expectLocalAutocomplete('artist').toMatchInlineSnapshot(` + [ + "{artist}:test (1)", + ] + `); + }); + it('should return suggestion for an alias', () => { expectLocalAutocomplete('flowers').toMatchInlineSnapshot(` [ diff --git a/assets/js/utils/local-autocompleter.ts b/assets/js/utils/local-autocompleter.ts index 5dd598d93..dbb89c995 100644 --- a/assets/js/utils/local-autocompleter.ts +++ b/assets/js/utils/local-autocompleter.ts @@ -207,7 +207,7 @@ export class LocalAutocompleter { return strcmp(mapName(this.referenceToName(index, false)).slice(0, prefix.length), prefix); }; - while (min < max - 1) { + while (min < max) { const med = min + (((max - min) / 2) | 0); const referenceIndex = mapIndex(med); @@ -216,13 +216,13 @@ export class LocalAutocompleter { max = med; } else { // too small, go right - min = med; + min = med + 1; } } // Scan forward until no more matches occur - while (min < this.numTags - 1) { - const referenceIndex = mapIndex(++min); + while (min < this.numTags) { + const referenceIndex = mapIndex(min++); if (compare(referenceIndex) !== 0) { break;