提交 43c2879d 编写于 作者: J Johannes Rieken

fix #58807

上级 674c9d6a
......@@ -317,6 +317,7 @@ export class SnippetSuggestProvider implements ISuggestSupport {
return this._snippets.getSnippets(languageId).then(snippets => {
let suggestions: SnippetSuggestion[];
let shift = Math.max(0, position.column - 100);
let pos = { lineNumber: position.lineNumber, column: Math.max(1, position.column - 100) };
let lineOffsets: number[] = [];
let linePrefixLow = model.getLineContent(position.lineNumber).substr(Math.max(0, position.column - 100), position.column - 1).toLowerCase();
......@@ -349,7 +350,8 @@ export class SnippetSuggestProvider implements ISuggestSupport {
} else {
let consumed = new Set<Snippet>();
suggestions = [];
for (const start of lineOffsets) {
for (let start of lineOffsets) {
start -= shift;
for (const snippet of snippets) {
if (!consumed.has(snippet) && matches(linePrefixLow, start, snippet.prefixLow, 0)) {
suggestions.push(new SnippetSuggestion(snippet, linePrefixLow.length - start));
......
......@@ -247,4 +247,22 @@ suite('SnippetsService', function () {
result = await provider.provideCompletionItems(model, new Position(1, 3), { triggerCharacter: '-', triggerKind: SuggestTriggerKind.TriggerCharacter });
assert.equal(result.suggestions.length, 1);
});
test('No snippets suggestion on long lines beyond character 100 #58807', async function () {
snippetService = new SimpleSnippetService([new Snippet(
['fooLang'],
'bug',
'bug',
'',
'second',
''
)]);
const provider = new SnippetSuggestProvider(modeService, snippetService);
let model = TextModel.createFromString('Thisisaverylonglinegoingwithmore100bcharactersandthismakesintellisensebecomea Thisisaverylonglinegoingwithmore100bcharactersandthismakesintellisensebecomea b', undefined, modeService.getLanguageIdentifier('fooLang'));
let result = await provider.provideCompletionItems(model, new Position(1, 158), suggestContext);
assert.equal(result.suggestions.length, 1);
});
});
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册