提交 7f05ebf5 编写于 作者: S sverg1 提交者: Matt Bierner

customEditor toggle and save/preview keybinds (#86505)

* customEditor toggle and save/preview keybinds

* travis ci

* removed save command; toggle replaces current tab

* removed travis ci; use vscode ci checks

* export default id and using replaceEditors
上级 ac397560
......@@ -12,15 +12,17 @@ import * as nls from 'vs/nls';
import { MenuId, MenuRegistry } from 'vs/platform/actions/common/actions';
import { ContextKeyExpr } from 'vs/platform/contextkey/common/contextkey';
import { InputFocusedContextKey } from 'vs/platform/contextkey/common/contextkeys';
import { ServicesAccessor } from 'vs/platform/instantiation/common/instantiation';
import { ServicesAccessor, IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
import { KeybindingsRegistry, KeybindingWeight } from 'vs/platform/keybinding/common/keybindingsRegistry';
import { IListService } from 'vs/platform/list/browser/listService';
import { IEditorCommandsContext } from 'vs/workbench/common/editor';
import { IEditorCommandsContext, IEditorInput } from 'vs/workbench/common/editor';
import { CONTEXT_FOCUSED_CUSTOM_EDITOR_IS_EDITABLE, CONTEXT_HAS_CUSTOM_EDITORS, ICustomEditorService } from 'vs/workbench/contrib/customEditor/common/customEditor';
import { getMultiSelectedResources } from 'vs/workbench/contrib/files/browser/files';
import { IEditorGroup, IEditorGroupsService } from 'vs/workbench/services/editor/common/editorGroupsService';
import { IEditorService } from 'vs/workbench/services/editor/common/editorService';
import { IExplorerService } from 'vs/workbench/contrib/files/common/files';
import { defaultEditorId } from 'vs/workbench/contrib/customEditor/browser/customEditors';
import { FileEditorInput } from 'vs/workbench/contrib/files/common/editors/fileEditorInput';
const viewCategory = nls.localize('viewCategory', "View");
......@@ -172,3 +174,62 @@ MenuRegistry.appendMenuItem(MenuId.CommandPalette, {
model.redo();
}
}).register();
(new class ToggleCustomEditorCommand extends Command {
public static readonly ID = 'editor.action.customEditor.toggle';
constructor() {
super({
id: ToggleCustomEditorCommand.ID,
precondition: CONTEXT_HAS_CUSTOM_EDITORS,
});
}
public runCommand(accessor: ServicesAccessor): void {
const editorService = accessor.get<IEditorService>(IEditorService);
const activeControl = editorService.activeControl;
if (!activeControl) {
return;
}
const activeGroup = activeControl.group;
const activeEditor = activeControl.input;
if (!activeEditor) {
return;
}
const targetResource = activeEditor.getResource();
if (!targetResource) {
return;
}
const customEditorService = accessor.get<ICustomEditorService>(ICustomEditorService);
const activeCustomEditor = customEditorService.activeCustomEditor;
let toggleView = defaultEditorId;
if (!activeCustomEditor) {
const viewIDs = customEditorService.getContributedCustomEditors(targetResource);
if (viewIDs && viewIDs.length) {
toggleView = viewIDs[0].id;
}
else {
return;
}
}
let replInput: IEditorInput;
if (toggleView === defaultEditorId) {
const instantiationService = accessor.get<IInstantiationService>(IInstantiationService);
replInput = instantiationService.createInstance(FileEditorInput, targetResource, undefined, undefined);
}
else {
replInput = customEditorService.createInput(targetResource, toggleView, activeGroup);
}
editorService.replaceEditors([{
editor: activeEditor,
replacement: replInput,
}], activeGroup);
}
}).register();
......@@ -29,7 +29,7 @@ import { IEditorGroup } from 'vs/workbench/services/editor/common/editorGroupsSe
import { IEditorService, IOpenEditorOverride } from 'vs/workbench/services/editor/common/editorService';
import { IWorkingCopyService } from 'vs/workbench/services/workingCopy/common/workingCopyService';
import { CustomFileEditorInput } from './customEditorInput';
const defaultEditorId = 'default';
export const defaultEditorId = 'default';
const defaultEditorInfo = new CustomEditorInfo({
id: defaultEditorId,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册