Skip to content

Commit f86174b

Browse files
authored
Export Interactive Window tab input (microsoft#154864)
* Export Interactive Window tab input. * Update inputBoxUri. * remove inputBoxUri from API
1 parent d627aa4 commit f86174b

File tree

8 files changed

+51
-8
lines changed

8 files changed

+51
-8
lines changed

src/vs/workbench/api/browser/mainThreadEditorTabs.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import { IConfigurationService } from 'vs/platform/configuration/common/configur
2222
import { SideBySideEditorInput } from 'vs/workbench/common/editor/sideBySideEditorInput';
2323
import { isEqual } from 'vs/base/common/resources';
2424
import { isGroupEditorMoveEvent } from 'vs/workbench/common/editor/editorGroupModel';
25+
import { InteractiveEditorInput } from 'vs/workbench/contrib/interactive/browser/interactiveEditorInput';
2526

2627
interface TabInfo {
2728
tab: IEditorTabDto;
@@ -162,6 +163,13 @@ export class MainThreadEditorTabs implements MainThreadEditorTabsShape {
162163
}
163164
}
164165

166+
if (editor instanceof InteractiveEditorInput) {
167+
return {
168+
kind: TabInputKind.InteractiveEditorInput,
169+
uri: editor.resource
170+
};
171+
}
172+
165173
return { kind: TabInputKind.UnknownInput };
166174
}
167175

src/vs/workbench/api/common/extHost.api.impl.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1348,6 +1348,7 @@ export function createApiFactoryAndRegisterActors(accessor: ServicesAccessor): I
13481348
TabInputNotebookDiff: extHostTypes.NotebookDiffEditorTabInput,
13491349
TabInputWebview: extHostTypes.WebviewEditorTabInput,
13501350
TabInputTerminal: extHostTypes.TerminalEditorTabInput,
1351+
TabInputInteractiveWindow: extHostTypes.InteractiveWindowInput,
13511352
TerminalExitReason: extHostTypes.TerminalExitReason
13521353
};
13531354
};

src/vs/workbench/api/common/extHost.protocol.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -624,7 +624,8 @@ export const enum TabInputKind {
624624
NotebookDiffInput,
625625
CustomEditorInput,
626626
WebviewEditorInput,
627-
TerminalEditorInput
627+
TerminalEditorInput,
628+
InteractiveEditorInput,
628629
}
629630

630631
export const enum TabModelOperationKind {
@@ -673,11 +674,16 @@ export interface WebviewInputDto {
673674
viewType: string;
674675
}
675676

677+
export interface InteractiveEditorInputDto {
678+
kind: TabInputKind.InteractiveEditorInput;
679+
uri: UriComponents;
680+
}
681+
676682
export interface TabInputDto {
677683
kind: TabInputKind.TerminalEditorInput;
678684
}
679685

680-
export type AnyInputDto = UnknownInputDto | TextInputDto | TextDiffInputDto | NotebookInputDto | NotebookDiffInputDto | CustomInputDto | WebviewInputDto | TabInputDto;
686+
export type AnyInputDto = UnknownInputDto | TextInputDto | TextDiffInputDto | NotebookInputDto | NotebookDiffInputDto | CustomInputDto | WebviewInputDto | InteractiveEditorInputDto | TabInputDto;
681687

682688
export interface MainThreadEditorTabsShape extends IDisposable {
683689
// manage tabs: move, close, rearrange etc

src/vs/workbench/api/common/extHostEditorTabs.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import { IEditorTabDto, IEditorTabGroupDto, IExtHostEditorTabsShape, MainContext
99
import { URI } from 'vs/base/common/uri';
1010
import { Emitter } from 'vs/base/common/event';
1111
import { createDecorator } from 'vs/platform/instantiation/common/instantiation';
12-
import { CustomEditorTabInput, NotebookDiffEditorTabInput, NotebookEditorTabInput, TerminalEditorTabInput, TextDiffTabInput, TextTabInput, WebviewEditorTabInput } from 'vs/workbench/api/common/extHostTypes';
12+
import { CustomEditorTabInput, InteractiveWindowInput, NotebookDiffEditorTabInput, NotebookEditorTabInput, TerminalEditorTabInput, TextDiffTabInput, TextTabInput, WebviewEditorTabInput } from 'vs/workbench/api/common/extHostTypes';
1313
import { IExtHostRpcService } from 'vs/workbench/api/common/extHostRpcService';
1414
import { assertIsDefined } from 'vs/base/common/types';
1515
import { diffSets } from 'vs/base/common/collections';
@@ -21,7 +21,7 @@ export interface IExtHostEditorTabs extends IExtHostEditorTabsShape {
2121

2222
export const IExtHostEditorTabs = createDecorator<IExtHostEditorTabs>('IExtHostEditorTabs');
2323

24-
type AnyTabInput = TextTabInput | TextDiffTabInput | CustomEditorTabInput | NotebookEditorTabInput | NotebookDiffEditorTabInput | WebviewEditorTabInput | TerminalEditorTabInput;
24+
type AnyTabInput = TextTabInput | TextDiffTabInput | CustomEditorTabInput | NotebookEditorTabInput | NotebookDiffEditorTabInput | WebviewEditorTabInput | TerminalEditorTabInput | InteractiveWindowInput;
2525

2626
class ExtHostEditorTab {
2727
private _apiObject: vscode.Tab | undefined;
@@ -94,6 +94,8 @@ class ExtHostEditorTab {
9494
return new NotebookDiffEditorTabInput(URI.revive(this._dto.input.original), URI.revive(this._dto.input.modified), this._dto.input.notebookType);
9595
case TabInputKind.TerminalEditorInput:
9696
return new TerminalEditorTabInput();
97+
case TabInputKind.InteractiveEditorInput:
98+
return new InteractiveWindowInput(URI.revive(this._dto.input.uri));
9799
default:
98100
return undefined;
99101
}

src/vs/workbench/api/common/extHostTypes.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3728,4 +3728,7 @@ export class NotebookDiffEditorTabInput {
37283728
export class TerminalEditorTabInput {
37293729
constructor() { }
37303730
}
3731+
export class InteractiveWindowInput {
3732+
constructor(readonly uri: URI) { }
3733+
}
37313734
//#endregion

src/vs/workbench/contrib/interactive/browser/interactiveEditorInput.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ import { IReference } from 'vs/base/common/lifecycle';
88
import * as paths from 'vs/base/common/path';
99
import { isEqual } from 'vs/base/common/resources';
1010
import { URI } from 'vs/base/common/uri';
11-
import { IModelService } from 'vs/editor/common/services/model';
1211
import { IResolvedTextEditorModel, ITextModelService } from 'vs/editor/common/services/resolverService';
1312
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
1413
import { IUntypedEditorInput } from 'vs/workbench/common/editor';
@@ -44,8 +43,10 @@ export class InteractiveEditorInput extends EditorInput implements ICompositeNot
4443
return [this._notebookEditorInput];
4544
}
4645

47-
override get resource() {
48-
return this.primary.resource;
46+
private _resource: URI;
47+
48+
override get resource(): URI {
49+
return this._resource;
4950
}
5051

5152
private _inputResource: URI;
@@ -71,7 +72,6 @@ export class InteractiveEditorInput extends EditorInput implements ICompositeNot
7172
inputResource: URI,
7273
title: string | undefined,
7374
@IInstantiationService instantiationService: IInstantiationService,
74-
@IModelService modelService: IModelService,
7575
@ITextModelService textModelService: ITextModelService,
7676

7777
@IInteractiveDocumentService interactiveDocumentService: IInteractiveDocumentService,
@@ -82,6 +82,7 @@ export class InteractiveEditorInput extends EditorInput implements ICompositeNot
8282
this._notebookEditorInput = input;
8383
this._register(this._notebookEditorInput);
8484
this._initTitle = title;
85+
this._resource = resource;
8586
this._inputResource = inputResource;
8687
this._inputResolver = null;
8788
this._editorModelReference = null;

src/vs/workbench/services/extensions/common/extensionsApiProposals.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ export const allApiProposals = Object.freeze({
3131
idToken: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.idToken.d.ts',
3232
inlineCompletionsAdditions: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.inlineCompletionsAdditions.d.ts',
3333
inlineCompletionsNew: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.inlineCompletionsNew.d.ts',
34+
interactiveWindow: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.interactiveWindow.d.ts',
3435
ipc: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.ipc.d.ts',
3536
notebookCellExecutionState: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.notebookCellExecutionState.d.ts',
3637
notebookContentProvider: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.notebookContentProvider.d.ts',
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
/*---------------------------------------------------------------------------------------------
2+
* Copyright (c) Microsoft Corporation. All rights reserved.
3+
* Licensed under the MIT License. See License.txt in the project root for license information.
4+
*--------------------------------------------------------------------------------------------*/
5+
6+
declare module 'vscode' {
7+
/**
8+
* The tab represents an interactive window.
9+
*/
10+
export class TabInputInteractiveWindow {
11+
/**
12+
* The uri of the history notebook in the interactive window.
13+
*/
14+
readonly uri: Uri;
15+
constructor(uri: Uri);
16+
}
17+
18+
export interface Tab {
19+
readonly input: TabInputText | TabInputTextDiff | TabInputCustom | TabInputWebview | TabInputNotebook | TabInputNotebookDiff | TabInputTerminal | TabInputInteractiveWindow | unknown;
20+
}
21+
}

0 commit comments

Comments
 (0)