Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
05606c1e
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,发现更多精彩内容 >>
提交
05606c1e
编写于
11月 17, 2020
作者:
A
Andre Weinand
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
reuse terminals only for unchanged config; fixes #81345
上级
87050c7f
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
18 addition
and
10 deletion
+18
-10
src/vs/workbench/api/node/extHostDebugService.ts
src/vs/workbench/api/node/extHostDebugService.ts
+18
-10
未找到文件。
src/vs/workbench/api/node/extHostDebugService.ts
浏览文件 @
05606c1e
...
...
@@ -79,22 +79,26 @@ export class ExtHostDebugService extends ExtHostDebugServiceBase {
});
}
let
terminal
=
await
this
.
_integratedTerminalInstances
.
checkout
();
const
configProvider
=
await
this
.
_configurationService
.
getConfigProvider
();
const
shell
=
this
.
_terminalService
.
getDefaultShell
(
true
,
configProvider
);
const
shellArgs
=
this
.
_terminalService
.
getDefaultShellArgs
(
true
,
configProvider
);
const
shellConfig
=
JSON
.
stringify
({
shell
,
shellArgs
});
let
terminal
=
await
this
.
_integratedTerminalInstances
.
checkout
(
shellConfig
);
let
cwdForPrepareCommand
:
string
|
undefined
;
let
giveShellTimeToInitialize
=
false
;
if
(
!
terminal
)
{
const
options
:
vscode
.
TerminalOptions
=
{
shellPath
:
shell
,
shellArgs
:
this
.
_terminalService
.
getDefaultShellArgs
(
true
,
configProvider
)
,
shellArgs
:
shellArgs
,
cwd
:
args
.
cwd
,
name
:
args
.
title
||
nls
.
localize
(
'
debug.terminal.title
'
,
"
debuggee
"
),
};
giveShellTimeToInitialize
=
true
;
terminal
=
this
.
_terminalService
.
createTerminalFromOptions
(
options
,
true
);
this
.
_integratedTerminalInstances
.
insert
(
terminal
);
this
.
_integratedTerminalInstances
.
insert
(
terminal
,
shellConfig
);
}
else
{
cwdForPrepareCommand
=
args
.
cwd
;
...
...
@@ -132,9 +136,9 @@ class DebugTerminalCollection {
*/
private
static
minUseDelay
=
1000
;
private
_terminalInstances
=
new
Map
<
vscode
.
Terminal
,
number
/* last used at */
>
();
private
_terminalInstances
=
new
Map
<
vscode
.
Terminal
,
{
lastUsedAt
:
number
,
config
:
string
}
>
();
public
async
checkout
()
{
public
async
checkout
(
config
:
string
)
{
const
entries
=
[...
this
.
_terminalInstances
.
keys
()];
const
promises
=
entries
.
map
((
terminal
)
=>
createCancelablePromise
(
async
ct
=>
{
const
pid
=
await
terminal
.
processId
;
...
...
@@ -144,20 +148,24 @@ class DebugTerminalCollection {
// important: date check and map operations must be synchronous
const
now
=
Date
.
now
();
const
usedAt
=
this
.
_terminalInstances
.
get
(
terminal
);
if
(
!
usedAt
||
usedAt
+
DebugTerminalCollection
.
minUseDelay
>
now
||
ct
.
isCancellationRequested
)
{
const
termInfo
=
this
.
_terminalInstances
.
get
(
terminal
);
if
(
!
termInfo
||
termInfo
.
lastUsedAt
+
DebugTerminalCollection
.
minUseDelay
>
now
||
ct
.
isCancellationRequested
)
{
return
null
;
}
if
(
termInfo
.
config
!==
config
)
{
return
null
;
}
t
his
.
_terminalInstances
.
set
(
terminal
,
now
)
;
t
ermInfo
.
lastUsedAt
=
now
;
return
terminal
;
}));
return
await
firstParallel
(
promises
,
(
t
):
t
is
vscode
.
Terminal
=>
!!
t
);
}
public
insert
(
terminal
:
vscode
.
Terminal
)
{
this
.
_terminalInstances
.
set
(
terminal
,
Date
.
now
()
);
public
insert
(
terminal
:
vscode
.
Terminal
,
termConfig
:
string
)
{
this
.
_terminalInstances
.
set
(
terminal
,
{
lastUsedAt
:
Date
.
now
(),
config
:
termConfig
}
);
}
public
onTerminalClosed
(
terminal
:
vscode
.
Terminal
)
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录