Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
557745c8
V
vscode
项目概览
xxadev
/
vscode
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
V
vscode
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
557745c8
编写于
6月 07, 2016
作者:
A
Andre Weinand
浏览文件
操作
浏览文件
下载
差异文件
resolved merge conflicts of PR #6136
上级
befd6961
04e29ce6
变更
7
隐藏空白更改
内联
并排
Showing
7 changed file
with
72 addition
and
123 deletion
+72
-123
src/vs/workbench/parts/execution/electron-browser/iterm.scpt
src/vs/workbench/parts/execution/electron-browser/iterm.scpt
+0
-25
src/vs/workbench/parts/execution/electron-browser/itermNew.scpt
.../workbench/parts/execution/electron-browser/itermNew.scpt
+0
-30
src/vs/workbench/parts/execution/electron-browser/terminal.contribution.ts
...parts/execution/electron-browser/terminal.contribution.ts
+6
-1
src/vs/workbench/parts/execution/electron-browser/terminal.scpt
.../workbench/parts/execution/electron-browser/terminal.scpt
+0
-26
src/vs/workbench/parts/execution/electron-browser/terminal.ts
...vs/workbench/parts/execution/electron-browser/terminal.ts
+3
-0
src/vs/workbench/parts/execution/electron-browser/terminalService.ts
...bench/parts/execution/electron-browser/terminalService.ts
+15
-39
src/vs/workbench/parts/execution/test/electron-browser/terminalService.test.ts
...s/execution/test/electron-browser/terminalService.test.ts
+48
-2
未找到文件。
src/vs/workbench/parts/execution/electron-browser/iterm.scpt
已删除
100644 → 0
浏览文件 @
befd6961
-------------------------------------------------------------------
-- Copyright (c) Microsoft Corporation. All rights reserved.
-- Licensed under the MIT License.
-- See License.txt in the project root for license information.
-------------------------------------------------------------------
on
run
argv
set
command
to
"cd \""
&
argv
&
"\"; clear"
as
string
tell
application
"iTerm"
activate
if
(
count
terminal
)
=
0
then
set
myterm
to
(
make
new
terminal
)
else
set
myterm
to
(
current
terminal
)
end
if
tell
myterm
tell
(
launch
session
"Default"
)
write
text
command
end
tell
end
tell
end
tell
end
run
src/vs/workbench/parts/execution/electron-browser/itermNew.scpt
已删除
100644 → 0
浏览文件 @
befd6961
-------------------------------------------------------------------
-- Copyright (c) Microsoft Corporation. All rights reserved.
-- Licensed under the MIT License.
-- See License.txt in the project root for license information.
-------------------------------------------------------------------
on
run
argv
set
command
to
"cd \""
&
argv
&
"\"; clear"
as
string
tell
application
"iTerm"
activate
set
theWindow
to
current
window
if
theWindow
=
missing value
then
set
theWindow
to
(
create
window
with
default
profile
)
tell
theWindow
write
(
current
session
)
text
command
end
tell
else
tell
theWindow
set
theTab
to
(
create
tab
with
default
profile
)
tell
theTab
write
(
current
session
)
text
command
end
tell
end
tell
end
if
end
tell
end
run
src/vs/workbench/parts/execution/electron-browser/terminal.contribution.ts
浏览文件 @
557745c8
...
@@ -22,7 +22,7 @@ import {IWorkbenchEditorService} from 'vs/workbench/services/editor/common/edito
...
@@ -22,7 +22,7 @@ import {IWorkbenchEditorService} from 'vs/workbench/services/editor/common/edito
import
{
asFileEditorInput
}
from
'
vs/workbench/common/editor
'
;
import
{
asFileEditorInput
}
from
'
vs/workbench/common/editor
'
;
import
{
KeyMod
,
KeyCode
}
from
'
vs/base/common/keyCodes
'
;
import
{
KeyMod
,
KeyCode
}
from
'
vs/base/common/keyCodes
'
;
import
{
Extensions
,
IConfigurationRegistry
}
from
'
vs/platform/configuration/common/configurationRegistry
'
;
import
{
Extensions
,
IConfigurationRegistry
}
from
'
vs/platform/configuration/common/configurationRegistry
'
;
import
{
DEFAULT_TERMINAL_WINDOWS
,
DEFAULT_TERMINAL_LINUX
}
from
'
vs/workbench/parts/execution/electron-browser/terminal
'
;
import
{
DEFAULT_TERMINAL_WINDOWS
,
DEFAULT_TERMINAL_LINUX
,
DEFAULT_TERMINAL_MAC
}
from
'
vs/workbench/parts/execution/electron-browser/terminal
'
;
let
configurationRegistry
=
<
IConfigurationRegistry
>
Registry
.
as
(
Extensions
.
Configuration
);
let
configurationRegistry
=
<
IConfigurationRegistry
>
Registry
.
as
(
Extensions
.
Configuration
);
configurationRegistry
.
registerConfiguration
({
configurationRegistry
.
registerConfiguration
({
...
@@ -36,6 +36,11 @@ configurationRegistry.registerConfiguration({
...
@@ -36,6 +36,11 @@ configurationRegistry.registerConfiguration({
'
description
'
:
nls
.
localize
(
'
terminal.external.windowsExec
'
,
"
Customizes which terminal to run on Windows.
"
),
'
description
'
:
nls
.
localize
(
'
terminal.external.windowsExec
'
,
"
Customizes which terminal to run on Windows.
"
),
'
default
'
:
DEFAULT_TERMINAL_WINDOWS
'
default
'
:
DEFAULT_TERMINAL_WINDOWS
},
},
'
terminal.external.macExec
'
:
{
'
type
'
:
'
string
'
,
'
description
'
:
nls
.
localize
(
'
terminal.external.macExec
'
,
"
Customizes which terminal Application to run on Mac OS.
"
),
'
default
'
:
DEFAULT_TERMINAL_MAC
},
'
terminal.external.linuxExec
'
:
{
'
terminal.external.linuxExec
'
:
{
'
type
'
:
'
string
'
,
'
type
'
:
'
string
'
,
'
description
'
:
nls
.
localize
(
'
terminal.external.linuxExec
'
,
"
Customizes which terminal to run on Linux.
"
),
'
description
'
:
nls
.
localize
(
'
terminal.external.linuxExec
'
,
"
Customizes which terminal to run on Linux.
"
),
...
...
src/vs/workbench/parts/execution/electron-browser/terminal.scpt
已删除
100644 → 0
浏览文件 @
befd6961
-------------------------------------------------------------------
-- Copyright (c) Microsoft Corporation. All rights reserved.
-- Licensed under the MIT License.
-- See License.txt in the project root for license information.
-------------------------------------------------------------------
on
run
argv
set
command
to
"cd \""
&
argv
&
"\"; clear"
as
string
tell
application
"Terminal"
activate
set
targetWindow
to
null
repeat
with
currentWindow
in
windows
if
currentWindow
is not
busy
then
set
targetWindow
to
currentWindow
end
if
end
repeat
if
targetWindow
≠
null
then
do
script
command
in
targetWindow
else
do
script
command
end
if
end
tell
end
run
src/vs/workbench/parts/execution/electron-browser/terminal.ts
浏览文件 @
557745c8
...
@@ -20,12 +20,15 @@ if (env.isLinux) {
...
@@ -20,12 +20,15 @@ if (env.isLinux) {
export
const
DEFAULT_TERMINAL_LINUX
=
defaultTerminalLinux
;
export
const
DEFAULT_TERMINAL_LINUX
=
defaultTerminalLinux
;
export
const
DEFAULT_TERMINAL_MAC
=
'
Terminal.app
'
;
export
const
DEFAULT_TERMINAL_WINDOWS
=
'
cmd
'
;
export
const
DEFAULT_TERMINAL_WINDOWS
=
'
cmd
'
;
export
interface
ITerminalConfiguration
{
export
interface
ITerminalConfiguration
{
terminal
:
{
terminal
:
{
external
:
{
external
:
{
linuxExec
:
string
,
linuxExec
:
string
,
macExec
:
string
,
windowsExec
:
string
windowsExec
:
string
}
}
};
};
...
...
src/vs/workbench/parts/execution/electron-browser/terminalService.ts
浏览文件 @
557745c8
...
@@ -5,11 +5,10 @@
...
@@ -5,11 +5,10 @@
'
use strict
'
;
'
use strict
'
;
import
errors
=
require
(
'
vs/base/common/errors
'
);
import
errors
=
require
(
'
vs/base/common/errors
'
);
import
uri
from
'
vs/base/common/uri
'
;
import
{
TPromise
}
from
'
vs/base/common/winjs.base
'
;
import
{
TPromise
}
from
'
vs/base/common/winjs.base
'
;
import
{
ITerminalService
}
from
'
vs/workbench/parts/execution/common/execution
'
;
import
{
ITerminalService
}
from
'
vs/workbench/parts/execution/common/execution
'
;
import
{
IConfigurationService
}
from
'
vs/platform/configuration/common/configuration
'
;
import
{
IConfigurationService
}
from
'
vs/platform/configuration/common/configuration
'
;
import
{
ITerminalConfiguration
,
DEFAULT_TERMINAL_WINDOWS
,
DEFAULT_TERMINAL_LINUX
}
from
'
vs/workbench/parts/execution/electron-browser/terminal
'
;
import
{
ITerminalConfiguration
,
DEFAULT_TERMINAL_WINDOWS
,
DEFAULT_TERMINAL_LINUX
,
DEFAULT_TERMINAL_MAC
}
from
'
vs/workbench/parts/execution/electron-browser/terminal
'
;
import
cp
=
require
(
'
child_process
'
);
import
cp
=
require
(
'
child_process
'
);
import
processes
=
require
(
'
vs/base/node/processes
'
);
import
processes
=
require
(
'
vs/base/node/processes
'
);
...
@@ -47,49 +46,26 @@ export class WinTerminalService implements ITerminalService {
...
@@ -47,49 +46,26 @@ export class WinTerminalService implements ITerminalService {
export
class
MacTerminalService
implements
ITerminalService
{
export
class
MacTerminalService
implements
ITerminalService
{
public
serviceId
=
ITerminalService
;
public
serviceId
=
ITerminalService
;
private
_terminalApplicationScriptPath
:
TPromise
<
string
>
;
constructor
(
@
IConfigurationService
private
_configurationService
:
IConfigurationService
)
{
}
public
openTerminal
(
path
?:
string
):
void
{
public
openTerminal
(
path
?:
string
):
void
{
this
.
getTerminalHelperScriptPath
().
done
(
helperPath
=>
{
const
configuration
=
this
.
_configurationService
.
getConfiguration
<
ITerminalConfiguration
>
();
let
args
=
[
helperPath
];
if
(
path
)
{
this
.
spawnTerminal
(
cp
,
configuration
,
path
).
done
(
null
,
errors
.
onUnexpectedError
);
args
.
push
(
path
);
}
cp
.
spawn
(
'
/usr/bin/osascript
'
,
args
);
},
errors
.
onUnexpectedError
);
}
}
private
getTerminalHelperScriptPath
():
TPromise
<
string
>
{
private
spawnTerminal
(
spawner
,
configuration
:
ITerminalConfiguration
,
path
?:
string
):
TPromise
<
void
>
{
if
(
this
.
_terminalApplicationScriptPath
)
{
let
terminalConfig
=
configuration
.
terminal
.
external
;
return
this
.
_terminalApplicationScriptPath
;
let
terminalApp
=
terminalConfig
.
macExec
||
DEFAULT_TERMINAL_MAC
;
}
return
this
.
_terminalApplicationScriptPath
=
new
TPromise
<
string
>
((
c
,
e
)
=>
{
return
new
TPromise
<
void
>
((
c
,
e
)
=>
{
let
version
=
''
;
let
child
=
spawner
.
spawn
(
'
/usr/bin/open
'
,
[
'
-a
'
,
terminalApp
,
path
]);
let
child
=
cp
.
spawn
(
'
/usr/bin/osascript
'
,
[
'
-e
'
,
'
version of application "iTerm"
'
]);
child
.
on
(
'
error
'
,
e
);
child
.
on
(
'
error
'
,
e
);
child
.
stdout
.
on
(
'
data
'
,
(
data
)
=>
{
child
.
on
(
'
exit
'
,
()
=>
c
(
null
));
version
+=
data
.
toString
();
});
});
child
.
on
(
'
exit
'
,
(
code
:
number
)
=>
{
let
script
=
'
terminal.scpt
'
;
if
(
code
===
0
)
{
const
match
=
/
(\d
+
)
.
(\d
+
)
.
(\d
+
)
/
.
exec
(
version
);
if
(
match
.
length
>=
4
)
{
const
major
=
+
match
[
1
];
const
minor
=
+
match
[
2
];
const
veryMinor
=
+
match
[
3
];
if
((
major
<
2
)
||
(
major
===
2
&&
minor
<
9
)
||
(
major
===
2
&&
minor
===
9
&&
veryMinor
<
20150414
))
{
script
=
'
iterm.scpt
'
;
}
else
{
script
=
'
itermNew.scpt
'
;
// versions >= 2.9.20150414 use new script syntax
}
}
}
c
(
script
);
});
}).
then
(
name
=>
uri
.
parse
(
require
.
toUrl
(
`vs/workbench/parts/execution/electron-browser/
${
name
}
`
)).
fsPath
);
}
}
}
}
...
...
src/vs/workbench/parts/execution/test/electron-browser/terminalService.test.ts
浏览文件 @
557745c8
...
@@ -6,8 +6,8 @@
...
@@ -6,8 +6,8 @@
'
use strict
'
;
'
use strict
'
;
import
{
equal
}
from
'
assert
'
;
import
{
equal
}
from
'
assert
'
;
import
{
WinTerminalService
,
LinuxTerminalService
}
from
'
vs/workbench/parts/execution/electron-browser/terminalService
'
;
import
{
WinTerminalService
,
LinuxTerminalService
,
MacTerminalService
}
from
'
vs/workbench/parts/execution/electron-browser/terminalService
'
;
import
{
DEFAULT_TERMINAL_WINDOWS
,
DEFAULT_TERMINAL_LINUX
}
from
'
vs/workbench/parts/execution/electron-browser/terminal
'
;
import
{
DEFAULT_TERMINAL_WINDOWS
,
DEFAULT_TERMINAL_LINUX
,
DEFAULT_TERMINAL_MAC
}
from
'
vs/workbench/parts/execution/electron-browser/terminal
'
;
suite
(
'
Execution - TerminalService
'
,
()
=>
{
suite
(
'
Execution - TerminalService
'
,
()
=>
{
let
mockOnExit
;
let
mockOnExit
;
...
@@ -19,6 +19,7 @@ suite('Execution - TerminalService', () => {
...
@@ -19,6 +19,7 @@ suite('Execution - TerminalService', () => {
terminal
:
{
terminal
:
{
external
:
{
external
:
{
windowsExec
:
'
testWindowsShell
'
,
windowsExec
:
'
testWindowsShell
'
,
macExec
:
'
testMacShell
'
,
linuxExec
:
'
testLinuxShell
'
linuxExec
:
'
testLinuxShell
'
}
}
}
}
...
@@ -78,6 +79,51 @@ suite('Execution - TerminalService', () => {
...
@@ -78,6 +79,51 @@ suite('Execution - TerminalService', () => {
);
);
});
});
test
(
"
MacTerminalService - uses terminal from configuration
"
,
done
=>
{
let
testCwd
=
'
path/to/workspace
'
;
let
mockSpawner
=
{
spawn
:
(
command
,
args
,
opts
)
=>
{
// assert
equal
(
args
[
1
],
mockConfig
.
terminal
.
external
.
macExec
,
'
terminal should equal expected
'
);
done
();
return
{
on
:
(
evt
)
=>
evt
}
}
};
let
testService
=
new
MacTerminalService
(
mockConfig
);
(
<
any
>
testService
).
spawnTerminal
(
mockSpawner
,
mockConfig
,
testCwd
,
mockOnExit
,
mockOnError
);
});
test
(
"
MacTerminalService - uses default terminal when configuration.terminal.external.macExec is undefined
"
,
done
=>
{
let
testCwd
=
'
path/to/workspace
'
;
let
mockSpawner
=
{
spawn
:
(
command
,
args
,
opts
)
=>
{
// assert
equal
(
args
[
1
],
DEFAULT_TERMINAL_MAC
,
'
terminal should equal expected
'
)
done
();
return
{
on
:
(
evt
)
=>
evt
}
}
};
mockConfig
.
externalTerminal
.
macExec
=
undefined
;
let
testService
=
new
MacTerminalService
(
mockConfig
);
(
<
any
>
testService
).
spawnTerminal
(
mockSpawner
,
mockConfig
,
testCwd
,
mockOnExit
,
mockOnError
);
});
test
(
"
LinuxTerminalService - uses terminal from configuration
"
,
done
=>
{
test
(
"
LinuxTerminalService - uses terminal from configuration
"
,
done
=>
{
let
testCwd
=
'
path/to/workspace
'
;
let
testCwd
=
'
path/to/workspace
'
;
let
mockSpawner
=
{
let
mockSpawner
=
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录