提交 4dad67b8 编写于 作者: J Johannes Rieken

command: executeCodeLensProvider

上级 fb9cfb1a
......@@ -5,13 +5,15 @@
'use strict';
import {onUnexpectedError} from 'vs/base/common/errors';
import {onUnexpectedError, illegalArgument} from 'vs/base/common/errors';
import URI from 'vs/base/common/uri';
import {IAction, Action} from 'vs/base/common/actions';
import {IModelService} from 'vs/editor/common/services/modelService';
import {TPromise} from 'vs/base/common/winjs.base';
import {IModel, IRange, IPosition} from 'vs/editor/common/editorCommon';
import {Range} from 'vs/editor/common/core/range';
import {ICodeLensSupport, ICodeLensSymbol, ICommand} from 'vs/editor/common/modes';
import {CommonEditorRegistry} from 'vs/editor/common/editorCommonExtensions';
import LanguageFeatureRegistry from 'vs/editor/common/modes/languageFeatureRegistry';
export const CodeLensRegistry = new LanguageFeatureRegistry<ICodeLensSupport>('codeLensSupport');
......@@ -21,7 +23,7 @@ export interface ICodeLensData {
support: ICodeLensSupport;
}
export function getCodeLensData(model: IModel) {
export function getCodeLensData(model: IModel):TPromise<ICodeLensData[]> {
const symbols: ICodeLensData[] = [];
const promises = CodeLensRegistry.all(model).map(support => {
......@@ -38,4 +40,19 @@ export function getCodeLensData(model: IModel) {
});
return TPromise.join(promises).then(() => symbols);
}
\ No newline at end of file
}
CommonEditorRegistry.registerLanguageCommand('_executeCodeLensProvider', function(accessor, args) {
const {resource} = args;
if (!URI.isURI(resource)) {
throw illegalArgument();
}
const model = accessor.get(IModelService).getModel(resource);
if (!model) {
throw illegalArgument();
}
return getCodeLensData(model);
});
\ No newline at end of file
......@@ -34,9 +34,8 @@ import LanguageFeatureRegistry from 'vs/editor/common/modes/languageFeatureRegis
import {NavigateTypesSupportRegistry, INavigateTypesSupport, ITypeBearing} from 'vs/workbench/parts/search/common/search'
import {RenameRegistry} from 'vs/editor/contrib/rename/common/rename';
import {FormatRegistry, FormatOnTypeRegistry} from 'vs/editor/contrib/format/common/format';
import {CodeLensRegistry} from 'vs/editor/contrib/codelens/common/codelens';
import {ParameterHintsRegistry} from 'vs/editor/contrib/parameterHints/common/parameterHints';
import {SuggestRegistry} from 'vs/editor/contrib/suggest/common/suggest';
import {ICodeLensData} from 'vs/editor/contrib/codelens/common/codelens';
// vscode.executeWorkspaceSymbolProvider
// vscode.executeDefinitionProvider
......@@ -48,8 +47,8 @@ import {SuggestRegistry} from 'vs/editor/contrib/suggest/common/suggest';
// vscode.executeDocumentSymbolProvider
// vscode.executeCompletionItemProvider
// vscode.executeCodeActionProvider
// vscode.executeCodeLensProvider
// vscode.executeFormatDocumentProvider
// vscode.executeFormatRangeProvider
// vscode.executeFormatOnTypeProvider
......@@ -72,6 +71,7 @@ export class ExtHostLanguageFeatureCommands {
this._register('vscode.executeDocumentSymbolProvider', this._executeDocumentSymbolProvider);
this._register('vscode.executeCompletionItemProvider', this._executeCompletionItemProvider);
this._register('vscode.executeCodeActionProvider', this._executeCodeActionProvider);
this._register('vscode.executeCodeLensProvider', this._executeCodeLensProvider);
}
private _register(id: string, callback: (...args: any[]) => any): void {
......@@ -215,4 +215,15 @@ export class ExtHostLanguageFeatureCommands {
}
});
}
private _executeCodeLensProvider(resource: URI): Thenable<vscode.CodeLens[]>{
const args = {
resource
};
return this._commands._executeContributedCommand<ICodeLensData[]>('_executeCodeLensProvider', args).then(value => {
if (Array.isArray(value)) {
return value.map(item => new types.CodeLens(typeConverters.toRange(item.symbol.range)));
}
});
}
}
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册