本文整理汇总了TypeScript中vs/editor/common/modes.CodeActionProviderRegistry.register方法的典型用法代码示例。如果您正苦于以下问题:TypeScript CodeActionProviderRegistry.register方法的具体用法?TypeScript CodeActionProviderRegistry.register怎么用?TypeScript CodeActionProviderRegistry.register使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类vs/editor/common/modes.CodeActionProviderRegistry
的用法示例。
在下文中一共展示了CodeActionProviderRegistry.register方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的TypeScript代码示例。
示例1: test
test('Oracle -> ask once per marker/word', () => {
let counter = 0;
let reg = CodeActionProviderRegistry.register(languageIdentifier.language, {
provideCodeActions() {
counter += 1;
return [];
}
});
markerService.changeOne('fake', uri, [{
startLineNumber: 1, startColumn: 1, endLineNumber: 1, endColumn: 6,
message: 'error',
severity: 1,
code: '',
source: ''
}]);
let fixes: TPromise<any>[] = [];
let oracle = new QuickFixOracle(editor, markerService, e => {
fixes.push(e.fixes);
});
editor.setPosition({ lineNumber: 1, column: 3 }); // marker
editor.setPosition({ lineNumber: 1, column: 6 }); // (same) marker
editor.setPosition({ lineNumber: 1, column: 8 }); // whitespace
editor.setPosition({ lineNumber: 2, column: 2 }); // word
editor.setPosition({ lineNumber: 2, column: 6 }); // (same) word
return TPromise.join(fixes).then(_ => {
reg.dispose();
oracle.dispose();
assert.equal(counter, 2);
});
});
示例2: test
test('getCodeActions should filter by scope', async function () {
const provider = new class implements CodeActionProvider {
provideCodeActions(): CodeAction[] {
return [
{ title: 'a', kind: 'a' },
{ title: 'b', kind: 'b' },
{ title: 'a.b', kind: 'a.b' }
];
}
};
disposables.push(CodeActionProviderRegistry.register('fooLang', provider));
{
const actions = await getCodeActions(model, new Range(1, 1, 2, 1), { kind: new CodeActionKind('a') });
assert.equal(actions.length, 2);
assert.strictEqual(actions[0].title, 'a');
assert.strictEqual(actions[1].title, 'a.b');
}
{
const actions = await getCodeActions(model, new Range(1, 1, 2, 1), { kind: new CodeActionKind('a.b') });
assert.equal(actions.length, 1);
assert.strictEqual(actions[0].title, 'a.b');
}
{
const actions = await getCodeActions(model, new Range(1, 1, 2, 1), { kind: new CodeActionKind('a.b.c') });
assert.equal(actions.length, 0);
}
});
示例3: test
test('basics', async function () {
const provider = new class implements CodeActionProvider {
provideCodeActions() {
return [{
title: 'Testing1',
diagnostics: [{
startLineNumber: 1,
startColumn: 1,
endLineNumber: 2,
endColumn: 1,
severity: Severity.Error,
message: 'some error'
}]
}, {
title: 'Testing2'
}];
}
};
disposables.push(CodeActionProviderRegistry.register('fooLang', provider));
const actions = await getCodeActions(model, new Range(1, 1, 2, 1));
assert.equal(actions.length, 2);
});
示例4: Error
return start.then(() => {
let stacks: string[] = [];
let counter = 0;
let reg = CodeActionProviderRegistry.register(languageIdentifier.language, {
provideCodeActions() {
counter += 1;
stacks.push(new Error().stack);
return [];
}
});
let fixes: TPromise<any>[] = [];
let oracle = new QuickFixOracle(editor, markerService, e => {
fixes.push(e.fixes);
}, 10);
editor.setPosition({ lineNumber: 1, column: 3 }); // marker
editor.setPosition({ lineNumber: 1, column: 6 }); // (same) marker
return TPromise.join([TPromise.timeout(20)].concat(fixes)).then(() => {
assert.equal(counter, 1, stacks.join('\n----\n'));
editor.setPosition({ lineNumber: 1, column: 8 }); // whitespace
editor.setPosition({ lineNumber: 2, column: 2 }); // word
editor.setPosition({ lineNumber: 2, column: 6 }); // (same) word
return TPromise.join([TPromise.timeout(20)].concat(fixes)).then(_ => {
reg.dispose();
oracle.dispose();
assert.equal(counter, 2, stacks.join('\n----\n'));
});
});
});
示例5: registerCodeActionProvider
export function registerCodeActionProvider(languageId: string, provider: CodeActionProvider): IDisposable {
return modes.CodeActionProviderRegistry.register(languageId, {
provideCodeActions: (model: model.ITextModel, range: Range, context: modes.CodeActionContext, token: CancellationToken): (modes.Command | modes.CodeAction)[] | Thenable<(modes.Command | modes.CodeAction)[]> => {
let markers = StaticServices.markerService.get().read({ resource: model.uri }).filter(m => {
return Range.areIntersectingOrTouching(m, range);
});
return provider.provideCodeActions(model, range, { markers, only: context.only }, token);
}
});
}
示例6: setup
setup(() => {
reg = CodeActionProviderRegistry.register(languageIdentifier.language, {
provideCodeActions() {
return [{ id: 'test-command', title: 'test', arguments: [] }];
}
});
markerService = new MarkerService();
model = Model.createFromString('foobar foo bar\nfarboo far boo', undefined, languageIdentifier, uri);
editor = createTestCodeEditor(model);
editor.setPosition({ lineNumber: 1, column: 1 });
});
示例7: test
test('Lightbulb is in the wrong place, #29933', async function () {
let reg = CodeActionProviderRegistry.register(languageIdentifier.language, {
provideCodeActions(doc, _range) {
return [];
}
});
editor.getModel().setValue('// @ts-check\n2\ncon\n');
markerService.changeOne('fake', uri, [{
startLineNumber: 3, startColumn: 1, endLineNumber: 3, endColumn: 4,
message: 'error',
severity: 1,
code: '',
source: ''
}]);
// case 1 - drag selection over multiple lines -> range of enclosed marker, position or marker
await new TPromise(resolve => {
let oracle = new QuickFixOracle(editor, markerService, e => {
assert.equal(e.type, 'auto');
assert.deepEqual(e.range, { startLineNumber: 3, startColumn: 1, endLineNumber: 3, endColumn: 4 });
assert.deepEqual(e.position, { lineNumber: 3, column: 1 });
oracle.dispose();
resolve(null);
}, 5);
editor.setSelection({ startLineNumber: 1, startColumn: 1, endLineNumber: 4, endColumn: 1 });
});
// // case 2 - selection over multiple lines & manual trigger -> lightbulb
// await new TPromise(resolve => {
// editor.setSelection({ startLineNumber: 1, startColumn: 1, endLineNumber: 4, endColumn: 1 });
// let oracle = new QuickFixOracle(editor, markerService, e => {
// assert.equal(e.type, 'manual');
// assert.ok(e.range.equalsRange({ startLineNumber: 1, startColumn: 1, endLineNumber: 4, endColumn: 1 }));
// oracle.dispose();
// resolve(null);
// }, 5);
// oracle.trigger('manual');
// });
reg.dispose();
});
示例8: test
test('Oracle -> ask once per marker/word', async () => {
const start = promiseOnce(markerService.onMarkerChanged);
markerService.changeOne('fake', uri, [{
startLineNumber: 1, startColumn: 1, endLineNumber: 1, endColumn: 6,
message: 'error',
severity: 1,
code: '',
source: ''
}]);
await start;
let counter = 0;
let reg = CodeActionProviderRegistry.register(languageIdentifier.language, {
provideCodeActions() {
counter += 1;
return [];
}
});
let fixes: TPromise<any>[] = [];
let oracle = new QuickFixOracle(editor, markerService, e => {
fixes.push(e.fixes);
}, 10);
editor.setPosition({ lineNumber: 1, column: 3 }); // marker
editor.setPosition({ lineNumber: 1, column: 6 }); // (same) marker
await TPromise.join([TPromise.timeout(20)].concat(fixes));
assert.equal(counter, 1);
// no auto trigger when empty selection
editor.setPosition({ lineNumber: 1, column: 8 }); // whitespace
editor.setPosition({ lineNumber: 2, column: 2 }); // word
editor.setPosition({ lineNumber: 2, column: 6 }); // (same) word
await TPromise.join([TPromise.timeout(20)].concat(fixes));
assert.equal(counter, 1);
// auto trigger on non-empty selection
editor.setSelection({ startLineNumber: 2, startColumn: 2, endLineNumber: 2, endColumn: 6 });
await TPromise.join([TPromise.timeout(20)].concat(fixes));
assert.equal(counter, 2);
reg.dispose();
oracle.dispose();
});