提交 8cb8c024 编写于 作者: B Benjamin Pasero

grid - cleanup getCodeEditor()

上级 8bb9ce0c
...@@ -839,3 +839,18 @@ export function isDiffEditor(thing: any): thing is IDiffEditor { ...@@ -839,3 +839,18 @@ export function isDiffEditor(thing: any): thing is IDiffEditor {
return false; return false;
} }
} }
/**
*@internal
*/
export function getCodeEditor(thing: any): ICodeEditor {
if (isCodeEditor(thing)) {
return thing;
}
if (isDiffEditor(thing)) {
return thing.getModifiedEditor();
}
return null;
}
\ No newline at end of file
...@@ -8,7 +8,7 @@ import { Event } from 'vs/base/common/event'; ...@@ -8,7 +8,7 @@ import { Event } from 'vs/base/common/event';
import { createDecorator } from 'vs/platform/instantiation/common/instantiation'; import { createDecorator } from 'vs/platform/instantiation/common/instantiation';
import { IDecorationRenderOptions } from 'vs/editor/common/editorCommon'; import { IDecorationRenderOptions } from 'vs/editor/common/editorCommon';
import { IModelDecorationOptions, ITextModel } from 'vs/editor/common/model'; import { IModelDecorationOptions, ITextModel } from 'vs/editor/common/model';
import { ICodeEditor, IDiffEditor, isCodeEditor, isDiffEditor } from 'vs/editor/browser/editorBrowser'; import { ICodeEditor, IDiffEditor } from 'vs/editor/browser/editorBrowser';
import { IResourceInput } from 'vs/platform/editor/common/editor'; import { IResourceInput } from 'vs/platform/editor/common/editor';
import { TPromise } from 'vs/base/common/winjs.base'; import { TPromise } from 'vs/base/common/winjs.base';
...@@ -46,36 +46,3 @@ export interface ICodeEditorService { ...@@ -46,36 +46,3 @@ export interface ICodeEditorService {
getActiveCodeEditor(): ICodeEditor; getActiveCodeEditor(): ICodeEditor;
openCodeEditor(input: IResourceInput, source: ICodeEditor, sideBySide?: boolean): TPromise<ICodeEditor>; openCodeEditor(input: IResourceInput, source: ICodeEditor, sideBySide?: boolean): TPromise<ICodeEditor>;
} }
/**
* Uses `editor.getControl()` and returns either the code editor, or the modified editor of a diff editor or nothing.
*/
export function getCodeEditor(editor: { getControl: () => any }): ICodeEditor {
let r = getCodeOrDiffEditor(editor);
return r.codeEditor || (r.diffEditor && <ICodeEditor>r.diffEditor.getModifiedEditor()) || null;
}
function getCodeOrDiffEditor(editor: { getControl: () => any }): { codeEditor: ICodeEditor; diffEditor: IDiffEditor } {
if (editor) {
let control = editor.getControl();
if (control) {
if (isCodeEditor(control)) {
return {
codeEditor: control,
diffEditor: null
};
}
if (isDiffEditor(control)) {
return {
codeEditor: null,
diffEditor: control
};
}
}
}
return {
codeEditor: null,
diffEditor: null
};
}
...@@ -8,7 +8,7 @@ import { TPromise } from 'vs/base/common/winjs.base'; ...@@ -8,7 +8,7 @@ import { TPromise } from 'vs/base/common/winjs.base';
import * as nls from 'vs/nls'; import * as nls from 'vs/nls';
import { Action } from 'vs/base/common/actions'; import { Action } from 'vs/base/common/actions';
import { mixin } from 'vs/base/common/objects'; import { mixin } from 'vs/base/common/objects';
import { getCodeEditor } from 'vs/editor/browser/services/codeEditorService'; import { getCodeEditor } from 'vs/editor/browser/editorBrowser';
import { IEditor, IEditorInput, EditorInput, TextEditorOptions, EditorOptions, IEditorIdentifier, ConfirmResult, IEditorCommandsContext, GroupIdentifier, groupFromContext, CloseDirection } from 'vs/workbench/common/editor'; import { IEditor, IEditorInput, EditorInput, TextEditorOptions, EditorOptions, IEditorIdentifier, ConfirmResult, IEditorCommandsContext, GroupIdentifier, groupFromContext, CloseDirection } from 'vs/workbench/common/editor';
import { QuickOpenEntryGroup } from 'vs/base/parts/quickopen/browser/quickOpenModel'; import { QuickOpenEntryGroup } from 'vs/base/parts/quickopen/browser/quickOpenModel';
import { EditorQuickOpenEntry, EditorQuickOpenEntryGroup, IEditorQuickOpenEntry, QuickOpenAction } from 'vs/workbench/browser/quickopen'; import { EditorQuickOpenEntry, EditorQuickOpenEntryGroup, IEditorQuickOpenEntry, QuickOpenAction } from 'vs/workbench/browser/quickopen';
...@@ -62,7 +62,7 @@ export class SplitEditorAction extends Action { ...@@ -62,7 +62,7 @@ export class SplitEditorAction extends Action {
// Options // Options
let options: EditorOptions; let options: EditorOptions;
const codeEditor = getCodeEditor(editorToSplit); const codeEditor = getCodeEditor(editorToSplit.getControl());
if (codeEditor) { if (codeEditor) {
options = TextEditorOptions.fromEditor(codeEditor); options = TextEditorOptions.fromEditor(codeEditor);
} else { } else {
...@@ -143,7 +143,7 @@ export class BaseSplitEditorGroupAction extends Action { ...@@ -143,7 +143,7 @@ export class BaseSplitEditorGroupAction extends Action {
// Open editor // Open editor
if (activeEditor) { if (activeEditor) {
let options: EditorOptions; let options: EditorOptions;
const codeEditor = getCodeEditor(group.activeControl); const codeEditor = getCodeEditor(group.activeControl.getControl());
if (codeEditor) { if (codeEditor) {
options = TextEditorOptions.fromEditor(codeEditor); options = TextEditorOptions.fromEditor(codeEditor);
} else { } else {
...@@ -411,7 +411,7 @@ export abstract class BaseFocusSideGroupAction extends Action { ...@@ -411,7 +411,7 @@ export abstract class BaseFocusSideGroupAction extends Action {
// Options // Options
let options: EditorOptions; let options: EditorOptions;
const codeEditor = getCodeEditor(referenceEditor); const codeEditor = getCodeEditor(referenceEditor.getControl());
if (codeEditor) { if (codeEditor) {
options = TextEditorOptions.fromEditor(codeEditor, { pinned: true }); options = TextEditorOptions.fromEditor(codeEditor, { pinned: true });
} else { } else {
......
...@@ -27,7 +27,7 @@ import { IContextKeyService } from 'vs/platform/contextkey/common/contextkey'; ...@@ -27,7 +27,7 @@ import { IContextKeyService } from 'vs/platform/contextkey/common/contextkey';
import { IExtensionService } from 'vs/workbench/services/extensions/common/extensions'; import { IExtensionService } from 'vs/workbench/services/extensions/common/extensions';
import { IStorageService, StorageScope } from 'vs/platform/storage/common/storage'; import { IStorageService, StorageScope } from 'vs/platform/storage/common/storage';
import { IEditorStacksModel, IStacksModelChangeEvent, IEditorGroup, EditorOptions, TextEditorOptions, IEditorIdentifier, EditorInput } from 'vs/workbench/common/editor'; import { IEditorStacksModel, IStacksModelChangeEvent, IEditorGroup, EditorOptions, TextEditorOptions, IEditorIdentifier, EditorInput } from 'vs/workbench/common/editor';
import { getCodeEditor } from 'vs/editor/browser/services/codeEditorService'; import { getCodeEditor } from 'vs/editor/browser/editorBrowser';
import { IThemeService } from 'vs/platform/theme/common/themeService'; import { IThemeService } from 'vs/platform/theme/common/themeService';
import { editorBackground, contrastBorder, activeContrastBorder } from 'vs/platform/theme/common/colorRegistry'; import { editorBackground, contrastBorder, activeContrastBorder } from 'vs/platform/theme/common/colorRegistry';
import { Themable, EDITOR_GROUP_HEADER_TABS_BACKGROUND, EDITOR_GROUP_HEADER_NO_TABS_BACKGROUND, EDITOR_GROUP_BORDER, EDITOR_DRAG_AND_DROP_BACKGROUND, EDITOR_GROUP_HEADER_TABS_BORDER } from 'vs/workbench/common/theme'; import { Themable, EDITOR_GROUP_HEADER_TABS_BACKGROUND, EDITOR_GROUP_HEADER_NO_TABS_BACKGROUND, EDITOR_GROUP_BORDER, EDITOR_DRAG_AND_DROP_BACKGROUND, EDITOR_GROUP_HEADER_TABS_BORDER } from 'vs/workbench/common/theme';
...@@ -1134,7 +1134,7 @@ export class EditorGroupsControl extends Themable implements IEditorGroupsContro ...@@ -1134,7 +1134,7 @@ export class EditorGroupsControl extends Themable implements IEditorGroupsContro
// for th editor to be a text editor and creating the options accordingly if so // for th editor to be a text editor and creating the options accordingly if so
let options = EditorOptions.create({ pinned: true }); let options = EditorOptions.create({ pinned: true });
const activeEditor = $this.editorService.getActiveEditor(); const activeEditor = $this.editorService.getActiveEditor();
const editor = getCodeEditor(activeEditor); const editor = getCodeEditor(activeEditor.getControl());
if (editor && activeEditor.group.id === stacks.positionOfGroup(stacks.getGroup(identifier.groupId)) && identifier.editor.matches(activeEditor.input)) { if (editor && activeEditor.group.id === stacks.positionOfGroup(stacks.getGroup(identifier.groupId)) && identifier.editor.matches(activeEditor.input)) {
options = TextEditorOptions.fromEditor(editor, { pinned: true }); options = TextEditorOptions.fromEditor(editor, { pinned: true });
} }
......
...@@ -15,7 +15,6 @@ import * as arrays from 'vs/base/common/arrays'; ...@@ -15,7 +15,6 @@ import * as arrays from 'vs/base/common/arrays';
import * as types from 'vs/base/common/types'; import * as types from 'vs/base/common/types';
import * as errors from 'vs/base/common/errors'; import * as errors from 'vs/base/common/errors';
import * as objects from 'vs/base/common/objects'; import * as objects from 'vs/base/common/objects';
import { getCodeEditor } from 'vs/editor/browser/services/codeEditorService';
import { toErrorMessage } from 'vs/base/common/errorMessage'; import { toErrorMessage } from 'vs/base/common/errorMessage';
import { Scope as MementoScope } from 'vs/workbench/common/memento'; import { Scope as MementoScope } from 'vs/workbench/common/memento';
import { Part } from 'vs/workbench/browser/part'; import { Part } from 'vs/workbench/browser/part';
...@@ -43,7 +42,7 @@ import { IEnvironmentService } from 'vs/platform/environment/common/environment' ...@@ -43,7 +42,7 @@ import { IEnvironmentService } from 'vs/platform/environment/common/environment'
import { join } from 'vs/base/common/paths'; import { join } from 'vs/base/common/paths';
import { IEditorDescriptor, IEditorRegistry, Extensions as EditorExtensions } from 'vs/workbench/browser/editor'; import { IEditorDescriptor, IEditorRegistry, Extensions as EditorExtensions } from 'vs/workbench/browser/editor';
import { ThrottledEmitter } from 'vs/base/common/async'; import { ThrottledEmitter } from 'vs/base/common/async';
import { isCodeEditor } from 'vs/editor/browser/editorBrowser'; import { isCodeEditor, getCodeEditor } from 'vs/editor/browser/editorBrowser';
import { INotificationService, Severity, INotificationActions } from 'vs/platform/notification/common/notification'; import { INotificationService, Severity, INotificationActions } from 'vs/platform/notification/common/notification';
import { dispose } from 'vs/base/common/lifecycle'; import { dispose } from 'vs/base/common/lifecycle';
...@@ -758,7 +757,7 @@ export class EditorPart extends Part implements IEditorPart, IEditorGroupService ...@@ -758,7 +757,7 @@ export class EditorPart extends Part implements IEditorPart, IEditorGroupService
// for the editor to be a text editor and creating the options accordingly if so // for the editor to be a text editor and creating the options accordingly if so
let options = EditorOptions.create({ pinned: true, index, inactive, preserveFocus }); let options = EditorOptions.create({ pinned: true, index, inactive, preserveFocus });
const activeEditor = this.getActiveEditor(); const activeEditor = this.getActiveEditor();
const codeEditor = getCodeEditor(activeEditor); const codeEditor = getCodeEditor(activeEditor.getControl());
if (codeEditor && activeEditor.group === this.stacks.positionOfGroup(fromGroup) && input.matches(activeEditor.input)) { if (codeEditor && activeEditor.group === this.stacks.positionOfGroup(fromGroup) && input.matches(activeEditor.input)) {
options = TextEditorOptions.fromEditor(codeEditor, { pinned: true, index, inactive, preserveFocus }); options = TextEditorOptions.fromEditor(codeEditor, { pinned: true, index, inactive, preserveFocus });
} }
......
...@@ -42,7 +42,6 @@ import { TabFocus } from 'vs/editor/common/config/commonEditorConfig'; ...@@ -42,7 +42,6 @@ import { TabFocus } from 'vs/editor/common/config/commonEditorConfig';
import { ICommandService } from 'vs/platform/commands/common/commands'; import { ICommandService } from 'vs/platform/commands/common/commands';
import { IExtensionGalleryService } from 'vs/platform/extensionManagement/common/extensionManagement'; import { IExtensionGalleryService } from 'vs/platform/extensionManagement/common/extensionManagement';
import { ITextFileService } from 'vs/workbench/services/textfile/common/textfiles'; import { ITextFileService } from 'vs/workbench/services/textfile/common/textfiles';
import { getCodeEditor as getEditorWidget } from 'vs/editor/browser/services/codeEditorService';
import { ICursorPositionChangedEvent } from 'vs/editor/common/controller/cursorEvents'; import { ICursorPositionChangedEvent } from 'vs/editor/common/controller/cursorEvents';
import { IConfigurationChangedEvent, IEditorOptions } from 'vs/editor/common/config/editorOptions'; import { IConfigurationChangedEvent, IEditorOptions } from 'vs/editor/common/config/editorOptions';
import { ITextResourceConfigurationService } from 'vs/editor/common/services/resourceConfiguration'; import { ITextResourceConfigurationService } from 'vs/editor/common/services/resourceConfiguration';
...@@ -52,7 +51,7 @@ import { attachButtonStyler } from 'vs/platform/theme/common/styler'; ...@@ -52,7 +51,7 @@ import { attachButtonStyler } from 'vs/platform/theme/common/styler';
import { widgetShadow, editorWidgetBackground, foreground, darken, contrastBorder } from 'vs/platform/theme/common/colorRegistry'; import { widgetShadow, editorWidgetBackground, foreground, darken, contrastBorder } from 'vs/platform/theme/common/colorRegistry';
import { ConfigurationTarget } from 'vs/platform/configuration/common/configuration'; import { ConfigurationTarget } from 'vs/platform/configuration/common/configuration';
import { deepClone } from 'vs/base/common/objects'; import { deepClone } from 'vs/base/common/objects';
import { ICodeEditor, isCodeEditor, isDiffEditor } from 'vs/editor/browser/editorBrowser'; import { ICodeEditor, isCodeEditor, isDiffEditor, getCodeEditor } from 'vs/editor/browser/editorBrowser';
import { Button } from 'vs/base/browser/ui/button/button'; import { Button } from 'vs/base/browser/ui/button/button';
import { Schemas } from 'vs/base/common/network'; import { Schemas } from 'vs/base/common/network';
import { IAnchor } from 'vs/base/browser/ui/contextview/contextview'; import { IAnchor } from 'vs/base/browser/ui/contextview/contextview';
...@@ -545,7 +544,7 @@ export class EditorStatus implements IStatusbarItem { ...@@ -545,7 +544,7 @@ export class EditorStatus implements IStatusbarItem {
private updateStatusBar(): void { private updateStatusBar(): void {
const activeControl = this.editorService.activeControl; const activeControl = this.editorService.activeControl;
const activeCodeEditor = getEditorWidget(activeControl); const activeCodeEditor = activeControl ? getCodeEditor(activeControl.getControl()) : void 0;
// Update all states // Update all states
this.onScreenReaderModeChange(activeCodeEditor); this.onScreenReaderModeChange(activeCodeEditor);
...@@ -748,7 +747,7 @@ export class EditorStatus implements IStatusbarItem { ...@@ -748,7 +747,7 @@ export class EditorStatus implements IStatusbarItem {
const info: StateDelta = { encoding: null }; const info: StateDelta = { encoding: null };
// We only support text based editors // We only support text based editors
if (getEditorWidget(e)) { if (isCodeEditor(e.getControl()) || isDiffEditor(e.getControl())) {
const encodingSupport: IEncodingSupport = toEditorWithEncodingSupport(e.input); const encodingSupport: IEncodingSupport = toEditorWithEncodingSupport(e.input);
if (encodingSupport) { if (encodingSupport) {
const rawEncoding = encodingSupport.getEncoding(); const rawEncoding = encodingSupport.getEncoding();
...@@ -796,7 +795,7 @@ function isWritableCodeEditor(codeEditor: ICodeEditor): boolean { ...@@ -796,7 +795,7 @@ function isWritableCodeEditor(codeEditor: ICodeEditor): boolean {
} }
function isWritableBaseEditor(e: IBaseEditor): boolean { function isWritableBaseEditor(e: IBaseEditor): boolean {
return isWritableCodeEditor(getEditorWidget(e)); return e && isWritableCodeEditor(getCodeEditor(e.getControl()));
} }
export class ShowLanguageExtensionsAction extends Action { export class ShowLanguageExtensionsAction extends Action {
...@@ -839,14 +838,13 @@ export class ChangeModeAction extends Action { ...@@ -839,14 +838,13 @@ export class ChangeModeAction extends Action {
} }
public run(): TPromise<any> { public run(): TPromise<any> {
let activeControl = this.editorService.activeControl; const activeCodeEditor = getCodeEditor(this.editorService.activeTextEditorControl);
const activeCodeEditor = getEditorWidget(activeControl);
if (!activeCodeEditor) { if (!activeCodeEditor) {
return this.quickOpenService.pick([{ label: nls.localize('noEditor', "No text editor active at this time") }]); return this.quickOpenService.pick([{ label: nls.localize('noEditor', "No text editor active at this time") }]);
} }
const textModel = activeCodeEditor.getModel(); const textModel = activeCodeEditor.getModel();
const resource = toResource(activeControl.input, { supportSideBySide: true }); const resource = toResource(this.editorService.activeEditor, { supportSideBySide: true });
let hasLanguageSupport = !!resource; let hasLanguageSupport = !!resource;
if (resource.scheme === Schemas.untitled && !this.untitledEditorService.hasAssociatedFilePath(resource)) { if (resource.scheme === Schemas.untitled && !this.untitledEditorService.hasAssociatedFilePath(resource)) {
...@@ -944,7 +942,7 @@ export class ChangeModeAction extends Action { ...@@ -944,7 +942,7 @@ export class ChangeModeAction extends Action {
} }
// Change mode for active editor // Change mode for active editor
activeControl = this.editorService.activeControl; const activeEditor = this.editorService.activeEditor;
const codeOrDiffEditor = this.editorService.activeTextEditorControl; const codeOrDiffEditor = this.editorService.activeTextEditorControl;
const models: ITextModel[] = []; const models: ITextModel[] = [];
if (isCodeEditor(codeOrDiffEditor)) { if (isCodeEditor(codeOrDiffEditor)) {
...@@ -967,7 +965,7 @@ export class ChangeModeAction extends Action { ...@@ -967,7 +965,7 @@ export class ChangeModeAction extends Action {
// Find mode // Find mode
let mode: TPromise<IMode>; let mode: TPromise<IMode>;
if (pick === autoDetectMode) { if (pick === autoDetectMode) {
mode = this.modeService.getOrCreateModeByFilenameOrFirstLine(toResource(activeControl.input, { supportSideBySide: true }).fsPath, textModel.getLineContent(1)); mode = this.modeService.getOrCreateModeByFilenameOrFirstLine(toResource(activeEditor, { supportSideBySide: true }).fsPath, textModel.getLineContent(1));
} else { } else {
mode = this.modeService.getOrCreateModeByLanguageName(pick.label); mode = this.modeService.getOrCreateModeByLanguageName(pick.label);
} }
...@@ -1047,11 +1045,11 @@ class ChangeIndentationAction extends Action { ...@@ -1047,11 +1045,11 @@ class ChangeIndentationAction extends Action {
} }
public run(): TPromise<any> { public run(): TPromise<any> {
const activeControl = this.editorService.activeControl; const activeCodeEditor = getCodeEditor(this.editorService.activeTextEditorControl);
const activeCodeEditor = getEditorWidget(activeControl);
if (!activeCodeEditor) { if (!activeCodeEditor) {
return this.quickOpenService.pick([{ label: nls.localize('noEditor', "No text editor active at this time") }]); return this.quickOpenService.pick([{ label: nls.localize('noEditor', "No text editor active at this time") }]);
} }
if (!isWritableCodeEditor(activeCodeEditor)) { if (!isWritableCodeEditor(activeCodeEditor)) {
return this.quickOpenService.pick([{ label: nls.localize('noWritableCodeEditor', "The active code editor is read-only.") }]); return this.quickOpenService.pick([{ label: nls.localize('noWritableCodeEditor', "The active code editor is read-only.") }]);
} }
...@@ -1097,8 +1095,7 @@ export class ChangeEOLAction extends Action { ...@@ -1097,8 +1095,7 @@ export class ChangeEOLAction extends Action {
} }
public run(): TPromise<any> { public run(): TPromise<any> {
let activeControl = this.editorService.activeControl; const activeCodeEditor = getCodeEditor(this.editorService.activeTextEditorControl);
const activeCodeEditor = getEditorWidget(activeControl);
if (!activeCodeEditor) { if (!activeCodeEditor) {
return this.quickOpenService.pick([{ label: nls.localize('noEditor', "No text editor active at this time") }]); return this.quickOpenService.pick([{ label: nls.localize('noEditor', "No text editor active at this time") }]);
} }
...@@ -1118,8 +1115,7 @@ export class ChangeEOLAction extends Action { ...@@ -1118,8 +1115,7 @@ export class ChangeEOLAction extends Action {
return this.quickOpenService.pick(EOLOptions, { placeHolder: nls.localize('pickEndOfLine', "Select End of Line Sequence"), autoFocus: { autoFocusIndex: selectedIndex } }).then(eol => { return this.quickOpenService.pick(EOLOptions, { placeHolder: nls.localize('pickEndOfLine', "Select End of Line Sequence"), autoFocus: { autoFocusIndex: selectedIndex } }).then(eol => {
if (eol) { if (eol) {
activeControl = this.editorService.activeControl; const activeCodeEditor = getCodeEditor(this.editorService.activeTextEditorControl);
const activeCodeEditor = getEditorWidget(activeControl);
if (activeCodeEditor && isWritableCodeEditor(activeCodeEditor)) { if (activeCodeEditor && isWritableCodeEditor(activeCodeEditor)) {
const textModel = activeCodeEditor.getModel(); const textModel = activeCodeEditor.getModel();
textModel.pushEOL(eol.eol); textModel.pushEOL(eol.eol);
...@@ -1146,11 +1142,11 @@ export class ChangeEncodingAction extends Action { ...@@ -1146,11 +1142,11 @@ export class ChangeEncodingAction extends Action {
} }
public run(): TPromise<any> { public run(): TPromise<any> {
let activeControl = this.editorService.activeControl; if (!getCodeEditor(this.editorService.activeTextEditorControl)) {
if (!getEditorWidget(activeControl) || !activeControl.input) {
return this.quickOpenService.pick([{ label: nls.localize('noEditor', "No text editor active at this time") }]); return this.quickOpenService.pick([{ label: nls.localize('noEditor', "No text editor active at this time") }]);
} }
let activeControl = this.editorService.activeControl;
let encodingSupport: IEncodingSupport = toEditorWithEncodingSupport(activeControl.input); let encodingSupport: IEncodingSupport = toEditorWithEncodingSupport(activeControl.input);
if (!encodingSupport) { if (!encodingSupport) {
return this.quickOpenService.pick([{ label: nls.localize('noFileEditor', "No file active at this time") }]); return this.quickOpenService.pick([{ label: nls.localize('noFileEditor', "No file active at this time") }]);
......
...@@ -20,11 +20,10 @@ import { IInstantiationService } from 'vs/platform/instantiation/common/instanti ...@@ -20,11 +20,10 @@ import { IInstantiationService } from 'vs/platform/instantiation/common/instanti
import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry';
import { IThemeService } from 'vs/platform/theme/common/themeService'; import { IThemeService } from 'vs/platform/theme/common/themeService';
import { Scope } from 'vs/workbench/common/memento'; import { Scope } from 'vs/workbench/common/memento';
import { getCodeEditor } from 'vs/editor/browser/services/codeEditorService';
import { ITextFileService, SaveReason, AutoSaveMode } from 'vs/workbench/services/textfile/common/textfiles'; import { ITextFileService, SaveReason, AutoSaveMode } from 'vs/workbench/services/textfile/common/textfiles';
import { ITextResourceConfigurationService } from 'vs/editor/common/services/resourceConfiguration'; import { ITextResourceConfigurationService } from 'vs/editor/common/services/resourceConfiguration';
import { IEditorOptions } from 'vs/editor/common/config/editorOptions'; import { IEditorOptions } from 'vs/editor/common/config/editorOptions';
import { isDiffEditor, isCodeEditor, ICodeEditor } from 'vs/editor/browser/editorBrowser'; import { isDiffEditor, isCodeEditor, ICodeEditor, getCodeEditor } from 'vs/editor/browser/editorBrowser';
import { INextEditorGroupsService, INextEditorGroup } from 'vs/workbench/services/group/common/nextEditorGroupsService'; import { INextEditorGroupsService, INextEditorGroup } from 'vs/workbench/services/group/common/nextEditorGroupsService';
import { CancellationToken } from 'vs/base/common/cancellation'; import { CancellationToken } from 'vs/base/common/cancellation';
import { INextEditorService } from 'vs/workbench/services/editor/common/nextEditorService'; import { INextEditorService } from 'vs/workbench/services/editor/common/nextEditorService';
...@@ -135,7 +134,7 @@ export abstract class BaseTextEditor extends BaseEditor { ...@@ -135,7 +134,7 @@ export abstract class BaseTextEditor extends BaseEditor {
this.editorControl = this.createEditorControl(parent, this.computeConfiguration(this.configurationService.getValue<IEditorConfiguration>(this.getResource()))); this.editorControl = this.createEditorControl(parent, this.computeConfiguration(this.configurationService.getValue<IEditorConfiguration>(this.getResource())));
// Model & Language changes // Model & Language changes
const codeEditor = getCodeEditor(this); const codeEditor = getCodeEditor(this.editorControl);
if (codeEditor) { if (codeEditor) {
this.toUnbind.push(codeEditor.onDidChangeModelLanguage(e => this.updateEditorConfiguration())); this.toUnbind.push(codeEditor.onDidChangeModelLanguage(e => this.updateEditorConfiguration()));
this.toUnbind.push(codeEditor.onDidChangeModel(e => this.updateEditorConfiguration())); this.toUnbind.push(codeEditor.onDidChangeModel(e => this.updateEditorConfiguration()));
...@@ -294,7 +293,7 @@ export abstract class BaseTextEditor extends BaseEditor { ...@@ -294,7 +293,7 @@ export abstract class BaseTextEditor extends BaseEditor {
} }
protected getResource(): URI { protected getResource(): URI {
const codeEditor = getCodeEditor(this); const codeEditor = getCodeEditor(this.editorControl);
if (codeEditor) { if (codeEditor) {
const model = codeEditor.getModel(); const model = codeEditor.getModel();
if (model) { if (model) {
......
...@@ -15,7 +15,7 @@ import { Event } from 'vs/base/common/event'; ...@@ -15,7 +15,7 @@ import { Event } from 'vs/base/common/event';
import { assign } from 'vs/base/common/objects'; import { assign } from 'vs/base/common/objects';
import { IConfigurationChangeEvent } from 'vs/platform/configuration/common/configuration'; import { IConfigurationChangeEvent } from 'vs/platform/configuration/common/configuration';
import { ISerializableView } from 'vs/base/browser/ui/grid/grid'; import { ISerializableView } from 'vs/base/browser/ui/grid/grid';
import { getCodeEditor } from 'vs/editor/browser/services/codeEditorService'; import { getCodeEditor } from 'vs/editor/browser/editorBrowser';
export const EDITOR_TITLE_HEIGHT = 35; export const EDITOR_TITLE_HEIGHT = 35;
...@@ -101,10 +101,10 @@ export interface INextEditorGroupView extends IDisposable, ISerializableView, IN ...@@ -101,10 +101,10 @@ export interface INextEditorGroupView extends IDisposable, ISerializableView, IN
} }
export function getActiveTextEditorOptions(group: INextEditorGroup, expectedActiveEditor?: IEditorInput, presetOptions?: EditorOptions): EditorOptions { export function getActiveTextEditorOptions(group: INextEditorGroup, expectedActiveEditor?: IEditorInput, presetOptions?: EditorOptions): EditorOptions {
const activeGroupControl = getCodeEditor(group.activeControl); const activeGroupCodeEditor = group.activeControl ? getCodeEditor(group.activeControl.getControl()) : void 0;
if (activeGroupControl) { if (activeGroupCodeEditor) {
if (!expectedActiveEditor || expectedActiveEditor.matches(group.activeEditor)) { if (!expectedActiveEditor || expectedActiveEditor.matches(group.activeEditor)) {
return TextEditorOptions.fromEditor(activeGroupControl, presetOptions); return TextEditorOptions.fromEditor(activeGroupCodeEditor, presetOptions);
} }
} }
......
...@@ -30,7 +30,7 @@ import { IMenuService, MenuId, IMenu, ExecuteCommandAction } from 'vs/platform/a ...@@ -30,7 +30,7 @@ import { IMenuService, MenuId, IMenu, ExecuteCommandAction } from 'vs/platform/a
import { ResourceContextKey } from 'vs/workbench/common/resources'; import { ResourceContextKey } from 'vs/workbench/common/resources';
import { IThemeService, registerThemingParticipant, ITheme, ICssStyleCollector } from 'vs/platform/theme/common/themeService'; import { IThemeService, registerThemingParticipant, ITheme, ICssStyleCollector } from 'vs/platform/theme/common/themeService';
import { Themable } from 'vs/workbench/common/theme'; import { Themable } from 'vs/workbench/common/theme';
import { isDiffEditor, isCodeEditor } from 'vs/editor/browser/editorBrowser'; import { getCodeEditor } from 'vs/editor/browser/editorBrowser';
import { INotificationService } from 'vs/platform/notification/common/notification'; import { INotificationService } from 'vs/platform/notification/common/notification';
import { Dimension, addDisposableListener, EventType } from 'vs/base/browser/dom'; import { Dimension, addDisposableListener, EventType } from 'vs/base/browser/dom';
import { IExtensionService } from 'vs/workbench/services/extensions/common/extensions'; import { IExtensionService } from 'vs/workbench/services/extensions/common/extensions';
...@@ -169,8 +169,7 @@ export abstract class NextTitleControl extends Themable { ...@@ -169,8 +169,7 @@ export abstract class NextTitleControl extends Themable {
// Contributed Actions // Contributed Actions
this.disposeOnEditorActions = dispose(this.disposeOnEditorActions); this.disposeOnEditorActions = dispose(this.disposeOnEditorActions);
const widget = activeControl.getControl(); const codeEditor = getCodeEditor(activeControl.getControl());
const codeEditor = isCodeEditor(widget) && widget || isDiffEditor(widget) && widget.getModifiedEditor();
const scopedContextKeyService = codeEditor && codeEditor.invokeWithinContext(accessor => accessor.get(IContextKeyService)) || this.contextKeyService; const scopedContextKeyService = codeEditor && codeEditor.invokeWithinContext(accessor => accessor.get(IContextKeyService)) || this.contextKeyService;
const titleBarMenu = this.menuService.createMenu(MenuId.EditorTitle, scopedContextKeyService); const titleBarMenu = this.menuService.createMenu(MenuId.EditorTitle, scopedContextKeyService);
this.disposeOnEditorActions.push(titleBarMenu, titleBarMenu.onDidChange(() => this.updateEditorActionsToolbar())); this.disposeOnEditorActions.push(titleBarMenu, titleBarMenu.onDidChange(() => this.updateEditorActionsToolbar()));
......
...@@ -28,7 +28,7 @@ import { IResourceInput } from 'vs/platform/editor/common/editor'; ...@@ -28,7 +28,7 @@ import { IResourceInput } from 'vs/platform/editor/common/editor';
import { IFileService } from 'vs/platform/files/common/files'; import { IFileService } from 'vs/platform/files/common/files';
import { IUntitledEditorService } from 'vs/workbench/services/untitled/common/untitledEditorService'; import { IUntitledEditorService } from 'vs/workbench/services/untitled/common/untitledEditorService';
import { IEditorViewState } from 'vs/editor/common/editorCommon'; import { IEditorViewState } from 'vs/editor/common/editorCommon';
import { getCodeEditor } from 'vs/editor/browser/services/codeEditorService'; import { getCodeEditor } from 'vs/editor/browser/editorBrowser';
import { KeybindingsRegistry } from 'vs/platform/keybinding/common/keybindingsRegistry'; import { KeybindingsRegistry } from 'vs/platform/keybinding/common/keybindingsRegistry';
import { KeyMod, KeyCode, KeyChord } from 'vs/base/common/keyCodes'; import { KeyMod, KeyCode, KeyChord } from 'vs/base/common/keyCodes';
import { isWindows, isMacintosh } from 'vs/base/common/platform'; import { isWindows, isMacintosh } from 'vs/base/common/platform';
...@@ -97,12 +97,11 @@ function save(resource: URI, isSaveAs: boolean, editorService: INextEditorServic ...@@ -97,12 +97,11 @@ function save(resource: URI, isSaveAs: boolean, editorService: INextEditorServic
} }
let viewStateOfSource: IEditorViewState; let viewStateOfSource: IEditorViewState;
const activeEditor = editorService.activeControl; const activeCodeEditor = getCodeEditor(editorService.activeTextEditorControl);
const editor = getCodeEditor(activeEditor); if (activeCodeEditor) {
if (editor) { const activeResource = toResource(editorService.activeEditor, { supportSideBySide: true });
const activeResource = toResource(activeEditor.input, { supportSideBySide: true });
if (activeResource && (fileService.canHandleResource(activeResource) || resource.scheme === Schemas.untitled) && activeResource.toString() === resource.toString()) { if (activeResource && (fileService.canHandleResource(activeResource) || resource.scheme === Schemas.untitled) && activeResource.toString() === resource.toString()) {
viewStateOfSource = editor.saveViewState(); viewStateOfSource = activeCodeEditor.saveViewState();
} }
} }
......
...@@ -24,7 +24,7 @@ import { once, debounceEvent } from 'vs/base/common/event'; ...@@ -24,7 +24,7 @@ import { once, debounceEvent } from 'vs/base/common/event';
import { IConfigurationService, IConfigurationChangeEvent } from 'vs/platform/configuration/common/configuration'; import { IConfigurationService, IConfigurationChangeEvent } from 'vs/platform/configuration/common/configuration';
import { INextEditorGroupsService, INextEditorGroup } from 'vs/workbench/services/group/common/nextEditorGroupsService'; import { INextEditorGroupsService, INextEditorGroup } from 'vs/workbench/services/group/common/nextEditorGroupsService';
import { IWindowsService } from 'vs/platform/windows/common/windows'; import { IWindowsService } from 'vs/platform/windows/common/windows';
import { getCodeEditor } from 'vs/editor/browser/services/codeEditorService'; import { getCodeEditor } from 'vs/editor/browser/editorBrowser';
import { getExcludes, ISearchConfiguration } from 'vs/platform/search/common/search'; import { getExcludes, ISearchConfiguration } from 'vs/platform/search/common/search';
import { IExpression } from 'vs/base/common/glob'; import { IExpression } from 'vs/base/common/glob';
import { ICursorPositionChangedEvent } from 'vs/editor/common/controller/cursorEvents'; import { ICursorPositionChangedEvent } from 'vs/editor/common/controller/cursorEvents';
...@@ -185,7 +185,7 @@ export class HistoryService implements IHistoryService { ...@@ -185,7 +185,7 @@ export class HistoryService implements IHistoryService {
this.handleActiveEditorChange(activeControl); this.handleActiveEditorChange(activeControl);
// Apply listener for selection changes if this is a text editor // Apply listener for selection changes if this is a text editor
const control = getCodeEditor(activeControl); const control = getCodeEditor(this.editorService.activeTextEditorControl);
if (control) { if (control) {
// Debounce the event with a timeout of 0ms so that multiple calls to // Debounce the event with a timeout of 0ms so that multiple calls to
...@@ -441,16 +441,16 @@ export class HistoryService implements IHistoryService { ...@@ -441,16 +441,16 @@ export class HistoryService implements IHistoryService {
this.history = this.history.filter(e => !this.matches(arg1, e)); this.history = this.history.filter(e => !this.matches(arg1, e));
} }
private handleEditorEventInStack(editor: IBaseEditor, event?: ICursorPositionChangedEvent): void { private handleEditorEventInStack(control: IBaseEditor, event?: ICursorPositionChangedEvent): void {
const control = getCodeEditor(editor); const codeEditor = control ? getCodeEditor(control.getControl()) : void 0;
// treat editor changes that happen as part of stack navigation specially // treat editor changes that happen as part of stack navigation specially
// we do not want to add a new stack entry as a matter of navigating the // we do not want to add a new stack entry as a matter of navigating the
// stack but we need to keep our currentTextEditorState up to date with // stack but we need to keep our currentTextEditorState up to date with
// the navigtion that occurs. // the navigtion that occurs.
if (this.navigatingInStack) { if (this.navigatingInStack) {
if (control && editor.input) { if (codeEditor && control.input) {
this.currentTextEditorState = new TextEditorState(editor.input, control.getSelection()); this.currentTextEditorState = new TextEditorState(control.input, codeEditor.getSelection());
} else { } else {
this.currentTextEditorState = null; // we navigated to a non text editor this.currentTextEditorState = null; // we navigated to a non text editor
} }
...@@ -460,16 +460,16 @@ export class HistoryService implements IHistoryService { ...@@ -460,16 +460,16 @@ export class HistoryService implements IHistoryService {
else { else {
// navigation inside text editor // navigation inside text editor
if (control && editor.input) { if (codeEditor && control.input) {
this.handleTextEditorEvent(editor, control, event); this.handleTextEditorEvent(control, codeEditor, event);
} }
// navigation to non-text editor // navigation to non-text editor
else { else {
this.currentTextEditorState = null; // at this time we have no active text editor view state this.currentTextEditorState = null; // at this time we have no active text editor view state
if (editor && editor.input) { if (control && control.input) {
this.handleNonTextEditorEvent(editor); this.handleNonTextEditorEvent(control);
} }
} }
} }
......
...@@ -24,7 +24,6 @@ import { SettingsEditorModel, DefaultSettingsEditorModel, DefaultKeybindingsEdit ...@@ -24,7 +24,6 @@ import { SettingsEditorModel, DefaultSettingsEditorModel, DefaultKeybindingsEdit
import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry';
import { DefaultPreferencesEditorInput, PreferencesEditorInput, KeybindingsEditorInput, SettingsEditor2Input } from 'vs/workbench/services/preferences/common/preferencesEditorInput'; import { DefaultPreferencesEditorInput, PreferencesEditorInput, KeybindingsEditorInput, SettingsEditor2Input } from 'vs/workbench/services/preferences/common/preferencesEditorInput';
import { ITextModelService } from 'vs/editor/common/services/resolverService'; import { ITextModelService } from 'vs/editor/common/services/resolverService';
import { getCodeEditor } from 'vs/editor/browser/services/codeEditorService';
import { EditOperation } from 'vs/editor/common/core/editOperation'; import { EditOperation } from 'vs/editor/common/core/editOperation';
import { Position, IPosition } from 'vs/editor/common/core/position'; import { Position, IPosition } from 'vs/editor/common/core/position';
import { IKeybindingService } from 'vs/platform/keybinding/common/keybinding'; import { IKeybindingService } from 'vs/platform/keybinding/common/keybinding';
...@@ -33,7 +32,7 @@ import { IJSONEditingService } from 'vs/workbench/services/configuration/common/ ...@@ -33,7 +32,7 @@ import { IJSONEditingService } from 'vs/workbench/services/configuration/common/
import { ConfigurationTarget } from 'vs/platform/configuration/common/configuration'; import { ConfigurationTarget } from 'vs/platform/configuration/common/configuration';
import { IModeService } from 'vs/editor/common/services/modeService'; import { IModeService } from 'vs/editor/common/services/modeService';
import { parse } from 'vs/base/common/json'; import { parse } from 'vs/base/common/json';
import { ICodeEditor } from 'vs/editor/browser/editorBrowser'; import { ICodeEditor, getCodeEditor } from 'vs/editor/browser/editorBrowser';
import { INotificationService } from 'vs/platform/notification/common/notification'; import { INotificationService } from 'vs/platform/notification/common/notification';
import { assign } from 'vs/base/common/objects'; import { assign } from 'vs/base/common/objects';
import { INextEditorService, SIDE_GROUP } from 'vs/workbench/services/editor/common/nextEditorService'; import { INextEditorService, SIDE_GROUP } from 'vs/workbench/services/editor/common/nextEditorService';
...@@ -237,12 +236,14 @@ export class PreferencesService extends Disposable implements IPreferencesServic ...@@ -237,12 +236,14 @@ export class PreferencesService extends Disposable implements IPreferencesServic
configureSettingsForLanguage(language: string): void { configureSettingsForLanguage(language: string): void {
this.openGlobalSettings() this.openGlobalSettings()
.then(editor => { .then(editor => {
const codeEditor = getCodeEditor(editor); const codeEditor = getCodeEditor(editor.getControl());
this.getPosition(language, codeEditor) if (codeEditor) {
.then(position => { this.getPosition(language, codeEditor)
codeEditor.setPosition(position); .then(position => {
codeEditor.focus(); codeEditor.setPosition(position);
}); codeEditor.focus();
});
}
}); });
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册