Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
掘金者说
vscode
提交
ae0ec56d
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,发现更多精彩内容 >>
未验证
提交
ae0ec56d
编写于
9月 14, 2021
作者:
J
Jean Pierre
提交者:
GitHub
9月 14, 2021
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fixes #133044 (#133046)
上级
94071236
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
29 addition
and
35 deletion
+29
-35
src/vs/workbench/api/common/extHostTerminalService.ts
src/vs/workbench/api/common/extHostTerminalService.ts
+29
-17
src/vs/workbench/api/node/extHostTerminalService.ts
src/vs/workbench/api/node/extHostTerminalService.ts
+0
-18
未找到文件。
src/vs/workbench/api/common/extHostTerminalService.ts
浏览文件 @
ae0ec56d
...
...
@@ -151,7 +151,7 @@ export class ExtHostTerminal {
isFeatureTerminal
:
withNullAsUndefined
(
internalOptions
?.
isFeatureTerminal
),
isExtensionOwnedTerminal
:
true
,
useShellEnvironment
:
withNullAsUndefined
(
internalOptions
?.
useShellEnvironment
),
location
:
internalOptions
?.
location
||
this
.
_serializeParentTerminal
(
options
.
location
,
internalOptions
?.
resolvedExtHostIdentifier
,
internalOptions
?.
location
)
location
:
internalOptions
?.
location
||
this
.
_serializeParentTerminal
(
options
.
location
,
internalOptions
?.
resolvedExtHostIdentifier
)
});
}
...
...
@@ -174,12 +174,19 @@ export class ExtHostTerminal {
return
this
.
_id
;
}
private
_serializeParentTerminal
(
location
?:
TerminalLocation
|
vscode
.
TerminalEditorLocationOptions
|
vscode
.
TerminalSplitLocationOptions
|
{
splitActiveTerminal
:
boolean
},
parentTerminal
?:
ExtHostTerminalIdentifier
,
internalLocation
?:
TerminalLocation
|
{
viewColumn
:
number
,
preserveState
?:
boolean
}
|
{
splitActiveTerminal
:
boolean
}):
TerminalLocation
|
vscode
.
TerminalEditorLocationOptions
|
{
parentTerminal
:
ExtHostTerminalIdentifier
}
|
{
splitActiveTerminal
:
boolean
}
|
vscode
.
TerminalEditorLocationOptions
|
undefined
{
if
(
typeof
location
===
'
object
'
&&
'
parentTerminal
'
in
location
)
{
return
parentTerminal
?
{
parentTerminal
}
:
undefined
;
}
else
if
(
internalLocation
)
{
location
=
internalLocation
;
private
_serializeParentTerminal
(
location
?:
TerminalLocation
|
vscode
.
TerminalEditorLocationOptions
|
vscode
.
TerminalSplitLocationOptions
,
parentTerminal
?:
ExtHostTerminalIdentifier
):
TerminalLocation
|
vscode
.
TerminalEditorLocationOptions
|
{
parentTerminal
:
ExtHostTerminalIdentifier
}
|
undefined
{
if
(
typeof
location
===
'
object
'
)
{
if
(
'
parentTerminal
'
in
location
&&
location
.
parentTerminal
&&
parentTerminal
)
{
return
{
parentTerminal
};
}
if
(
'
viewColumn
'
in
location
)
{
return
{
viewColumn
:
location
.
viewColumn
,
preserveFocus
:
location
.
preserveFocus
};
}
return
undefined
;
}
return
location
;
}
...
...
@@ -414,7 +421,7 @@ export abstract class BaseExtHostTerminalService extends Disposable implements I
public
createExtensionTerminal
(
options
:
vscode
.
ExtensionTerminalOptions
,
internalOptions
?:
ITerminalInternalOptions
):
vscode
.
Terminal
{
const
terminal
=
new
ExtHostTerminal
(
this
.
_proxy
,
generateUuid
(),
options
,
options
.
name
);
const
p
=
new
ExtHostPseudoterminal
(
options
.
pty
);
terminal
.
createExtensionTerminal
(
this
.
_resolveLocation
(
options
.
location
),
internalOptions
?
.
resolvedExtHostIdentifier
,
asTerminalIcon
(
options
.
iconPath
),
asTerminalColor
(
options
.
color
)).
then
(
id
=>
{
terminal
.
createExtensionTerminal
(
options
.
location
,
this
.
_serializeParentTerminal
(
options
,
internalOptions
)
.
resolvedExtHostIdentifier
,
asTerminalIcon
(
options
.
iconPath
),
asTerminalColor
(
options
.
color
)).
then
(
id
=>
{
const
disposable
=
this
.
_setupExtHostProcessListeners
(
id
,
p
);
this
.
_terminalProcessDisposables
[
id
]
=
disposable
;
});
...
...
@@ -422,17 +429,22 @@ export abstract class BaseExtHostTerminalService extends Disposable implements I
return
terminal
.
value
;
}
private
_resolveLocation
(
location
?:
TerminalLocation
|
vscode
.
TerminalEditorLocationOptions
|
vscode
.
TerminalSplitLocationOptions
):
undefined
|
TerminalLocation
|
vscode
.
TerminalEditorLocationOptions
{
if
(
typeof
location
===
'
object
'
&&
'
viewColumn
'
in
location
&&
location
.
viewColumn
!==
undefined
)
{
return
{
viewColumn
:
location
.
viewColumn
,
preserveFocus
:
location
.
preserveFocus
};
}
else
if
(
typeof
location
===
'
object
'
&&
'
parentTerminal
'
in
location
)
{
// parent terminal exthost ID is passed in internal options
// for conversion to TerminalInstance in mainThreadTerminalService
return
undefined
;
}
else
if
(
location
===
TerminalLocation
.
Editor
||
location
===
TerminalLocation
.
Panel
)
{
return
location
;
protected
_serializeParentTerminal
(
options
:
vscode
.
TerminalOptions
,
internalOptions
?:
ITerminalInternalOptions
):
ITerminalInternalOptions
{
internalOptions
=
internalOptions
?
internalOptions
:
{};
if
(
options
.
location
&&
typeof
options
.
location
===
'
object
'
&&
'
parentTerminal
'
in
options
.
location
)
{
const
parentTerminal
=
options
.
location
.
parentTerminal
;
if
(
parentTerminal
)
{
const
parentExtHostTerminal
=
this
.
_terminals
.
find
(
t
=>
t
.
value
===
parentTerminal
);
if
(
parentExtHostTerminal
)
{
internalOptions
.
resolvedExtHostIdentifier
=
parentExtHostTerminal
.
_id
;
}
}
}
else
if
(
options
.
location
&&
typeof
options
.
location
!==
'
object
'
)
{
internalOptions
.
location
=
options
.
location
;
}
else
if
(
internalOptions
.
location
&&
typeof
internalOptions
.
location
===
'
object
'
&&
'
splitActiveTerminal
'
in
internalOptions
.
location
)
{
internalOptions
.
location
=
{
splitActiveTerminal
:
true
};
}
return
location
;
return
internalOptions
;
}
public
attachPtyToTerminal
(
id
:
number
,
pty
:
vscode
.
Pseudoterminal
):
void
{
...
...
src/vs/workbench/api/node/extHostTerminalService.ts
浏览文件 @
ae0ec56d
...
...
@@ -26,22 +26,4 @@ export class ExtHostTerminalService extends BaseExtHostTerminalService {
terminal
.
create
(
options
,
this
.
_serializeParentTerminal
(
options
,
internalOptions
));
return
terminal
.
value
;
}
private
_serializeParentTerminal
(
options
:
vscode
.
TerminalOptions
,
internalOptions
?:
ITerminalInternalOptions
):
ITerminalInternalOptions
{
internalOptions
=
internalOptions
?
internalOptions
:
{};
if
(
options
.
location
&&
typeof
options
.
location
===
'
object
'
&&
'
parentTerminal
'
in
options
.
location
)
{
const
parentTerminal
=
options
.
location
.
parentTerminal
;
if
(
parentTerminal
)
{
const
parentExtHostTerminal
=
this
.
_terminals
.
find
(
t
=>
t
.
value
===
parentTerminal
);
if
(
parentExtHostTerminal
)
{
internalOptions
.
resolvedExtHostIdentifier
=
parentExtHostTerminal
.
_id
;
}
}
}
else
if
(
options
.
location
&&
typeof
options
.
location
!==
'
object
'
)
{
internalOptions
.
location
=
options
.
location
;
}
else
if
(
internalOptions
.
location
&&
typeof
internalOptions
.
location
===
'
object
'
&&
'
splitActiveTerminal
'
in
internalOptions
.
location
)
{
internalOptions
.
location
=
{
splitActiveTerminal
:
true
};
}
return
internalOptions
;
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录