Открыть боковую панель
code
vscode
Коммиты
347baacd
Не подтверждена
Коммит
347baacd
создал
Мар 20, 2024
по автору
Daniel Imms
Просмотр файлов
Working data stream
владелец
1a7f864b
Изменения
6
Скрыть пробелы
Построчно
Рядом
src/vs/workbench/api/browser/mainThreadTerminalShellIntegration.ts
Просмотр файла @
347baacd
...
...
@@ -48,6 +48,9 @@ export class MainThreadTerminalShellIntegration extends Disposable implements Ma
this
.
_store
.
add
(
commandDetectionEndEvent
.
event
(
e
=>
{
this
.
_proxy
.
$acceptTerminalShellExecutionEnd
(
e
.
instance
.
instanceId
,
e
.
data
.
exitCode
);
}));
}
// TODO: This needs to go via the server on remote for performance reasons
// TerminalShellExecution.dataStream
this
.
_store
.
add
(
terminalService
.
onAnyInstanceData
(
e
=>
this
.
_proxy
.
$acceptTerminalShellExecutionData
(
e
.
instance
.
instanceId
,
e
.
data
)));
}
}
src/vs/workbench/api/common/extHost.protocol.ts
Просмотр файла @
347baacd
...
...
@@ -2269,6 +2269,7 @@ export interface ExtHostTerminalShellIntegrationShape {
$acceptDidChangeShellIntegration
(
id
:
number
):
void
;
$acceptTerminalShellExecutionStart
(
id
:
number
,
commandLine
:
string
,
cwd
:
URI
|
string
|
undefined
):
void
;
$acceptTerminalShellExecutionEnd
(
id
:
number
,
exitCode
:
number
|
undefined
):
void
;
$acceptTerminalShellExecutionData
(
id
:
number
,
data
:
string
):
void
;
}
export
interface
ExtHostSCMShape
{
...
...
src/vs/workbench/api/common/extHostTerminalShellIntegration.ts
Просмотр файла @
347baacd
...
...
@@ -50,8 +50,11 @@ export class ExtHostTerminalShellIntegration extends Disposable implements IExtH
this
.
onDidChangeTerminalShellIntegration
(
e
=>
{
console
.
log
(
'
*** onDidChangeTerminalShellIntegration
'
,
e
);
});
this
.
onDidStartTerminalShellExecution
(
e
=>
{
this
.
onDidStartTerminalShellExecution
(
async
e
=>
{
console
.
log
(
'
*** onDidStartTerminalShellExecution
'
,
e
);
for
await
(
const
d
of
e
.
dataStream
)
{
console
.
log
(
'
data
'
,
d
);
}
});
this
.
onDidEndTerminalShellExecution
(
e
=>
{
console
.
log
(
'
*** onDidEndTerminalShellExecution
'
,
e
);
...
...
@@ -90,6 +93,10 @@ export class ExtHostTerminalShellIntegration extends Disposable implements IExtH
this
.
_activeShellExecutions
.
get
(
id
)?.
endExecution
(
exitCode
);
this
.
_activeShellExecutions
.
delete
(
id
);
}
public
async
$acceptTerminalShellExecutionData
(
id
:
number
,
data
:
string
):
Promise
<
void
>
{
this
.
_activeShellExecutions
.
get
(
id
)?.
emitData
(
data
);
}
}
class
InternalTerminalShellIntegration
{
...
...
@@ -138,21 +145,24 @@ class InternalTerminalShellExecution {
get
exitCode
():
Promise
<
number
|
undefined
>
{
return
that
.
_exitCode
;
},
get
dataStream
():
AsyncItera
tor
<
string
>
{
get
dataStream
():
AsyncItera
ble
<
string
>
{
return
that
.
_createDataStream
();
}
};
}
private
_createDataStream
():
AsyncItera
tor
<
string
>
{
private
_createDataStream
():
AsyncItera
ble
<
string
>
{
// TODO: This must work correctly across multiple extensions
const
barrier
=
this
.
_dataStreamBarrier
=
new
Barrier
();
const
iterable
=
new
AsyncIterableObject
<
string
>
(
async
emitter
=>
{
this
.
_dataStreamEmitter
=
emitter
;
await
barrier
.
wait
();
});
return
iterable
;
}
return
iterable
[
Symbol
.
asyncIterator
]();
emitData
(
data
:
string
):
void
{
this
.
_dataStreamEmitter
?.
emitOne
(
data
);
}
endExecution
(
exitCode
:
number
|
undefined
):
void
{
...
...
src/vs/workbench/contrib/terminal/browser/terminal.ts
Просмотр файла @
347baacd
...
...
@@ -267,6 +267,7 @@ export interface ITerminalService extends ITerminalInstanceHost {
readonly
onDidChangeActiveGroup
:
Event
<
ITerminalGroup
|
undefined
>
;
// Multiplexed events
readonly
onAnyInstanceData
:
Event
<
{
instance
:
ITerminalInstance
;
data
:
string
}
>
;
readonly
onAnyInstanceDataInput
:
Event
<
ITerminalInstance
>
;
readonly
onAnyInstanceIconChange
:
Event
<
{
instance
:
ITerminalInstance
;
userInitiated
:
boolean
}
>
;
readonly
onAnyInstanceMaximumDimensionsChange
:
Event
<
ITerminalInstance
>
;
...
...
src/vs/workbench/contrib/terminal/browser/terminalService.ts
Просмотр файла @
347baacd
...
...
@@ -154,6 +154,8 @@ export class TerminalService extends Disposable implements ITerminalService {
get
onDidChangeActiveGroup
():
Event
<
ITerminalGroup
|
undefined
>
{
return
this
.
_onDidChangeActiveGroup
.
event
;
}
// Lazily initialized events that fire when the specified event fires on _any_ terminal
// TODO: Batch events
@
memoize
get
onAnyInstanceData
()
{
return
this
.
createOnInstanceEvent
(
instance
=>
Event
.
map
(
instance
.
onData
,
data
=>
({
instance
,
data
})));
}
@
memoize
get
onAnyInstanceDataInput
()
{
return
this
.
createOnInstanceEvent
(
e
=>
e
.
onDidInputData
);
}
@
memoize
get
onAnyInstanceIconChange
()
{
return
this
.
createOnInstanceEvent
(
e
=>
e
.
onIconChanged
);
}
@
memoize
get
onAnyInstanceMaximumDimensionsChange
()
{
return
this
.
createOnInstanceEvent
(
e
=>
Event
.
map
(
e
.
onMaximumDimensionsChanged
,
()
=>
e
,
e
.
store
));
}
...
...
src/vscode-dts/vscode.proposed.terminalShellIntegration.d.ts
Просмотр файла @
347baacd
...
...
@@ -43,7 +43,7 @@ declare module 'vscode' {
* console.log(data);
* }
*/
dataStream
:
AsyncItera
tor
<
string
>
;
dataStream
:
AsyncItera
ble
<
string
>
;
}
export
interface
Terminal
{
...
...
Редактирование
Предварительный просмотр
Поддерживает Markdown
0%
Попробовать снова
или
прикрепить новый файл
.
Отмена
You are about to add
0
people
to the discussion. Proceed with caution.
Сначала завершите редактирование этого сообщения!
Отмена
Пожалуйста,
зарегистрируйтесь
или
войдите
чтобы прокомментировать