提交 7919b9d1 编写于 作者: B Benjamin Pasero

grid - clarify active/visible text editor control to support diff as well

上级 31e42aac
......@@ -19,7 +19,7 @@ import { overviewRulerRangeHighlight } from 'vs/editor/common/view/editorColorRe
import { themeColorFromId } from 'vs/platform/theme/common/themeService';
import { IEditorOptions, RenderLineNumbersType } from 'vs/editor/common/config/editorOptions';
import { INextEditorService, SIDE_GROUP } from 'vs/workbench/services/editor/common/nextEditorService';
import { ICodeEditor } from 'vs/editor/browser/editorBrowser';
import { isCodeEditor, isDiffEditor } from 'vs/editor/browser/editorBrowser';
export const GOTO_LINE_PREFIX = ':';
......@@ -37,10 +37,13 @@ export class GotoLineAction extends QuickOpenAction {
public run(): TPromise<void> {
const editor = this.editorService.activeTextEditorControl as ICodeEditor;
let editor = this.editorService.activeTextEditorControl;
if (isDiffEditor(editor)) {
editor = editor.getModifiedEditor();
}
let restoreOptions: IEditorOptions = null;
if (editor) {
if (isCodeEditor(editor)) {
const config = editor.getConfiguration();
if (config.viewInfo.renderLineNumbers === RenderLineNumbersType.Relative) {
editor.updateOptions({
......
......@@ -29,7 +29,8 @@ import { INextEditorService, IResourceEditor, ACTIVE_GROUP_TYPE, SIDE_GROUP_TYPE
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
import { Disposable, IDisposable, dispose } from 'vs/base/common/lifecycle';
import { coalesce } from 'vs/base/common/arrays';
import { isCodeEditor, ICodeEditor } from 'vs/editor/browser/editorBrowser';
import { isCodeEditor, isDiffEditor } from 'vs/editor/browser/editorBrowser';
import { IEditor as ITextEditor } from 'vs/editor/common/editorCommon';
import { toWinJsPromise } from 'vs/base/common/async';
type ICachedEditorInput = ResourceEditorInput | IFileEditorInput | DataUriEditorInput;
......@@ -139,11 +140,11 @@ export class NextEditorService extends Disposable implements INextEditorService
return activeGroup ? activeGroup.activeControl : void 0;
}
get activeTextEditorControl(): ICodeEditor {
get activeTextEditorControl(): ITextEditor {
const activeControl = this.activeControl;
if (activeControl) {
const activeControlWidget = activeControl.getControl();
if (isCodeEditor(activeControlWidget)) {
if (isCodeEditor(activeControlWidget) || isDiffEditor(activeControlWidget)) {
return activeControlWidget;
}
}
......@@ -161,8 +162,8 @@ export class NextEditorService extends Disposable implements INextEditorService
return coalesce(this.nextEditorGroupsService.groups.map(group => group.activeControl));
}
get visibleTextEditorControls(): ICodeEditor[] {
return this.visibleControls.map(control => control.getControl() as ICodeEditor).filter(widget => isCodeEditor(widget));
get visibleTextEditorControls(): ITextEditor[] {
return this.visibleControls.map(control => control.getControl() as ITextEditor).filter(widget => isCodeEditor(widget) || isDiffEditor(widget));
}
get visibleEditors(): IEditorInput[] {
......@@ -358,7 +359,7 @@ export class NextEditorService extends Disposable implements INextEditorService
invokeWithinEditorContext<T>(fn: (accessor: ServicesAccessor) => T): T {
const activeTextEditorControl = this.activeTextEditorControl;
if (activeTextEditorControl) {
if (isCodeEditor(activeTextEditorControl)) {
return activeTextEditorControl.invokeWithinContext(fn);
}
......
......@@ -9,7 +9,7 @@ import { createDecorator, ServiceIdentifier, ServicesAccessor } from 'vs/platfor
import { IEditorInput, IResourceInput, IUntitledResourceInput, IResourceDiffInput, IResourceSideBySideInput, IEditor, IEditorOptions } from 'vs/platform/editor/common/editor';
import { GroupIdentifier, IEditorOpeningEvent, IEditorInputWithOptions, IEditorIdentifier } from 'vs/workbench/common/editor';
import { Event } from 'vs/base/common/event';
import { IEditor as ICodeEditor } from 'vs/editor/common/editorCommon';
import { IEditor as ITextEditor } from 'vs/editor/common/editorCommon';
import { INextEditorGroup } from 'vs/workbench/services/group/common/nextEditorGroupsService';
export const INextEditorService = createDecorator<INextEditorService>('nextEditorService');
......@@ -65,9 +65,10 @@ export interface INextEditorService {
/**
* The currently active text editor control if there is a control active
* and it is an instance of the code text editor.
* and it is an instance of the code text editor (either normal or diff
* editor).
*/
readonly activeTextEditorControl: ICodeEditor;
readonly activeTextEditorControl: ITextEditor;
/**
* The currently active editor if any.
......@@ -80,9 +81,10 @@ export interface INextEditorService {
readonly visibleControls: ReadonlyArray<IEditor>;
/**
* All text editor controls that are currently visible across all editor groups.
* All text editor controls (either normal or diff editor) that are currently
* visible across all editor groups.
*/
readonly visibleTextEditorControls: ReadonlyArray<ICodeEditor>;
readonly visibleTextEditorControls: ReadonlyArray<ITextEditor>;
/**
* All editors that are currently visible across all editor groups.
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册