Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
掘金者说
vscode
提交
3db5cd54
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,发现更多精彩内容 >>
提交
3db5cd54
编写于
2月 01, 2021
作者:
H
Habib Karim
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Implement Pseudoterminal.onDidChangeName
上级
28a74470
变更
7
隐藏空白更改
内联
并排
Showing
7 changed file
with
60 addition
and
55 deletion
+60
-55
extensions/vscode-api-tests/src/singlefolder-tests/terminal.test.ts
.../vscode-api-tests/src/singlefolder-tests/terminal.test.ts
+36
-30
src/vs/vscode.proposed.d.ts
src/vs/vscode.proposed.d.ts
+16
-3
src/vs/workbench/api/browser/mainThreadTerminalService.ts
src/vs/workbench/api/browser/mainThreadTerminalService.ts
+4
-4
src/vs/workbench/api/common/extHost.api.impl.ts
src/vs/workbench/api/common/extHost.api.impl.ts
+0
-4
src/vs/workbench/api/common/extHostTerminalService.ts
src/vs/workbench/api/common/extHostTerminalService.ts
+4
-8
src/vs/workbench/contrib/terminal/browser/terminalProcessExtHostProxy.ts
...h/contrib/terminal/browser/terminalProcessExtHostProxy.ts
+0
-5
src/vs/workbench/contrib/terminal/common/terminal.ts
src/vs/workbench/contrib/terminal/common/terminal.ts
+0
-1
未找到文件。
extensions/vscode-api-tests/src/singlefolder-tests/terminal.test.ts
浏览文件 @
3db5cd54
...
...
@@ -3,7 +3,7 @@
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import
{
window
,
Pseudoterminal
,
EventEmitter
,
TerminalDimensions
,
workspace
,
ConfigurationTarget
,
Disposable
,
UIKind
,
env
,
EnvironmentVariableMutatorType
,
EnvironmentVariableMutator
,
extensions
,
ExtensionContext
,
TerminalOptions
,
ExtensionTerminalOptions
,
commands
}
from
'
vscode
'
;
import
{
window
,
Pseudoterminal
,
EventEmitter
,
TerminalDimensions
,
workspace
,
ConfigurationTarget
,
Disposable
,
UIKind
,
env
,
EnvironmentVariableMutatorType
,
EnvironmentVariableMutator
,
extensions
,
ExtensionContext
,
TerminalOptions
,
ExtensionTerminalOptions
}
from
'
vscode
'
;
import
{
doesNotThrow
,
equal
,
ok
,
deepEqual
,
throws
}
from
'
assert
'
;
// Disable terminal tests:
...
...
@@ -284,35 +284,6 @@ import { doesNotThrow, equal, ok, deepEqual, throws } from 'assert';
// terminal1.show();
// });
test
(
'
onDidChangeTerminalName event fires when terminal name is changed
'
,
(
done
)
=>
{
disposables
.
push
(
window
.
onDidOpenTerminal
(
term
=>
{
try
{
equal
(
term
.
name
,
'
foo
'
);
}
catch
(
e
)
{
done
(
e
);
return
;
}
disposables
.
push
(
window
.
onDidChangeTerminalName
(
t
=>
{
try
{
equal
(
t
.
name
,
'
bar
'
);
}
catch
(
e
)
{
done
(
e
);
return
;
}
disposables
.
push
(
window
.
onDidCloseTerminal
(()
=>
done
()));
terminal
.
dispose
();
}));
}));
const
pty
:
Pseudoterminal
=
{
onDidWrite
:
new
EventEmitter
<
string
>
().
event
,
open
:
async
()
=>
{
await
commands
.
executeCommand
(
'
workbench.action.terminal.renameWithArg
'
,
{
name
:
'
bar
'
});
},
close
:
()
=>
{
}
};
const
terminal
=
window
.
createTerminal
({
name
:
'
foo
'
,
pty
});
});
suite
(
'
hideFromUser
'
,
()
=>
{
test
(
'
should be available to terminals API
'
,
done
=>
{
const
terminal
=
window
.
createTerminal
({
name
:
'
bg
'
,
hideFromUser
:
true
});
...
...
@@ -517,6 +488,41 @@ import { doesNotThrow, equal, ok, deepEqual, throws } from 'assert';
const
terminal
=
window
.
createTerminal
({
name
:
'
foo
'
,
pty
});
});
test
(
'
should change terminal name
'
,
(
done
)
=>
{
disposables
.
push
(
window
.
onDidOpenTerminal
(
term
=>
{
try
{
equal
(
terminal
,
term
);
equal
(
terminal
.
name
,
'
foo
'
);
}
catch
(
e
)
{
done
(
e
);
return
;
}
disposables
.
push
(
window
.
onDidCloseTerminal
(
t
=>
{
try
{
equal
(
terminal
,
t
);
equal
(
terminal
.
name
,
'
bar
'
);
}
catch
(
e
)
{
done
(
e
);
return
;
}
done
();
}));
}));
const
changeNameEmitter
=
new
EventEmitter
<
string
>
();
const
closeEmitter
=
new
EventEmitter
<
number
|
undefined
>
();
const
pty
:
Pseudoterminal
=
{
onDidWrite
:
new
EventEmitter
<
string
>
().
event
,
onDidChangeName
:
changeNameEmitter
.
event
,
onDidClose
:
closeEmitter
.
event
,
open
:
()
=>
{
changeNameEmitter
.
fire
(
'
bar
'
);
closeEmitter
.
fire
(
undefined
);
},
close
:
()
=>
{
}
};
const
terminal
=
window
.
createTerminal
({
name
:
'
foo
'
,
pty
});
});
test
(
'
exitStatus.code should be set to the exit code (undefined)
'
,
(
done
)
=>
{
disposables
.
push
(
window
.
onDidOpenTerminal
(
term
=>
{
try
{
...
...
src/vs/vscode.proposed.d.ts
浏览文件 @
3db5cd54
...
...
@@ -879,11 +879,24 @@ declare module 'vscode' {
//#region Terminal name change event https://github.com/microsoft/vscode/issues/114898
export
namespace
window
{
export
interface
Pseudoterminal
{
/**
* An event which fires when the name of the terminal changes.
* An event that when fired allows changing the name of the terminal.
*
* **Example:** Change the terminal name to "My new terminal".
* ```typescript
* const writeEmitter = new vscode.EventEmitter<string>();
* const changeNameEmitter = new vscode.EventEmitter<string>();
* const pty: vscode.Pseudoterminal = {
* onDidWrite: writeEmitter.event,
* onDidChangeName: changeNameEmitter.event,
* open: () => changeNameEmitter.fire('My new terminal'),
* close: () => {}
* };
* vscode.window.createTerminal({ name: 'My terminal', pty });
* ```
*/
export
const
onDidChangeTerminalName
:
Event
<
Terminal
>
;
onDidChangeName
?:
Event
<
string
>
;
}
//#endregion
...
...
src/vs/workbench/api/browser/mainThreadTerminalService.ts
浏览文件 @
3db5cd54
...
...
@@ -4,7 +4,7 @@
*--------------------------------------------------------------------------------------------*/
import
{
DisposableStore
,
Disposable
,
IDisposable
}
from
'
vs/base/common/lifecycle
'
;
import
{
IShellLaunchConfig
,
ITerminalProcessExtHostProxy
,
ISpawnExtHostProcessRequest
,
ITerminalDimensions
,
IAvailableShellsRequest
,
IDefaultShellAndArgsRequest
,
IStartExtensionTerminalRequest
,
ITerminalConfiguration
,
TERMINAL_CONFIG_SECTION
}
from
'
vs/workbench/contrib/terminal/common/terminal
'
;
import
{
IShellLaunchConfig
,
ITerminalProcessExtHostProxy
,
ISpawnExtHostProcessRequest
,
ITerminalDimensions
,
IAvailableShellsRequest
,
IDefaultShellAndArgsRequest
,
IStartExtensionTerminalRequest
,
ITerminalConfiguration
,
TERMINAL_CONFIG_SECTION
,
TitleEventSource
}
from
'
vs/workbench/contrib/terminal/common/terminal
'
;
import
{
ExtHostContext
,
ExtHostTerminalServiceShape
,
MainThreadTerminalServiceShape
,
MainContext
,
IExtHostContext
,
IShellLaunchConfigDto
,
TerminalLaunchConfig
,
ITerminalDimensionsDto
,
TerminalIdentifier
}
from
'
vs/workbench/api/common/extHost.protocol
'
;
import
{
extHostNamedCustomer
}
from
'
vs/workbench/api/common/extHostCustomers
'
;
import
{
URI
}
from
'
vs/base/common/uri
'
;
...
...
@@ -308,9 +308,9 @@ export class MainThreadTerminalService implements MainThreadTerminalServiceShape
}
public
$sendProcessTitle
(
terminalId
:
number
,
title
:
string
):
void
{
const
terminalProcess
=
this
.
_terminalProcessProxies
.
get
(
terminalId
);
if
(
terminalProcess
)
{
terminalProcess
.
emitTitle
(
title
);
const
instance
=
this
.
_terminalService
.
getInstanceFromId
(
terminalId
);
if
(
instance
)
{
instance
.
setTitle
(
title
,
TitleEventSource
.
Api
);
}
}
...
...
src/vs/workbench/api/common/extHost.api.impl.ts
浏览文件 @
3db5cd54
...
...
@@ -540,10 +540,6 @@ export function createApiFactoryAndRegisterActors(accessor: ServicesAccessor): I
checkProposedApiEnabled
(
extension
);
return
extHostTerminalService
.
onDidWriteTerminalData
(
listener
,
thisArg
,
disposables
);
},
onDidChangeTerminalName
(
listener
,
thisArg
?,
disposables
?)
{
checkProposedApiEnabled
(
extension
);
return
extHostTerminalService
.
onDidChangeTerminalName
(
listener
,
thisArg
,
disposables
);
},
get
state
()
{
return
extHostWindow
.
state
;
},
...
...
src/vs/workbench/api/common/extHostTerminalService.ts
浏览文件 @
3db5cd54
...
...
@@ -34,7 +34,6 @@ export interface IExtHostTerminalService extends ExtHostTerminalServiceShape, ID
onDidChangeActiveTerminal
:
Event
<
vscode
.
Terminal
|
undefined
>
;
onDidChangeTerminalDimensions
:
Event
<
vscode
.
TerminalDimensionsChangeEvent
>
;
onDidWriteTerminalData
:
Event
<
vscode
.
TerminalDataWriteEvent
>
;
onDidChangeTerminalName
:
Event
<
vscode
.
Terminal
>
;
createTerminal
(
name
?:
string
,
shellPath
?:
string
,
shellArgs
?:
string
[]
|
string
):
vscode
.
Terminal
;
createTerminalFromOptions
(
options
:
vscode
.
TerminalOptions
,
isFeatureTerminal
?:
boolean
):
vscode
.
Terminal
;
...
...
@@ -249,6 +248,9 @@ export class ExtHostPseudoterminal implements ITerminalChildProcess {
if
(
this
.
_pty
.
onDidOverrideDimensions
)
{
this
.
_pty
.
onDidOverrideDimensions
(
e
=>
this
.
_onProcessOverrideDimensions
.
fire
(
e
?
{
cols
:
e
.
columns
,
rows
:
e
.
rows
}
:
e
));
}
if
(
this
.
_pty
.
onDidChangeName
)
{
this
.
_pty
.
onDidChangeName
(
title
=>
this
.
_onProcessTitleChanged
.
fire
(
title
));
}
this
.
_pty
.
open
(
initialDimensions
?
initialDimensions
:
undefined
);
...
...
@@ -298,8 +300,6 @@ export abstract class BaseExtHostTerminalService extends Disposable implements I
public
get
onDidChangeTerminalDimensions
():
Event
<
vscode
.
TerminalDimensionsChangeEvent
>
{
return
this
.
_onDidChangeTerminalDimensions
&&
this
.
_onDidChangeTerminalDimensions
.
event
;
}
protected
readonly
_onDidWriteTerminalData
:
Emitter
<
vscode
.
TerminalDataWriteEvent
>
;
public
get
onDidWriteTerminalData
():
Event
<
vscode
.
TerminalDataWriteEvent
>
{
return
this
.
_onDidWriteTerminalData
&&
this
.
_onDidWriteTerminalData
.
event
;
}
protected
readonly
_onDidChangeTerminalName
:
Emitter
<
vscode
.
Terminal
>
=
new
Emitter
<
vscode
.
Terminal
>
();
public
get
onDidChangeTerminalName
():
Event
<
vscode
.
Terminal
>
{
return
this
.
_onDidChangeTerminalName
&&
this
.
_onDidChangeTerminalName
.
event
;
}
constructor
(
supportsProcesses
:
boolean
,
...
...
@@ -398,11 +398,7 @@ export abstract class BaseExtHostTerminalService extends Disposable implements I
public
async
$acceptTerminalTitleChange
(
id
:
number
,
name
:
string
):
Promise
<
void
>
{
const
terminal
=
this
.
_getTerminalById
(
id
);
if
(
terminal
)
{
const
original
=
terminal
.
name
;
if
(
original
!==
name
)
{
terminal
.
name
=
name
;
this
.
_onDidChangeTerminalName
.
fire
(
terminal
);
}
terminal
.
name
=
name
;
}
}
...
...
src/vs/workbench/contrib/terminal/browser/terminalProcessExtHostProxy.ts
浏览文件 @
3db5cd54
...
...
@@ -66,11 +66,6 @@ export class TerminalProcessExtHostProxy extends Disposable implements ITerminal
this
.
_onProcessData
.
fire
(
data
);
}
public
emitTitle
(
title
:
string
):
void
{
hasReceivedResponseFromRemoteExtHost
=
true
;
this
.
_onProcessTitleChanged
.
fire
(
title
);
}
public
emitReady
(
pid
:
number
,
cwd
:
string
):
void
{
this
.
_onProcessReady
.
fire
({
pid
,
cwd
});
}
...
...
src/vs/workbench/contrib/terminal/common/terminal.ts
浏览文件 @
3db5cd54
...
...
@@ -418,7 +418,6 @@ export interface ITerminalProcessExtHostProxy extends IDisposable {
readonly
terminalId
:
number
;
emitData
(
data
:
string
):
void
;
emitTitle
(
title
:
string
):
void
;
emitReady
(
pid
:
number
,
cwd
:
string
):
void
;
emitExit
(
exitCode
:
number
|
undefined
):
void
;
emitOverrideDimensions
(
dimensions
:
ITerminalDimensions
|
undefined
):
void
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录