提交 1d61d47a 编写于 作者: R rebornix

Move Open In Terminal registration and config to File part

上级 5ed8b590
......@@ -11,9 +11,9 @@ import baseplatform = require('vs/base/common/platform');
import { IAction, Action } from 'vs/base/common/actions';
import { IWorkbenchActionRegistry, Extensions as ActionExtensions } from 'vs/workbench/common/actionRegistry';
import paths = require('vs/base/common/paths');
import { Scope, IActionBarRegistry, Extensions as ActionBarExtensions, ActionBarContributor } from 'vs/workbench/browser/actions';
import { ActionBarContributor } from 'vs/workbench/browser/actions';
import uri from 'vs/base/common/uri';
import { explorerItemToFileResource } from 'vs/workbench/parts/files/common/files';
import { explorerItemToFileResource, IFilesConfiguration } from 'vs/workbench/parts/files/common/files';
import { IWorkspaceContextService } from 'vs/platform/workspace/common/workspace';
import { ITerminalService } from 'vs/workbench/parts/execution/common/execution';
import { ITerminalService as IIntegratedTerminalService, KEYBINDING_CONTEXT_TERMINAL_NOT_FOCUSED } from 'vs/workbench/parts/terminal/common/terminal';
......@@ -23,50 +23,8 @@ import { IInstantiationService } from 'vs/platform/instantiation/common/instanti
import { IWorkbenchEditorService } from 'vs/workbench/services/editor/common/editorService';
import { toResource } from 'vs/workbench/common/editor';
import { KeyMod, KeyCode } from 'vs/base/common/keyCodes';
import { Extensions, IConfigurationRegistry } from 'vs/platform/configuration/common/configurationRegistry';
import { ITerminalConfiguration, DEFAULT_TERMINAL_WINDOWS, DEFAULT_TERMINAL_LINUX_READY, DEFAULT_TERMINAL_OSX } from 'vs/workbench/parts/execution/electron-browser/terminal';
import { IHistoryService } from 'vs/workbench/services/history/common/history';
DEFAULT_TERMINAL_LINUX_READY.then(defaultTerminalLinux => {
let configurationRegistry = <IConfigurationRegistry>Registry.as(Extensions.Configuration);
configurationRegistry.registerConfiguration({
'id': 'externalTerminal',
'order': 100,
'title': nls.localize('terminalConfigurationTitle', "External Terminal"),
'type': 'object',
'properties': {
'terminal.terminalKind': {
'type': 'string',
'enum': [
'external',
'integrated'
],
'description': nls.localize('terminal.terminalKind', "Customizes what kind of terminal to launch."),
'default': 'external',
'isExecutable': false
},
'terminal.external.windowsExec': {
'type': 'string',
'description': nls.localize('terminal.external.windowsExec', "Customizes which terminal to run on Windows."),
'default': DEFAULT_TERMINAL_WINDOWS,
'isExecutable': true
},
'terminal.external.osxExec': {
'type': 'string',
'description': nls.localize('terminal.external.osxExec', "Customizes which terminal application to run on OS X."),
'default': DEFAULT_TERMINAL_OSX,
'isExecutable': true
},
'terminal.external.linuxExec': {
'type': 'string',
'description': nls.localize('terminal.external.linuxExec', "Customizes which terminal to run on Linux."),
'default': defaultTerminalLinux,
'isExecutable': true
}
}
});
});
export abstract class AbstarctOpenInTerminalAction extends Action {
private resource: uri;
......@@ -138,7 +96,7 @@ export class OpenConsoleAction extends AbstarctOpenInTerminalAction {
export class OpenIntegratedTerminalAction extends AbstarctOpenInTerminalAction {
public static ID = 'workbench.action.terminal.openFolderInIntegratedTerminal';
public static Label = nls.localize('scopedConsoleActionMacLinux', "Open in Terminal");
public static Label = nls.localize('openFolderInIntegratedTerminal', "Open in Integrated Terminal");
constructor(
id: string,
......@@ -165,7 +123,7 @@ export class OpenIntegratedTerminalAction extends AbstarctOpenInTerminalAction {
}
}
class ExplorerViewerActionContributor extends ActionBarContributor {
export class ExplorerViewerActionContributor extends ActionBarContributor {
constructor(
@IInstantiationService private instantiationService: IInstantiationService,
......@@ -187,8 +145,8 @@ class ExplorerViewerActionContributor extends ActionBarContributor {
resource = uri.file(paths.dirname(resource.fsPath));
}
const configuration = this.configurationService.getConfiguration<ITerminalConfiguration>();
const terminalKind = configuration.terminal.terminalKind;
const configuration = this.configurationService.getConfiguration<IFilesConfiguration>();
const terminalKind = configuration.explorer.openInTerminalKind;
if (terminalKind === 'integrated') {
let action = this.instantiationService.createInstance(OpenIntegratedTerminalAction, OpenIntegratedTerminalAction.ID, OpenIntegratedTerminalAction.Label);
......@@ -204,9 +162,6 @@ class ExplorerViewerActionContributor extends ActionBarContributor {
}
}
const actionBarRegistry = Registry.as<IActionBarRegistry>(ActionBarExtensions.Actionbar);
actionBarRegistry.registerActionBarContributor(Scope.VIEWER, ExplorerViewerActionContributor);
// Register Global Action to Open Console
Registry.as<IWorkbenchActionRegistry>(ActionExtensions.WorkbenchActions).registerWorkbenchAction(
new SyncActionDescriptor(
......
......@@ -4,10 +4,15 @@
*--------------------------------------------------------------------------------------------*/
'use strict';
import * as nls from 'vs/nls';
import * as env from 'vs/base/common/platform';
import { WinTerminalService, MacTerminalService, LinuxTerminalService } from 'vs/workbench/parts/execution/electron-browser/terminalService';
import { Registry } from 'vs/platform/registry/common/platform';
import { Extensions, IConfigurationRegistry } from 'vs/platform/configuration/common/configurationRegistry';
import { registerSingleton } from 'vs/platform/instantiation/common/extensions';
import { DEFAULT_TERMINAL_WINDOWS, DEFAULT_TERMINAL_LINUX_READY, DEFAULT_TERMINAL_OSX } from 'vs/workbench/parts/execution/electron-browser/terminal';
import { WinTerminalService, MacTerminalService, LinuxTerminalService } from 'vs/workbench/parts/execution/electron-browser/terminalService';
import { ITerminalService } from 'vs/workbench/parts/execution/common/execution';
import 'vs/workbench/parts/execution/browser/terminal.contribution';
if (env.isWindows) {
registerSingleton(ITerminalService, WinTerminalService);
......@@ -16,3 +21,34 @@ if (env.isWindows) {
} else if (env.isLinux) {
registerSingleton(ITerminalService, LinuxTerminalService);
}
DEFAULT_TERMINAL_LINUX_READY.then(defaultTerminalLinux => {
let configurationRegistry = <IConfigurationRegistry>Registry.as(Extensions.Configuration);
configurationRegistry.registerConfiguration({
'id': 'externalTerminal',
'order': 100,
'title': nls.localize('terminalConfigurationTitle', "External Terminal"),
'type': 'object',
'properties': {
'terminal.external.windowsExec': {
'type': 'string',
'description': nls.localize('terminal.external.windowsExec', "Customizes which terminal to run on Windows."),
'default': DEFAULT_TERMINAL_WINDOWS,
'isExecutable': true
},
'terminal.external.osxExec': {
'type': 'string',
'description': nls.localize('terminal.external.osxExec', "Customizes which terminal application to run on OS X."),
'default': DEFAULT_TERMINAL_OSX,
'isExecutable': true
},
'terminal.external.linuxExec': {
'type': 'string',
'description': nls.localize('terminal.external.linuxExec', "Customizes which terminal to run on Linux."),
'default': defaultTerminalLinux,
'isExecutable': true
}
}
});
});
......@@ -21,6 +21,7 @@ import { FileStat, Model } from 'vs/workbench/parts/files/common/explorerModel';
import { KeyMod, KeyChord, KeyCode } from 'vs/base/common/keyCodes';
import { OpenFolderAction, OpenFileFolderAction, AddRootFolderAction, RemoveRootFolderAction } from 'vs/workbench/browser/actions/fileActions';
import { copyFocusedFilesExplorerViewItem, revealInOSFocusedFilesExplorerItem, openFocusedExplorerItemSideBySideCommand, copyPathOfFocusedExplorerItem, copyPathCommand, revealInExplorerCommand, revealInOSCommand, openFolderPickerCommand, openWindowCommand, openFileInNewWindowCommand, deleteFocusedFilesExplorerViewItemCommand, moveFocusedFilesExplorerViewItemToTrashCommand, renameFocusedFilesExplorerViewItemCommand } from 'vs/workbench/parts/files/browser/fileCommands';
import { ExplorerViewerActionContributor as TerminalExplorerViewerActionContributor } from 'vs/workbench/parts/execution/browser/terminal.contribution';
import { CommandsRegistry, ICommandHandler } from 'vs/platform/commands/common/commands';
import { ContextKeyExpr } from 'vs/platform/contextkey/common/contextkey';
import { KeybindingsRegistry } from 'vs/platform/keybinding/common/keybindingsRegistry';
......@@ -185,6 +186,7 @@ class ExplorerViewersActionContributor extends ActionBarContributor {
const actionBarRegistry = Registry.as<IActionBarRegistry>(ActionBarExtensions.Actionbar);
actionBarRegistry.registerActionBarContributor(Scope.VIEWER, FilesViewerActionContributor);
actionBarRegistry.registerActionBarContributor(Scope.VIEWER, ExplorerViewersActionContributor);
actionBarRegistry.registerActionBarContributor(Scope.VIEWER, TerminalExplorerViewerActionContributor);
// Contribute Global Actions
const category = nls.localize('filesCategory', "Files");
......
......@@ -334,6 +334,16 @@ configurationRegistry.registerConfiguration({
nls.localize('sortOrder.modified', 'Files and directories are sorted by last modified date, in descending order. Directories are displayed before files.')
],
'description': nls.localize('sortOrder', "Controls the way of sorting files and directories in the explorer.")
}
},
'explorer.openInTerminalKind': {
'type': 'string',
'enum': [
'external',
'integrated'
],
'description': nls.localize('explorer.openInTerminalKind', "Customizes what kind of terminal to launch."),
'default': 'external',
'isExecutable': false
},
}
});
......@@ -61,6 +61,7 @@ export interface IFilesConfiguration extends IFilesConfiguration, IWorkbenchEdit
autoReveal: boolean;
enableDragAndDrop: boolean;
sortOrder: SortOrder;
openInTerminalKind: string;
};
editor: IEditorOptions;
}
......
......@@ -86,7 +86,6 @@ import 'vs/workbench/parts/emmet/electron-browser/emmet.contribution';
import 'vs/workbench/parts/codeEditor/codeEditor.contribution';
import 'vs/workbench/parts/execution/electron-browser/execution.contribution';
import 'vs/workbench/parts/execution/electron-browser/terminal.contribution';
import 'vs/workbench/parts/snippets/electron-browser/snippets.contribution';
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册