Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
掘金者说
vscode
提交
55541cc5
V
vscode
项目概览
掘金者说
/
vscode
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
V
vscode
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
55541cc5
编写于
5月 13, 2016
作者:
D
Daniel Imms
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Have createTerminal execute asynchronously
上级
f48a0723
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
53 addition
and
52 deletion
+53
-52
src/vs/workbench/parts/terminal/electron-browser/terminalPanel.ts
...orkbench/parts/terminal/electron-browser/terminalPanel.ts
+53
-52
未找到文件。
src/vs/workbench/parts/terminal/electron-browser/terminalPanel.ts
浏览文件 @
55541cc5
...
...
@@ -46,62 +46,63 @@ export class TerminalPanel extends Panel {
super
.
create
(
parent
);
this
.
parentDomElement
=
parent
.
getHTMLElement
();
this
.
createTerminal
();
return
TPromise
.
as
(
null
);
return
this
.
createTerminal
(
);
}
private
createTerminal
():
void
{
this
.
parentDomElement
.
innerHTML
=
''
;
this
.
ptyProcess
=
fork
(
this
.
getShell
(),
[],
{
name
:
fs
.
existsSync
(
'
/usr/share/terminfo/x/xterm-256color
'
)
?
'
xterm-256color
'
:
'
xterm
'
,
cwd
:
this
.
contextService
.
getWorkspace
()
?
this
.
contextService
.
getWorkspace
().
resource
.
fsPath
:
process
.
env
.
HOME
private
createTerminal
():
TPromise
<
void
>
{
return
new
TPromise
<
void
>
(
resolve
=>
{
this
.
parentDomElement
.
innerHTML
=
''
;
this
.
ptyProcess
=
fork
(
this
.
getShell
(),
[],
{
name
:
fs
.
existsSync
(
'
/usr/share/terminfo/x/xterm-256color
'
)
?
'
xterm-256color
'
:
'
xterm
'
,
cwd
:
this
.
contextService
.
getWorkspace
()
?
this
.
contextService
.
getWorkspace
().
resource
.
fsPath
:
process
.
env
.
HOME
});
this
.
terminalDomElement
=
document
.
createElement
(
'
div
'
);
this
.
parentDomElement
.
classList
.
add
(
'
integrated-terminal
'
);
let
terminalScrollable
=
new
DomScrollableElement
(
this
.
terminalDomElement
,
{
canUseTranslate3d
:
false
,
horizontal
:
ScrollbarVisibility
.
Hidden
,
vertical
:
ScrollbarVisibility
.
Auto
});
this
.
terminal
=
termJs
({
cursorBlink
:
false
// term.js' blinking cursor breaks selection
});
this
.
ptyProcess
.
on
(
'
data
'
,
(
data
)
=>
{
this
.
terminal
.
write
(
data
);
});
this
.
terminal
.
on
(
'
data
'
,
(
data
)
=>
{
this
.
ptyProcess
.
write
(
data
);
return
false
;
});
this
.
ptyProcess
.
on
(
'
exit
'
,
(
data
)
=>
{
this
.
terminal
.
destroy
();
// TODO: When multiple terminals are supported this should do something smarter. There is
// also a weird bug here at leasy on Ubuntu 15.10 where the new terminal text does not
// repaint correctly.
this
.
createTerminal
();
});
this
.
parentDomElement
.
addEventListener
(
'
mousedown
'
,
(
event
)
=>
{
// Drop selection and focus terminal on Linux to enable middle button paste when click
// occurs on the selection itself.
if
(
event
.
which
===
2
&&
platform
.
isLinux
)
{
this
.
focusTerminal
(
true
);
}
});
this
.
parentDomElement
.
addEventListener
(
'
mouseup
'
,
(
event
)
=>
{
if
(
event
.
which
!==
3
)
{
this
.
focusTerminal
();
}
});
this
.
terminal
.
open
(
this
.
terminalDomElement
);
this
.
parentDomElement
.
appendChild
(
terminalScrollable
.
getDomNode
());
let
config
=
this
.
configurationService
.
getConfiguration
<
ITerminalConfiguration
>
();
this
.
terminalDomElement
.
style
.
fontFamily
=
config
.
integratedTerminal
.
fontFamily
;
this
.
terminal
.
colors
=
this
.
getTerminalColors
();
resolve
(
void
0
);
});
this
.
terminalDomElement
=
document
.
createElement
(
'
div
'
);
this
.
parentDomElement
.
classList
.
add
(
'
integrated-terminal
'
);
let
terminalScrollable
=
new
DomScrollableElement
(
this
.
terminalDomElement
,
{
canUseTranslate3d
:
false
,
horizontal
:
ScrollbarVisibility
.
Hidden
,
vertical
:
ScrollbarVisibility
.
Auto
});
//let terminalContainer = new ScrollableElement(this.terminalDomElement, terminalScrollable, { horizontal: 'hidden', vertical: 'auto' });
this
.
terminal
=
termJs
({
cursorBlink
:
false
// term.js' blinking cursor breaks selection
});
this
.
ptyProcess
.
on
(
'
data
'
,
(
data
)
=>
{
this
.
terminal
.
write
(
data
);
});
this
.
terminal
.
on
(
'
data
'
,
(
data
)
=>
{
this
.
ptyProcess
.
write
(
data
);
return
false
;
});
this
.
ptyProcess
.
on
(
'
exit
'
,
(
data
)
=>
{
this
.
terminal
.
destroy
();
// TODO: When multiple terminals are supported this should do something smarter. There is
// also a weird bug here at leasy on Ubuntu 15.10 where the new terminal text does not
// repaint correctly.
this
.
createTerminal
();
});
this
.
parentDomElement
.
addEventListener
(
'
mousedown
'
,
(
event
)
=>
{
// Drop selection and focus terminal on Linux to enable middle button paste when click
// occurs on the selection itself.
if
(
event
.
which
===
2
&&
platform
.
isLinux
)
{
this
.
focusTerminal
(
true
);
}
});
this
.
parentDomElement
.
addEventListener
(
'
mouseup
'
,
(
event
)
=>
{
if
(
event
.
which
!==
3
)
{
this
.
focusTerminal
();
}
});
this
.
terminal
.
open
(
this
.
terminalDomElement
);
this
.
parentDomElement
.
appendChild
(
terminalScrollable
.
getDomNode
());
let
config
=
this
.
configurationService
.
getConfiguration
<
ITerminalConfiguration
>
();
this
.
terminalDomElement
.
style
.
fontFamily
=
config
.
integratedTerminal
.
fontFamily
;
this
.
terminal
.
colors
=
this
.
getTerminalColors
();
}
private
focusTerminal
(
force
?:
boolean
):
void
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录