diff --git a/src/vs/editor/contrib/suggest/common/completionModel.ts b/src/vs/editor/contrib/suggest/common/completionModel.ts index 0442b8ad8e9013fec40946ff43be06b476fb626e..a6fe047b2f539a10dcabdecc98d8039d50bb43c6 100644 --- a/src/vs/editor/contrib/suggest/common/completionModel.ts +++ b/src/vs/editor/contrib/suggest/common/completionModel.ts @@ -122,7 +122,7 @@ export class CompletionModel { // differnet word, but in practice not - that's why we cache const wordLen = suggestion.overwriteBefore + characterCountDelta - (item.position.column - this._column); if (word.length !== wordLen) { - word = leadingLineContent.slice(-wordLen); + word = wordLen === 0 ? '' : leadingLineContent.slice(-wordLen); } let match = false; diff --git a/src/vs/editor/contrib/suggest/test/common/completionModel.test.ts b/src/vs/editor/contrib/suggest/test/common/completionModel.test.ts index 6c5acc76586f112fd0709c4d300db4b0b7512f1a..8e2f4d613c8fca0af3e7e93832ce21be3d444063 100644 --- a/src/vs/editor/contrib/suggest/test/common/completionModel.test.ts +++ b/src/vs/editor/contrib/suggest/test/common/completionModel.test.ts @@ -148,4 +148,27 @@ suite('CompletionModel', function () { // dupe, issue #14942 assertTopScore('is', 0, 'isValidViewletId', 'import statement'); }); + + test('proper current word when length=0, #16380', function () { + + model = new CompletionModel([ + createSuggestItem('