提交 8835c06e 编写于 作者: B Benjamin Pasero

editor - move some workbench specific commands to workbench

上级 a323b399
......@@ -6,14 +6,10 @@
import * as nls from 'vs/nls';
import { KeyCode, KeyMod } from 'vs/base/common/keyCodes';
import URI from 'vs/base/common/uri';
import { TPromise } from 'vs/base/common/winjs.base';
import { IEditorService } from 'vs/platform/editor/common/editor';
import { CommandsRegistry, ICommandHandler } from 'vs/platform/commands/common/commands';
import { IContextKeyService, ContextKeyExpr } from 'vs/platform/contextkey/common/contextkey';
import { KeybindingsRegistry } from 'vs/platform/keybinding/common/keybindingsRegistry';
import { Position, IPosition } from 'vs/editor/common/core/position';
import { Range } from 'vs/editor/common/core/range';
import { Position } from 'vs/editor/common/core/position';
import * as editorCommon from 'vs/editor/common/editorCommon';
import { registerEditorAction, ServicesAccessor, EditorAction, registerEditorContribution, registerDefaultLanguageCommand } from 'vs/editor/browser/editorExtensions';
import { Location, ReferenceProviderRegistry } from 'vs/editor/common/modes';
......@@ -24,12 +20,12 @@ import { asWinJsPromise } from 'vs/base/common/async';
import { onUnexpectedExternalError } from 'vs/base/common/errors';
import { EditorContextKeys } from 'vs/editor/common/editorContextKeys';
import { EmbeddedCodeEditorWidget } from 'vs/editor/browser/widget/embeddedCodeEditorWidget';
import { ICodeEditor, isCodeEditor } from 'vs/editor/browser/editorBrowser';
import { ICodeEditor } from 'vs/editor/browser/editorBrowser';
import { ITextModel } from 'vs/editor/common/model';
import { IListService } from 'vs/platform/list/browser/listService';
import { ctxReferenceWidgetSearchTreeFocused } from 'vs/editor/contrib/referenceSearch/referencesWidget';
const defaultReferenceSearchOptions: RequestOptions = {
export const defaultReferenceSearchOptions: RequestOptions = {
getMetaTitle(model) {
return model.references.length > 1 && nls.localize('meta.titleReference', " – {0} references", model.references.length);
}
......@@ -94,79 +90,6 @@ registerEditorContribution(ReferenceController);
registerEditorAction(ReferenceAction);
let findReferencesCommand: ICommandHandler = (accessor: ServicesAccessor, resource: URI, position: IPosition) => {
if (!(resource instanceof URI)) {
throw new Error('illegal argument, uri');
}
if (!position) {
throw new Error('illegal argument, position');
}
return accessor.get(IEditorService).openEditor({ resource }).then(editor => {
let control = editor.getControl();
if (!isCodeEditor(control)) {
return undefined;
}
let controller = ReferencesController.get(control);
if (!controller) {
return undefined;
}
let references = provideReferences(control.getModel(), Position.lift(position)).then(references => new ReferencesModel(references));
let range = new Range(position.lineNumber, position.column, position.lineNumber, position.column);
return TPromise.as(controller.toggleWidget(range, references, defaultReferenceSearchOptions));
});
};
let showReferencesCommand: ICommandHandler = (accessor: ServicesAccessor, resource: URI, position: IPosition, references: Location[]) => {
if (!(resource instanceof URI)) {
throw new Error('illegal argument, uri expected');
}
return accessor.get(IEditorService).openEditor({ resource: resource }).then(editor => {
let control = editor.getControl();
if (!isCodeEditor(control)) {
return undefined;
}
let controller = ReferencesController.get(control);
if (!controller) {
return undefined;
}
return TPromise.as(controller.toggleWidget(
new Range(position.lineNumber, position.column, position.lineNumber, position.column),
TPromise.as(new ReferencesModel(references)),
defaultReferenceSearchOptions)).then(() => true);
});
};
// register commands
CommandsRegistry.registerCommand({
id: 'editor.action.findReferences',
handler: findReferencesCommand
});
CommandsRegistry.registerCommand({
id: 'editor.action.showReferences',
handler: showReferencesCommand,
description: {
description: 'Show references at a position in a file',
args: [
{ name: 'uri', description: 'The text document in which to show references', constraint: URI },
{ name: 'position', description: 'The position at which to show', constraint: Position.isIPosition },
{ name: 'locations', description: 'An array of locations.', constraint: Array },
]
}
});
function closeActiveReferenceSearch(accessor: ServicesAccessor, args: any) {
withController(accessor, controller => controller.closeWidget());
}
......
......@@ -4,19 +4,27 @@
*--------------------------------------------------------------------------------------------*/
'use strict';
import { IEditorService } from 'vs/platform/editor/common/editor';
import { IInstantiationService, optional } from 'vs/platform/instantiation/common/instantiation';
import { IInstantiationService, optional, ServicesAccessor } from 'vs/platform/instantiation/common/instantiation';
import { IContextKeyService } from 'vs/platform/contextkey/common/contextkey';
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
import { IWorkspaceContextService } from 'vs/platform/workspace/common/workspace';
import { IStorageService } from 'vs/platform/storage/common/storage';
import { ICodeEditor } from 'vs/editor/browser/editorBrowser';
import { ICodeEditor, isCodeEditor } from 'vs/editor/browser/editorBrowser';
import { registerEditorContribution } from 'vs/editor/browser/editorExtensions';
import { ITextModelService } from 'vs/editor/common/services/resolverService';
import { IThemeService } from 'vs/platform/theme/common/themeService';
import { IEnvironmentService } from 'vs/platform/environment/common/environment';
import { INotificationService } from 'vs/platform/notification/common/notification';
import { ReferencesController } from 'vs/editor/contrib/referenceSearch/referencesController';
import { CommandsRegistry, ICommandHandler } from 'vs/platform/commands/common/commands';
import { TPromise } from 'vs/base/common/winjs.base';
import { ReferencesModel } from 'vs/editor/contrib/referenceSearch/referencesModel';
import { Range } from 'vs/editor/common/core/range';
import { Position, IPosition } from 'vs/editor/common/core/position';
import URI from 'vs/base/common/uri';
import { Location } from 'vs/editor/common/modes';
import { provideReferences, defaultReferenceSearchOptions } from 'vs/editor/contrib/referenceSearch/referenceSearch';
import { IEditorService } from 'vs/platform/editor/common/editor';
export class WorkbenchReferencesController extends ReferencesController {
......@@ -51,3 +59,72 @@ export class WorkbenchReferencesController extends ReferencesController {
}
registerEditorContribution(WorkbenchReferencesController);
let findReferencesCommand: ICommandHandler = (accessor: ServicesAccessor, resource: URI, position: IPosition) => {
if (!(resource instanceof URI)) {
throw new Error('illegal argument, uri');
}
if (!position) {
throw new Error('illegal argument, position');
}
return accessor.get(IEditorService).openEditor({ resource }).then(editor => {
let control = editor.getControl();
if (!isCodeEditor(control)) {
return undefined;
}
let controller = ReferencesController.get(control);
if (!controller) {
return undefined;
}
let references = provideReferences(control.getModel(), Position.lift(position)).then(references => new ReferencesModel(references));
let range = new Range(position.lineNumber, position.column, position.lineNumber, position.column);
return TPromise.as(controller.toggleWidget(range, references, defaultReferenceSearchOptions));
});
};
let showReferencesCommand: ICommandHandler = (accessor: ServicesAccessor, resource: URI, position: IPosition, references: Location[]) => {
if (!(resource instanceof URI)) {
throw new Error('illegal argument, uri expected');
}
return accessor.get(IEditorService).openEditor({ resource }).then(editor => {
let control = editor.getControl();
if (!isCodeEditor(control)) {
return undefined;
}
let controller = ReferencesController.get(control);
if (!controller) {
return undefined;
}
return TPromise.as(controller.toggleWidget(
new Range(position.lineNumber, position.column, position.lineNumber, position.column),
TPromise.as(new ReferencesModel(references)),
defaultReferenceSearchOptions)).then(() => true);
});
};
// register commands
CommandsRegistry.registerCommand({
id: 'editor.action.findReferences',
handler: findReferencesCommand
});
CommandsRegistry.registerCommand({
id: 'editor.action.showReferences',
handler: showReferencesCommand,
description: {
description: 'Show references at a position in a file',
args: [
{ name: 'uri', description: 'The text document in which to show references', constraint: URI },
{ name: 'position', description: 'The position at which to show', constraint: Position.isIPosition },
{ name: 'locations', description: 'An array of locations.', constraint: Array },
]
}
});
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册