Skip to content

Commit 4dad67b

Browse files
committed
command: executeCodeLensProvider
1 parent fb9cfb1 commit 4dad67b

2 files changed

Lines changed: 35 additions & 7 deletions

File tree

src/vs/editor/contrib/codelens/common/codelens.ts

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,15 @@
55

66
'use strict';
77

8-
import {onUnexpectedError} from 'vs/base/common/errors';
8+
import {onUnexpectedError, illegalArgument} from 'vs/base/common/errors';
99
import URI from 'vs/base/common/uri';
1010
import {IAction, Action} from 'vs/base/common/actions';
11+
import {IModelService} from 'vs/editor/common/services/modelService';
1112
import {TPromise} from 'vs/base/common/winjs.base';
1213
import {IModel, IRange, IPosition} from 'vs/editor/common/editorCommon';
1314
import {Range} from 'vs/editor/common/core/range';
1415
import {ICodeLensSupport, ICodeLensSymbol, ICommand} from 'vs/editor/common/modes';
16+
import {CommonEditorRegistry} from 'vs/editor/common/editorCommonExtensions';
1517
import LanguageFeatureRegistry from 'vs/editor/common/modes/languageFeatureRegistry';
1618

1719
export const CodeLensRegistry = new LanguageFeatureRegistry<ICodeLensSupport>('codeLensSupport');
@@ -21,7 +23,7 @@ export interface ICodeLensData {
2123
support: ICodeLensSupport;
2224
}
2325

24-
export function getCodeLensData(model: IModel) {
26+
export function getCodeLensData(model: IModel):TPromise<ICodeLensData[]> {
2527

2628
const symbols: ICodeLensData[] = [];
2729
const promises = CodeLensRegistry.all(model).map(support => {
@@ -38,4 +40,19 @@ export function getCodeLensData(model: IModel) {
3840
});
3941

4042
return TPromise.join(promises).then(() => symbols);
41-
}
43+
}
44+
45+
CommonEditorRegistry.registerLanguageCommand('_executeCodeLensProvider', function(accessor, args) {
46+
47+
const {resource} = args;
48+
if (!URI.isURI(resource)) {
49+
throw illegalArgument();
50+
}
51+
52+
const model = accessor.get(IModelService).getModel(resource);
53+
if (!model) {
54+
throw illegalArgument();
55+
}
56+
57+
return getCodeLensData(model);
58+
});

src/vs/workbench/api/common/extHostLanguageFeatureCommands.ts

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,8 @@ import LanguageFeatureRegistry from 'vs/editor/common/modes/languageFeatureRegis
3434
import {NavigateTypesSupportRegistry, INavigateTypesSupport, ITypeBearing} from 'vs/workbench/parts/search/common/search'
3535
import {RenameRegistry} from 'vs/editor/contrib/rename/common/rename';
3636
import {FormatRegistry, FormatOnTypeRegistry} from 'vs/editor/contrib/format/common/format';
37-
import {CodeLensRegistry} from 'vs/editor/contrib/codelens/common/codelens';
38-
import {ParameterHintsRegistry} from 'vs/editor/contrib/parameterHints/common/parameterHints';
39-
import {SuggestRegistry} from 'vs/editor/contrib/suggest/common/suggest';
37+
import {ICodeLensData} from 'vs/editor/contrib/codelens/common/codelens';
38+
4039

4140
// vscode.executeWorkspaceSymbolProvider
4241
// vscode.executeDefinitionProvider
@@ -48,8 +47,8 @@ import {SuggestRegistry} from 'vs/editor/contrib/suggest/common/suggest';
4847
// vscode.executeDocumentSymbolProvider
4948
// vscode.executeCompletionItemProvider
5049
// vscode.executeCodeActionProvider
51-
5250
// vscode.executeCodeLensProvider
51+
5352
// vscode.executeFormatDocumentProvider
5453
// vscode.executeFormatRangeProvider
5554
// vscode.executeFormatOnTypeProvider
@@ -72,6 +71,7 @@ export class ExtHostLanguageFeatureCommands {
7271
this._register('vscode.executeDocumentSymbolProvider', this._executeDocumentSymbolProvider);
7372
this._register('vscode.executeCompletionItemProvider', this._executeCompletionItemProvider);
7473
this._register('vscode.executeCodeActionProvider', this._executeCodeActionProvider);
74+
this._register('vscode.executeCodeLensProvider', this._executeCodeLensProvider);
7575
}
7676

7777
private _register(id: string, callback: (...args: any[]) => any): void {
@@ -215,4 +215,15 @@ export class ExtHostLanguageFeatureCommands {
215215
}
216216
});
217217
}
218+
219+
private _executeCodeLensProvider(resource: URI): Thenable<vscode.CodeLens[]>{
220+
const args = {
221+
resource
222+
};
223+
return this._commands._executeContributedCommand<ICodeLensData[]>('_executeCodeLensProvider', args).then(value => {
224+
if (Array.isArray(value)) {
225+
return value.map(item => new types.CodeLens(typeConverters.toRange(item.symbol.range)));
226+
}
227+
});
228+
}
218229
}

0 commit comments

Comments
 (0)