提交 68b2f0f8 编写于 作者: D Daniel Imms

Remove TPromise usage in execution part

Part of #53526
上级 61ae1599
......@@ -5,7 +5,6 @@
'use strict';
import { createDecorator } from 'vs/platform/instantiation/common/instantiation';
import { TPromise } from 'vs/base/common/winjs.base';
import { IProcessEnvironment } from 'vs/base/common/platform';
export const ITerminalService = createDecorator<ITerminalService>('nativeTerminalService');
......@@ -13,5 +12,5 @@ export const ITerminalService = createDecorator<ITerminalService>('nativeTermina
export interface ITerminalService {
_serviceBrand: any;
openTerminal(path: string): void;
runInTerminal(title: string, cwd: string, args: string[], env: IProcessEnvironment): TPromise<void>;
runInTerminal(title: string, cwd: string, args: string[], env: IProcessEnvironment): Promise<void>;
}
\ No newline at end of file
......@@ -6,14 +6,13 @@
import * as env from 'vs/base/common/platform';
import * as pfs from 'vs/base/node/pfs';
import { TPromise } from 'vs/base/common/winjs.base';
let _DEFAULT_TERMINAL_LINUX_READY: TPromise<string> = null;
export function getDefaultTerminalLinuxReady(): TPromise<string> {
let _DEFAULT_TERMINAL_LINUX_READY: Promise<string> = null;
export function getDefaultTerminalLinuxReady(): Promise<string> {
if (!_DEFAULT_TERMINAL_LINUX_READY) {
_DEFAULT_TERMINAL_LINUX_READY = new TPromise<string>(c => {
_DEFAULT_TERMINAL_LINUX_READY = new Promise<string>(c => {
if (env.isLinux) {
TPromise.join([pfs.exists('/etc/debian_version'), process.lazyEnv]).then(([isDebian]) => {
Promise.all([pfs.exists('/etc/debian_version'), process.lazyEnv]).then(([isDebian]) => {
if (isDebian) {
c('x-terminal-emulator');
} else if (process.env.DESKTOP_SESSION === 'gnome' || process.env.DESKTOP_SESSION === 'gnome-classic') {
......
......@@ -10,7 +10,6 @@ import * as path from 'path';
import * as processes from 'vs/base/node/processes';
import * as nls from 'vs/nls';
import { assign } from 'vs/base/common/objects';
import { TPromise } from 'vs/base/common/winjs.base';
import { ITerminalService } from 'vs/workbench/parts/execution/common/execution';
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
import { ITerminalConfiguration, getDefaultTerminalWindows, getDefaultTerminalLinuxReady, DEFAULT_TERMINAL_OSX } from 'vs/workbench/parts/execution/electron-browser/terminal';
......@@ -40,13 +39,13 @@ export class WinTerminalService implements ITerminalService {
this.spawnTerminal(cp, configuration, processes.getWindowsShell(), cwd);
}
public runInTerminal(title: string, dir: string, args: string[], envVars: IProcessEnvironment): TPromise<void> {
public runInTerminal(title: string, dir: string, args: string[], envVars: IProcessEnvironment): Promise<void> {
const configuration = this._configurationService.getValue<ITerminalConfiguration>();
const terminalConfig = configuration.terminal.external;
const exec = terminalConfig.windowsExec || getDefaultTerminalWindows();
return new TPromise<void>((c, e) => {
return new Promise<void>((c, e) => {
const title = `"${dir} - ${TERMINAL_TITLE}"`;
const command = `""${args.join('" "')}" & pause"`; // use '|' to only pause on non-zero exit code
......@@ -74,7 +73,7 @@ export class WinTerminalService implements ITerminalService {
});
}
private spawnTerminal(spawner, configuration: ITerminalConfiguration, command: string, cwd?: string): TPromise<void> {
private spawnTerminal(spawner, configuration: ITerminalConfiguration, command: string, cwd?: string): Promise<void> {
const terminalConfig = configuration.terminal.external;
const exec = terminalConfig.windowsExec || getDefaultTerminalWindows();
const spawnType = this.getSpawnType(exec);
......@@ -88,14 +87,14 @@ export class WinTerminalService implements ITerminalService {
// unless otherwise specified
if (spawnType === WinSpawnType.CMDER) {
spawner.spawn(exec, [cwd]);
return TPromise.as(void 0);
return Promise.resolve(void 0);
}
// The '""' argument is the window title. Without this, exec doesn't work when the path
// contains spaces
const cmdArgs = ['/c', 'start', '/wait', '""', exec];
return new TPromise<void>((c, e) => {
return new Promise<void>((c, e) => {
const env = cwd ? { cwd: cwd } : void 0;
const child = spawner.spawn(command, cmdArgs, env);
child.on('error', e);
......@@ -127,13 +126,13 @@ export class MacTerminalService implements ITerminalService {
this.spawnTerminal(cp, configuration, cwd);
}
public runInTerminal(title: string, dir: string, args: string[], envVars: IProcessEnvironment): TPromise<void> {
public runInTerminal(title: string, dir: string, args: string[], envVars: IProcessEnvironment): Promise<void> {
const configuration = this._configurationService.getValue<ITerminalConfiguration>();
const terminalConfig = configuration.terminal.external;
const terminalApp = terminalConfig.osxExec || DEFAULT_TERMINAL_OSX;
return new TPromise<void>((c, e) => {
return new Promise<void>((c, e) => {
if (terminalApp === DEFAULT_TERMINAL_OSX || terminalApp === 'iTerm.app') {
......@@ -191,11 +190,11 @@ export class MacTerminalService implements ITerminalService {
});
}
private spawnTerminal(spawner, configuration: ITerminalConfiguration, cwd?: string): TPromise<void> {
private spawnTerminal(spawner, configuration: ITerminalConfiguration, cwd?: string): Promise<void> {
const terminalConfig = configuration.terminal.external;
const terminalApp = terminalConfig.osxExec || DEFAULT_TERMINAL_OSX;
return new TPromise<void>((c, e) => {
return new Promise<void>((c, e) => {
const child = spawner.spawn('/usr/bin/open', ['-a', terminalApp, cwd]);
child.on('error', e);
child.on('exit', () => c(null));
......@@ -219,13 +218,13 @@ export class LinuxTerminalService implements ITerminalService {
this.spawnTerminal(cp, configuration, cwd);
}
public runInTerminal(title: string, dir: string, args: string[], envVars: IProcessEnvironment): TPromise<void> {
public runInTerminal(title: string, dir: string, args: string[], envVars: IProcessEnvironment): Promise<void> {
const configuration = this._configurationService.getValue<ITerminalConfiguration>();
const terminalConfig = configuration.terminal.external;
const execPromise = terminalConfig.linuxExec ? TPromise.as(terminalConfig.linuxExec) : getDefaultTerminalLinuxReady();
const execPromise = terminalConfig.linuxExec ? Promise.resolve(terminalConfig.linuxExec) : getDefaultTerminalLinuxReady();
return new TPromise<void>((c, e) => {
return new Promise<void>((c, e) => {
let termArgs: string[] = [];
//termArgs.push('--title');
......@@ -275,12 +274,12 @@ export class LinuxTerminalService implements ITerminalService {
});
}
private spawnTerminal(spawner, configuration: ITerminalConfiguration, cwd?: string): TPromise<void> {
private spawnTerminal(spawner, configuration: ITerminalConfiguration, cwd?: string): Promise<void> {
const terminalConfig = configuration.terminal.external;
const execPromise = terminalConfig.linuxExec ? TPromise.as(terminalConfig.linuxExec) : getDefaultTerminalLinuxReady();
const execPromise = terminalConfig.linuxExec ? Promise.resolve(terminalConfig.linuxExec) : getDefaultTerminalLinuxReady();
const env = cwd ? { cwd: cwd } : void 0;
return new TPromise<void>((c, e) => {
return new Promise<void>((c, e) => {
execPromise.then(exec => {
const child = spawner.spawn(exec, [], env);
child.on('error', e);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册