Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
掘金者说
vscode
提交
51aab4d1
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,发现更多精彩内容 >>
提交
51aab4d1
编写于
7月 02, 2019
作者:
D
Daniel Imms
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Impl overrideDimensions
上级
059c3023
变更
8
隐藏空白更改
内联
并排
Showing
8 changed file
with
35 addition
and
11 deletion
+35
-11
src/vs/vscode.proposed.d.ts
src/vs/vscode.proposed.d.ts
+1
-1
src/vs/workbench/api/browser/mainThreadTerminalService.ts
src/vs/workbench/api/browser/mainThreadTerminalService.ts
+4
-0
src/vs/workbench/api/common/extHost.protocol.ts
src/vs/workbench/api/common/extHost.protocol.ts
+1
-0
src/vs/workbench/api/node/extHostTerminalService.ts
src/vs/workbench/api/node/extHostTerminalService.ts
+10
-6
src/vs/workbench/contrib/terminal/browser/terminalInstance.ts
...vs/workbench/contrib/terminal/browser/terminalInstance.ts
+3
-2
src/vs/workbench/contrib/terminal/browser/terminalProcessManager.ts
...kbench/contrib/terminal/browser/terminalProcessManager.ts
+6
-1
src/vs/workbench/contrib/terminal/common/terminal.ts
src/vs/workbench/contrib/terminal/common/terminal.ts
+3
-0
src/vs/workbench/contrib/terminal/common/terminalProcessExtHostProxy.ts
...ch/contrib/terminal/common/terminalProcessExtHostProxy.ts
+7
-1
未找到文件。
src/vs/vscode.proposed.d.ts
浏览文件 @
51aab4d1
...
...
@@ -1281,7 +1281,7 @@ declare module 'vscode' {
write
:
Event
<
string
>
;
// Lets the extension override the dimensions of the terminal
overrideDimensions
?:
Event
<
TerminalDimensions
>
;
overrideDimensions
?:
Event
<
TerminalDimensions
|
undefined
>
;
// Lets the extension exit the process with an exit code, this was not in the TerminalRenderer
// API but it makes sense to include this as it's the main thing missing for a virtual process
...
...
src/vs/workbench/api/browser/mainThreadTerminalService.ts
浏览文件 @
51aab4d1
...
...
@@ -294,6 +294,10 @@ export class MainThreadTerminalService implements MainThreadTerminalServiceShape
delete
this
.
_terminalProcesses
[
terminalId
];
}
public
$sendOverrideDimensions
(
terminalId
:
number
,
dimensions
:
ITerminalDimensions
|
undefined
):
void
{
this
.
_terminalProcesses
[
terminalId
].
then
(
e
=>
e
.
emitOverrideDimensions
(
dimensions
));
}
public
$sendProcessInitialCwd
(
terminalId
:
number
,
initialCwd
:
string
):
void
{
this
.
_terminalProcesses
[
terminalId
].
then
(
e
=>
e
.
emitInitialCwd
(
initialCwd
));
}
...
...
src/vs/workbench/api/common/extHost.protocol.ts
浏览文件 @
51aab4d1
...
...
@@ -403,6 +403,7 @@ export interface MainThreadTerminalServiceShape extends IDisposable {
$sendProcessData
(
terminalId
:
number
,
data
:
string
):
void
;
$sendProcessReady
(
terminalId
:
number
,
pid
:
number
,
cwd
:
string
):
void
;
$sendProcessExit
(
terminalId
:
number
,
exitCode
:
number
):
void
;
$sendOverrideDimensions
(
terminalId
:
number
,
dimensions
:
ITerminalDimensions
|
undefined
):
void
;
$sendProcessInitialCwd
(
terminalId
:
number
,
cwd
:
string
):
void
;
$sendProcessCwd
(
terminalId
:
number
,
initialCwd
:
string
):
void
;
...
...
src/vs/workbench/api/node/extHostTerminalService.ts
浏览文件 @
51aab4d1
...
...
@@ -13,7 +13,7 @@ import { Event, Emitter } from 'vs/base/common/event';
import
{
ExtHostTerminalServiceShape
,
MainContext
,
MainThreadTerminalServiceShape
,
IMainContext
,
ShellLaunchConfigDto
,
IShellDefinitionDto
,
IShellAndArgsDto
}
from
'
vs/workbench/api/common/extHost.protocol
'
;
import
{
ExtHostConfiguration
,
ExtHostConfigProvider
}
from
'
vs/workbench/api/common/extHostConfiguration
'
;
import
{
ILogService
}
from
'
vs/platform/log/common/log
'
;
import
{
EXT_HOST_CREATION_DELAY
,
IShellLaunchConfig
,
ITerminalEnvironment
,
ITerminalChildProcess
}
from
'
vs/workbench/contrib/terminal/common/terminal
'
;
import
{
EXT_HOST_CREATION_DELAY
,
IShellLaunchConfig
,
ITerminalEnvironment
,
ITerminalChildProcess
,
ITerminalDimensions
}
from
'
vs/workbench/contrib/terminal/common/terminal
'
;
import
{
TerminalProcess
}
from
'
vs/workbench/contrib/terminal/node/terminalProcess
'
;
import
{
timeout
}
from
'
vs/base/common/async
'
;
import
{
ExtHostWorkspace
}
from
'
vs/workbench/api/common/extHostWorkspace
'
;
...
...
@@ -575,6 +575,9 @@ export class ExtHostTerminalService implements ExtHostTerminalServiceShape {
p
.
onProcessTitleChanged
(
title
=>
this
.
_proxy
.
$sendProcessTitle
(
id
,
title
));
p
.
onProcessData
(
data
=>
this
.
_proxy
.
$sendProcessData
(
id
,
data
));
p
.
onProcessExit
(
exitCode
=>
this
.
_onProcessExit
(
id
,
exitCode
));
if
(
p
.
onProcessOverrideDimensions
)
{
p
.
onProcessOverrideDimensions
(
e
=>
this
.
_proxy
.
$sendOverrideDimensions
(
id
,
e
));
}
this
.
_terminalProcesses
[
id
]
=
p
;
}
...
...
@@ -704,7 +707,7 @@ class ApiRequest {
}
class
ExtHostVirtualProcess
implements
ITerminalChildProcess
{
private
_queuedEvents
:
(
IQueuedEvent
<
string
>
|
IQueuedEvent
<
number
>
|
IQueuedEvent
<
{
pid
:
number
,
cwd
:
string
}
>
)[]
=
[];
private
_queuedEvents
:
(
IQueuedEvent
<
string
>
|
IQueuedEvent
<
number
>
|
IQueuedEvent
<
{
pid
:
number
,
cwd
:
string
}
>
|
IQueuedEvent
<
ITerminalDimensions
|
undefined
>
)[]
=
[];
private
_queueDisposables
:
IDisposable
[]
|
undefined
;
private
readonly
_onProcessData
=
new
Emitter
<
string
>
();
...
...
@@ -715,6 +718,8 @@ class ExtHostVirtualProcess implements ITerminalChildProcess {
public
get
onProcessReady
():
Event
<
{
pid
:
number
,
cwd
:
string
}
>
{
return
this
.
_onProcessReady
.
event
;
}
private
readonly
_onProcessTitleChanged
=
new
Emitter
<
string
>
();
public
get
onProcessTitleChanged
():
Event
<
string
>
{
return
this
.
_onProcessTitleChanged
.
event
;
}
private
readonly
_onProcessOverrideDimensions
=
new
Emitter
<
ITerminalDimensions
|
undefined
>
();
public
get
onProcessOverrideDimensions
():
Event
<
ITerminalDimensions
|
undefined
>
{
return
this
.
_onProcessOverrideDimensions
.
event
;
}
constructor
(
private
readonly
_virtualProcess
:
vscode
.
TerminalVirtualProcess
...
...
@@ -726,6 +731,7 @@ class ExtHostVirtualProcess implements ITerminalChildProcess {
}
// TODO: Handle overrideDimensions, use an optional event on the interface?
if
(
this
.
_virtualProcess
.
overrideDimensions
)
{
this
.
_queueDisposables
.
push
(
this
.
_virtualProcess
.
overrideDimensions
(
e
=>
this
.
_queuedEvents
.
push
({
emitter
:
this
.
_onProcessOverrideDimensions
,
data
:
e
?
{
cols
:
e
.
columns
,
rows
:
e
.
rows
}
:
undefined
})));
}
}
...
...
@@ -762,9 +768,7 @@ class ExtHostVirtualProcess implements ITerminalChildProcess {
startSendingEvents
():
void
{
// Flush all buffered events
this
.
_queuedEvents
.
forEach
(
e
=>
{
e
.
emitter
.
fire
(
<
any
>
e
.
data
);
});
this
.
_queuedEvents
.
forEach
(
e
=>
(
<
any
>
e
.
emitter
.
fire
)(
e
.
data
));
this
.
_queuedEvents
=
[];
this
.
_queueDisposables
=
undefined
;
...
...
@@ -774,7 +778,7 @@ class ExtHostVirtualProcess implements ITerminalChildProcess {
this
.
_virtualProcess
.
exit
(
e
=>
this
.
_onProcessExit
.
fire
(
e
));
}
if
(
this
.
_virtualProcess
.
overrideDimensions
)
{
// TODO: Implement this
this
.
_virtualProcess
.
overrideDimensions
(
e
=>
this
.
_onProcessOverrideDimensions
.
fire
(
e
?
{
cols
:
e
.
columns
,
rows
:
e
.
rows
}
:
e
));
}
}
}
...
...
src/vs/workbench/contrib/terminal/browser/terminalInstance.ts
浏览文件 @
51aab4d1
...
...
@@ -174,7 +174,7 @@ export class TerminalInstance implements ITerminalInstance {
private
_terminalHasTextContextKey
:
IContextKey
<
boolean
>
;
private
_cols
:
number
;
private
_rows
:
number
;
private
_dimensionsOverride
:
ITerminalDimensions
;
private
_dimensionsOverride
:
ITerminalDimensions
|
undefined
;
private
_windowsShellHelper
:
IWindowsShellHelper
|
undefined
;
private
_xtermReadyPromise
:
Promise
<
void
>
;
private
_titleReadyPromise
:
Promise
<
string
>
;
...
...
@@ -945,6 +945,7 @@ export class TerminalInstance implements ITerminalInstance {
this
.
_processManager
.
onProcessReady
(()
=>
this
.
_onProcessIdReady
.
fire
(
this
));
this
.
_processManager
.
onProcessExit
(
exitCode
=>
this
.
_onProcessExit
(
exitCode
));
this
.
_processManager
.
onProcessData
(
data
=>
this
.
_onData
.
fire
(
data
));
this
.
_processManager
.
onProcessOverrideDimensions
(
e
=>
this
.
setDimensions
(
e
));
if
(
this
.
_shellLaunchConfig
.
name
)
{
this
.
setTitle
(
this
.
_shellLaunchConfig
.
name
,
false
);
...
...
@@ -1343,7 +1344,7 @@ export class TerminalInstance implements ITerminalInstance {
return
this
.
_titleReadyPromise
;
}
public
setDimensions
(
dimensions
:
ITerminalDimensions
):
void
{
public
setDimensions
(
dimensions
:
ITerminalDimensions
|
undefined
):
void
{
this
.
_dimensionsOverride
=
dimensions
;
this
.
_resize
();
}
...
...
src/vs/workbench/contrib/terminal/browser/terminalProcessManager.ts
浏览文件 @
51aab4d1
...
...
@@ -5,7 +5,7 @@
import
*
as
platform
from
'
vs/base/common/platform
'
;
import
*
as
terminalEnvironment
from
'
vs/workbench/contrib/terminal/common/terminalEnvironment
'
;
import
{
ProcessState
,
ITerminalProcessManager
,
IShellLaunchConfig
,
ITerminalConfigHelper
,
ITerminalChildProcess
,
IBeforeProcessDataEvent
,
ITerminalEnvironment
}
from
'
vs/workbench/contrib/terminal/common/terminal
'
;
import
{
ProcessState
,
ITerminalProcessManager
,
IShellLaunchConfig
,
ITerminalConfigHelper
,
ITerminalChildProcess
,
IBeforeProcessDataEvent
,
ITerminalEnvironment
,
ITerminalDimensions
}
from
'
vs/workbench/contrib/terminal/common/terminal
'
;
import
{
ILogService
}
from
'
vs/platform/log/common/log
'
;
import
{
Emitter
,
Event
}
from
'
vs/base/common/event
'
;
import
{
IHistoryService
}
from
'
vs/workbench/services/history/common/history
'
;
...
...
@@ -68,6 +68,8 @@ export class TerminalProcessManager implements ITerminalProcessManager {
public
get
onProcessTitle
():
Event
<
string
>
{
return
this
.
_onProcessTitle
.
event
;
}
private
readonly
_onProcessExit
=
new
Emitter
<
number
>
();
public
get
onProcessExit
():
Event
<
number
>
{
return
this
.
_onProcessExit
.
event
;
}
private
readonly
_onProcessOverrideDimensions
=
new
Emitter
<
ITerminalDimensions
|
undefined
>
();
public
get
onProcessOverrideDimensions
():
Event
<
ITerminalDimensions
|
undefined
>
{
return
this
.
_onProcessOverrideDimensions
.
event
;
}
constructor
(
private
readonly
_terminalId
:
number
,
...
...
@@ -166,6 +168,9 @@ export class TerminalProcessManager implements ITerminalProcessManager {
this
.
_process
.
onProcessTitleChanged
(
title
=>
this
.
_onProcessTitle
.
fire
(
title
));
this
.
_process
.
onProcessExit
(
exitCode
=>
this
.
_onExit
(
exitCode
));
if
(
this
.
_process
.
onProcessOverrideDimensions
)
{
this
.
_process
.
onProcessOverrideDimensions
(
e
=>
this
.
_onProcessOverrideDimensions
.
fire
(
e
));
}
setTimeout
(()
=>
{
if
(
this
.
processState
===
ProcessState
.
LAUNCHING
)
{
...
...
src/vs/workbench/contrib/terminal/common/terminal.ts
浏览文件 @
51aab4d1
...
...
@@ -706,6 +706,7 @@ export interface ITerminalProcessManager extends IDisposable {
readonly
onProcessData
:
Event
<
string
>
;
readonly
onProcessTitle
:
Event
<
string
>
;
readonly
onProcessExit
:
Event
<
number
>
;
readonly
onProcessOverrideDimensions
:
Event
<
ITerminalDimensions
|
undefined
>
;
dispose
(
immediate
?:
boolean
):
void
;
createProcess
(
shellLaunchConfig
:
IShellLaunchConfig
,
cols
:
number
,
rows
:
number
,
isScreenReaderModeEnabled
:
boolean
):
Promise
<
void
>
;
...
...
@@ -743,6 +744,7 @@ export interface ITerminalProcessExtHostProxy extends IDisposable {
emitTitle
(
title
:
string
):
void
;
emitReady
(
pid
:
number
,
cwd
:
string
):
void
;
emitExit
(
exitCode
:
number
):
void
;
emitOverrideDimensions
(
dimensions
:
ITerminalDimensions
|
undefined
):
void
;
emitInitialCwd
(
initialCwd
:
string
):
void
;
emitCwd
(
cwd
:
string
):
void
;
emitLatency
(
latency
:
number
):
void
;
...
...
@@ -791,6 +793,7 @@ export interface ITerminalChildProcess {
onProcessExit
:
Event
<
number
>
;
onProcessReady
:
Event
<
{
pid
:
number
,
cwd
:
string
}
>
;
onProcessTitleChanged
:
Event
<
string
>
;
onProcessOverrideDimensions
?:
Event
<
ITerminalDimensions
|
undefined
>
;
/**
* Shutdown the terminal process.
...
...
src/vs/workbench/contrib/terminal/common/terminalProcessExtHostProxy.ts
浏览文件 @
51aab4d1
...
...
@@ -4,7 +4,7 @@
*--------------------------------------------------------------------------------------------*/
import
{
Event
,
Emitter
}
from
'
vs/base/common/event
'
;
import
{
ITerminalService
,
ITerminalProcessExtHostProxy
,
IShellLaunchConfig
,
ITerminalChildProcess
,
ITerminalConfigHelper
}
from
'
vs/workbench/contrib/terminal/common/terminal
'
;
import
{
ITerminalService
,
ITerminalProcessExtHostProxy
,
IShellLaunchConfig
,
ITerminalChildProcess
,
ITerminalConfigHelper
,
ITerminalDimensions
}
from
'
vs/workbench/contrib/terminal/common/terminal
'
;
import
{
Disposable
}
from
'
vs/base/common/lifecycle
'
;
import
{
URI
}
from
'
vs/base/common/uri
'
;
import
{
IRemoteAgentService
}
from
'
vs/workbench/services/remote/common/remoteAgentService
'
;
...
...
@@ -22,6 +22,8 @@ export class TerminalProcessExtHostProxy extends Disposable implements ITerminal
public
get
onProcessReady
():
Event
<
{
pid
:
number
,
cwd
:
string
}
>
{
return
this
.
_onProcessReady
.
event
;
}
private
readonly
_onProcessTitleChanged
=
this
.
_register
(
new
Emitter
<
string
>
());
public
readonly
onProcessTitleChanged
:
Event
<
string
>
=
this
.
_onProcessTitleChanged
.
event
;
private
readonly
_onProcessOverrideDimensions
=
new
Emitter
<
ITerminalDimensions
|
undefined
>
();
public
get
onProcessOverrideDimensions
():
Event
<
ITerminalDimensions
|
undefined
>
{
return
this
.
_onProcessOverrideDimensions
.
event
;
}
private
readonly
_onInput
=
this
.
_register
(
new
Emitter
<
string
>
());
public
readonly
onInput
:
Event
<
string
>
=
this
.
_onInput
.
event
;
...
...
@@ -87,6 +89,10 @@ export class TerminalProcessExtHostProxy extends Disposable implements ITerminal
this
.
dispose
();
}
public
emitOverrideDimensions
(
dimensions
:
ITerminalDimensions
|
undefined
):
void
{
this
.
_onProcessOverrideDimensions
.
fire
(
dimensions
);
}
public
emitInitialCwd
(
initialCwd
:
string
):
void
{
while
(
this
.
_pendingInitialCwdRequests
.
length
>
0
)
{
this
.
_pendingInitialCwdRequests
.
pop
()
!
(
initialCwd
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录