mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-03-31 01:00:29 -04:00
Merge from vscode 3c6f6af7347d38e87bc6406024e8dcf9e9bce229 (#8962)
* Merge from vscode 3c6f6af7347d38e87bc6406024e8dcf9e9bce229 * skip failing tests * update mac build image
This commit is contained in:
committed by
Karl Burtram
parent
0eaee18dc4
commit
fefe1454de
@@ -8,7 +8,7 @@ import { compare, startsWith } from 'vs/base/common/strings';
|
||||
import { Position } from 'vs/editor/common/core/position';
|
||||
import { IRange, Range } from 'vs/editor/common/core/range';
|
||||
import { ITextModel } from 'vs/editor/common/model';
|
||||
import { CompletionItem, CompletionItemKind, CompletionItemProvider, CompletionList, LanguageId, CompletionItemInsertTextRule, CompletionContext, CompletionTriggerKind } from 'vs/editor/common/modes';
|
||||
import { CompletionItem, CompletionItemKind, CompletionItemProvider, CompletionList, LanguageId, CompletionItemInsertTextRule, CompletionContext, CompletionTriggerKind, CompletionItemLabel } from 'vs/editor/common/modes';
|
||||
import { IModeService } from 'vs/editor/common/services/modeService';
|
||||
import { SnippetParser } from 'vs/editor/contrib/snippet/snippetParser';
|
||||
import { localize } from 'vs/nls';
|
||||
@@ -18,8 +18,7 @@ import { isPatternInWord } from 'vs/base/common/filters';
|
||||
|
||||
export class SnippetCompletion implements CompletionItem {
|
||||
|
||||
label: string;
|
||||
detail: string;
|
||||
label: CompletionItemLabel;
|
||||
insertText: string;
|
||||
documentation?: MarkdownString;
|
||||
range: IRange | { insert: IRange, replace: IRange };
|
||||
@@ -31,8 +30,11 @@ export class SnippetCompletion implements CompletionItem {
|
||||
readonly snippet: Snippet,
|
||||
range: IRange | { insert: IRange, replace: IRange }
|
||||
) {
|
||||
this.label = snippet.prefix;
|
||||
this.detail = localize('detail.snippet', "{0} ({1})", snippet.description || snippet.name, snippet.source);
|
||||
this.label = {
|
||||
name: snippet.prefix,
|
||||
type: localize('detail.snippet', "{0} ({1})", snippet.description || snippet.name, snippet.source)
|
||||
};
|
||||
|
||||
this.insertText = snippet.codeSnippet;
|
||||
this.range = range;
|
||||
this.sortText = `${snippet.snippetSource === SnippetSource.Extension ? 'z' : 'a'}-${snippet.prefix}`;
|
||||
@@ -46,7 +48,7 @@ export class SnippetCompletion implements CompletionItem {
|
||||
}
|
||||
|
||||
static compareByLabel(a: SnippetCompletion, b: SnippetCompletion): number {
|
||||
return compare(a.label, b.label);
|
||||
return compare(a.label.name, b.label.name);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -139,14 +141,15 @@ export class SnippetCompletionProvider implements CompletionItemProvider {
|
||||
let item = suggestions[i];
|
||||
let to = i + 1;
|
||||
for (; to < suggestions.length && item.label === suggestions[to].label; to++) {
|
||||
suggestions[to].label = localize('snippetSuggest.longLabel', "{0}, {1}", suggestions[to].label, suggestions[to].snippet.name);
|
||||
suggestions[to].label.name = localize('snippetSuggest.longLabel', "{0}, {1}", suggestions[to].label.name, suggestions[to].snippet.name);
|
||||
}
|
||||
if (to > i + 1) {
|
||||
suggestions[i].label = localize('snippetSuggest.longLabel', "{0}, {1}", suggestions[i].label, suggestions[i].snippet.name);
|
||||
suggestions[i].label.name = localize('snippetSuggest.longLabel', "{0}, {1}", suggestions[i].label.name, suggestions[i].snippet.name);
|
||||
i = to;
|
||||
}
|
||||
}
|
||||
return { suggestions, isDetailsResolved: true };
|
||||
|
||||
return { suggestions };
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -83,7 +83,10 @@ suite('SnippetsService', function () {
|
||||
return provider.provideCompletionItems(model, new Position(1, 4), context)!.then(result => {
|
||||
assert.equal(result.incomplete, undefined);
|
||||
assert.equal(result.suggestions.length, 1);
|
||||
assert.equal(result.suggestions[0].label, 'bar');
|
||||
assert.deepEqual(result.suggestions[0].label, {
|
||||
name: 'bar',
|
||||
type: 'barTest ()'
|
||||
});
|
||||
assert.equal((result.suggestions[0].range as any).insert.startColumn, 1);
|
||||
assert.equal(result.suggestions[0].insertText, 'barCodeSnippet');
|
||||
});
|
||||
@@ -115,10 +118,16 @@ suite('SnippetsService', function () {
|
||||
await provider.provideCompletionItems(model, new Position(1, 3), context)!.then(result => {
|
||||
assert.equal(result.incomplete, undefined);
|
||||
assert.equal(result.suggestions.length, 2);
|
||||
assert.equal(result.suggestions[0].label, 'bar');
|
||||
assert.deepEqual(result.suggestions[0].label, {
|
||||
name: 'bar',
|
||||
type: 'barTest ()'
|
||||
});
|
||||
assert.equal(result.suggestions[0].insertText, 's1');
|
||||
assert.equal((result.suggestions[0].range as any).insert.startColumn, 1);
|
||||
assert.equal(result.suggestions[1].label, 'bar-bar');
|
||||
assert.deepEqual(result.suggestions[1].label, {
|
||||
name: 'bar-bar',
|
||||
type: 'name ()'
|
||||
});
|
||||
assert.equal(result.suggestions[1].insertText, 's2');
|
||||
assert.equal((result.suggestions[1].range as any).insert.startColumn, 1);
|
||||
});
|
||||
@@ -126,7 +135,10 @@ suite('SnippetsService', function () {
|
||||
await provider.provideCompletionItems(model, new Position(1, 5), context)!.then(result => {
|
||||
assert.equal(result.incomplete, undefined);
|
||||
assert.equal(result.suggestions.length, 1);
|
||||
assert.equal(result.suggestions[0].label, 'bar-bar');
|
||||
assert.deepEqual(result.suggestions[0].label, {
|
||||
name: 'bar-bar',
|
||||
type: 'name ()'
|
||||
});
|
||||
assert.equal(result.suggestions[0].insertText, 's2');
|
||||
assert.equal((result.suggestions[0].range as any).insert.startColumn, 1);
|
||||
});
|
||||
@@ -134,10 +146,16 @@ suite('SnippetsService', function () {
|
||||
await provider.provideCompletionItems(model, new Position(1, 6), context)!.then(result => {
|
||||
assert.equal(result.incomplete, undefined);
|
||||
assert.equal(result.suggestions.length, 2);
|
||||
assert.equal(result.suggestions[0].label, 'bar');
|
||||
assert.deepEqual(result.suggestions[0].label, {
|
||||
name: 'bar',
|
||||
type: 'barTest ()'
|
||||
});
|
||||
assert.equal(result.suggestions[0].insertText, 's1');
|
||||
assert.equal((result.suggestions[0].range as any).insert.startColumn, 5);
|
||||
assert.equal(result.suggestions[1].label, 'bar-bar');
|
||||
assert.deepEqual(result.suggestions[1].label, {
|
||||
name: 'bar-bar',
|
||||
type: 'name ()'
|
||||
});
|
||||
assert.equal(result.suggestions[1].insertText, 's2');
|
||||
assert.equal((result.suggestions[1].range as any).insert.startColumn, 1);
|
||||
});
|
||||
@@ -225,8 +243,14 @@ suite('SnippetsService', function () {
|
||||
return provider.provideCompletionItems(model, new Position(1, 1), context)!.then(result => {
|
||||
assert.equal(result.suggestions.length, 2);
|
||||
let [first, second] = result.suggestions;
|
||||
assert.equal(first.label, 'first');
|
||||
assert.equal(second.label, 'second');
|
||||
assert.deepEqual(first.label, {
|
||||
name: 'first',
|
||||
type: 'first ()'
|
||||
});
|
||||
assert.deepEqual(second.label, {
|
||||
name: 'second',
|
||||
type: 'second ()'
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
@@ -309,7 +333,10 @@ suite('SnippetsService', function () {
|
||||
let result = await provider.provideCompletionItems(model, new Position(1, 9), context)!;
|
||||
|
||||
assert.equal(result.suggestions.length, 1);
|
||||
assert.equal(result.suggestions[0].label, 'mytemplate');
|
||||
assert.deepEqual(result.suggestions[0].label, {
|
||||
name: 'mytemplate',
|
||||
type: 'mytemplate ()'
|
||||
});
|
||||
});
|
||||
|
||||
test('No snippets suggestion beyond character 100 if not at end of line #60247', async function () {
|
||||
|
||||
Reference in New Issue
Block a user