Merge from vscode bead496a613e475819f89f08e9e882b841bc1fe8 (#14883)

* Merge from vscode bead496a613e475819f89f08e9e882b841bc1fe8

* Bump distro

* Upgrade GCC to 4.9 due to yarn install errors

* Update build image

* Fix bootstrap base url

* Bump distro

* Fix build errors

* Update source map file

* Disable checkbox for blocking migration issues (#15131)

* disable checkbox for blocking issues

* wip

* disable checkbox fixes

* fix strings

* Remove duplicate tsec command

* Default to off for tab color if settings not present

* re-skip failing tests

* Fix mocha error

* Bump sqlite version & fix notebooks search view

* Turn off esbuild warnings

* Update esbuild log level

* Fix overflowactionbar tests

* Fix ts-ignore in dropdown tests

* cleanup/fixes

* Fix hygiene

* Bundle in entire zone.js module

* Remove extra constructor param

* bump distro for web compile break

* bump distro for web compile break v2

* Undo log level change

* New distro

* Fix integration test scripts

* remove the "no yarn.lock changes" workflow

* fix scripts v2

* Update unit test scripts

* Ensure ads-kerberos2 updates in .vscodeignore

* Try fix unit tests

* Upload crash reports

* remove nogpu

* always upload crashes

* Use bash script

* Consolidate data/ext dir names

* Create in tmp directory

Co-authored-by: chlafreniere <hichise@gmail.com>
Co-authored-by: Christopher Suh <chsuh@microsoft.com>
Co-authored-by: chgagnon <chgagnon@microsoft.com>
This commit is contained in:
Karl Burtram
2021-04-27 14:01:59 -07:00
committed by GitHub
parent 7e1c0076ba
commit 867a963882
1817 changed files with 81812 additions and 50843 deletions

View File

@@ -3,7 +3,7 @@
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { getZoomLevel } from 'vs/base/browser/browser';
import { getPixelRatio, getZoomLevel } from 'vs/base/browser/browser';
import { flatten } from 'vs/base/common/arrays';
import { CancellationToken } from 'vs/base/common/cancellation';
import { Emitter, Event } from 'vs/base/common/event';
@@ -27,12 +27,12 @@ import { IStorageService, StorageScope, StorageTarget } from 'vs/platform/storag
import { NotebookExtensionDescription } from 'vs/workbench/api/common/extHost.protocol';
import { Memento } from 'vs/workbench/common/memento';
import { INotebookEditorContribution, notebookProviderExtensionPoint, notebookRendererExtensionPoint } from 'vs/workbench/contrib/notebook/browser/extensionPoint';
import { CellEditState, getActiveNotebookEditor, INotebookEditor, NotebookEditorOptions, updateEditorTopPadding } from 'vs/workbench/contrib/notebook/browser/notebookBrowser';
import { CellEditState, getActiveNotebookEditor, ICellViewModel, INotebookEditor, NotebookEditorOptions, updateEditorTopPadding } from 'vs/workbench/contrib/notebook/browser/notebookBrowser';
import { NotebookKernelProviderAssociationRegistry, NotebookViewTypesExtensionRegistry, updateNotebookKernelProvideAssociationSchema } from 'vs/workbench/contrib/notebook/browser/notebookKernelAssociation';
import { CellViewModel } from 'vs/workbench/contrib/notebook/browser/viewModel/notebookViewModel';
import { NotebookCellTextModel } from 'vs/workbench/contrib/notebook/common/model/notebookCellTextModel';
import { NotebookTextModel } from 'vs/workbench/contrib/notebook/common/model/notebookTextModel';
import { ACCESSIBLE_NOTEBOOK_DISPLAY_ORDER, BUILTIN_RENDERER_ID, CellKind, CellOutputKind, DisplayOrderKey, IDisplayOutput, INotebookDecorationRenderOptions, INotebookKernelInfo2, INotebookKernelProvider, INotebookRendererInfo, INotebookTextModel, IOrderedMimeType, ITransformedDisplayOutputDto, mimeTypeIsAlwaysSecure, mimeTypeSupportedByCore, notebookDocumentFilterMatch, NotebookEditorPriority, NOTEBOOK_DISPLAY_ORDER, RENDERER_NOT_AVAILABLE, sortMimeTypes } from 'vs/workbench/contrib/notebook/common/notebookCommon';
import { ACCESSIBLE_NOTEBOOK_DISPLAY_ORDER, BUILTIN_RENDERER_ID, CellEditType, CellKind, CellOutputKind, DisplayOrderKey, ICellEditOperation, IDisplayOutput, INotebookDecorationRenderOptions, INotebookKernelInfo2, INotebookKernelProvider, INotebookRendererInfo, INotebookTextModel, IOrderedMimeType, ITransformedDisplayOutputDto, mimeTypeIsAlwaysSecure, mimeTypeSupportedByCore, notebookDocumentFilterMatch, NotebookEditorPriority, NOTEBOOK_DISPLAY_ORDER, RENDERER_NOT_AVAILABLE, sortMimeTypes } from 'vs/workbench/contrib/notebook/common/notebookCommon';
import { NotebookOutputRendererInfo } from 'vs/workbench/contrib/notebook/common/notebookOutputRenderer';
import { NotebookEditorDescriptor, NotebookProviderInfo } from 'vs/workbench/contrib/notebook/common/notebookProvider';
import { IMainNotebookController, INotebookService } from 'vs/workbench/contrib/notebook/common/notebookService';
@@ -65,6 +65,10 @@ export class NotebookKernelProviderInfoStore extends Disposable {
return this._notebookKernelProviders.filter(provider => notebookDocumentFilterMatch(provider.selector, viewType, resource));
}
getContributedKernelProviders() {
return [...this._notebookKernelProviders.values()];
}
private _updateProviderExtensionsInfo() {
NotebookKernelProviderAssociationRegistry.extensionIds.length = 0;
NotebookKernelProviderAssociationRegistry.extensionDescriptions.length = 0;
@@ -237,7 +241,7 @@ class ModelData implements IDisposable {
}
export class NotebookService extends Disposable implements INotebookService, ICustomEditorViewTypesHandler {
declare readonly _serviceBrand: undefined;
private readonly _notebookProviders = new Map<string, { controller: IMainNotebookController, extensionData: NotebookExtensionDescription }>();
private readonly _notebookProviders = new Map<string, { controller: IMainNotebookController, extensionData: NotebookExtensionDescription; }>();
notebookProviderInfoStore: NotebookProviderInfoStore;
notebookRenderersInfoStore: NotebookOutputRendererInfoStore = new NotebookOutputRendererInfoStore();
notebookKernelProviderInfoStore: NotebookKernelProviderInfoStore = new NotebookKernelProviderInfoStore();
@@ -266,12 +270,12 @@ export class NotebookService extends Disposable implements INotebookService, ICu
private readonly _onDidChangeKernels = new Emitter<URI | undefined>();
onDidChangeKernels: Event<URI | undefined> = this._onDidChangeKernels.event;
private readonly _onDidChangeNotebookActiveKernel = new Emitter<{ uri: URI, providerHandle: number | undefined, kernelId: string | undefined }>();
onDidChangeNotebookActiveKernel: Event<{ uri: URI, providerHandle: number | undefined, kernelId: string | undefined }> = this._onDidChangeNotebookActiveKernel.event;
private readonly _onDidChangeNotebookActiveKernel = new Emitter<{ uri: URI, providerHandle: number | undefined, kernelFriendlyId: string | undefined; }>();
onDidChangeNotebookActiveKernel: Event<{ uri: URI, providerHandle: number | undefined, kernelFriendlyId: string | undefined; }> = this._onDidChangeNotebookActiveKernel.event;
private cutItems: NotebookCellTextModel[] | undefined;
private _lastClipboardIsCopy: boolean = true;
private _displayOrder: { userOrder: string[], defaultOrder: string[] } = Object.create(null);
private _displayOrder: { userOrder: string[], defaultOrder: string[]; } = Object.create(null);
private readonly _decorationOptionProviders = new Map<string, INotebookDecorationRenderOptions>();
constructor(
@@ -366,7 +370,7 @@ export class NotebookService extends Disposable implements INotebookService, ICu
// there is a `::before` or `::after` text decoration whose position is above or below current line
// we at least make sure that the editor top padding is at least one line
const editorOptions = this.configurationService.getValue<IEditorOptions>('editor');
updateEditorTopPadding(BareFontInfo.createFromRawSettings(editorOptions, getZoomLevel()).lineHeight + 2);
updateEditorTopPadding(BareFontInfo.createFromRawSettings(editorOptions, getZoomLevel(), getPixelRatio()).lineHeight + 2);
decorationTriggeredAdjustment = true;
break;
}
@@ -387,7 +391,7 @@ export class NotebookService extends Disposable implements INotebookService, ICu
};
};
const PRIORITY = 50;
const PRIORITY = 105;
this._register(UndoCommand.addImplementation(PRIORITY, () => {
const { editor } = getContext();
if (editor?.viewModel) {
@@ -433,8 +437,8 @@ export class NotebookService extends Disposable implements INotebookService, ICu
return false;
}
const { editor, activeCell } = getContext();
if (!editor || !activeCell) {
const { editor } = getContext();
if (!editor) {
return false;
}
@@ -445,8 +449,14 @@ export class NotebookService extends Disposable implements INotebookService, ICu
const clipboardService = accessor.get<IClipboardService>(IClipboardService);
const notebookService = accessor.get<INotebookService>(INotebookService);
clipboardService.writeText(activeCell.getText());
notebookService.setToCopy([activeCell.model], true);
const selectedCells = editor.getSelectionViewModels();
if (!selectedCells.length) {
return false;
}
clipboardService.writeText(selectedCells.map(cell => cell.getText()).join('\n'));
notebookService.setToCopy(selectedCells.map(cell => cell.model), true);
return true;
}));
@@ -569,8 +579,8 @@ export class NotebookService extends Disposable implements INotebookService, ICu
return false;
}
const { editor, activeCell } = getContext();
if (!editor || !activeCell) {
const { editor } = getContext();
if (!editor) {
return false;
}
@@ -586,9 +596,20 @@ export class NotebookService extends Disposable implements INotebookService, ICu
const clipboardService = accessor.get<IClipboardService>(IClipboardService);
const notebookService = accessor.get<INotebookService>(INotebookService);
clipboardService.writeText(activeCell.getText());
viewModel.deleteCell(viewModel.getCellIndex(activeCell), true);
notebookService.setToCopy([activeCell.model], false);
const selectedCells = editor.getSelectionViewModels();
if (!selectedCells.length) {
return false;
}
clipboardService.writeText(selectedCells.map(cell => cell.getText()).join('\n'));
const edits: ICellEditOperation[] = selectedCells.map(cell => [cell, viewModel.getCellIndex(cell)] as [ICellViewModel, number]).sort((a, b) => b[1] - a[1]).map(value => {
return { editType: CellEditType.Replace, index: value[1], count: 1, cells: [] };
});
viewModel.notebookDocument.applyEdits(viewModel.notebookDocument.versionId, edits, true, editor.getSelectionHandles(), () => { return undefined; }, undefined, true);
notebookService.setToCopy(selectedCells.map(cell => cell.model), false);
return true;
});
@@ -623,6 +644,8 @@ export class NotebookService extends Disposable implements INotebookService, ICu
}
async canResolve(viewType: string): Promise<boolean> {
await this._extensionService.activateByEvent(`onNotebook:*`);
if (!this._notebookProviders.has(viewType)) {
await this._extensionService.whenInstalledExtensionsRegistered();
// this awaits full activation of all matching extensions
@@ -691,9 +714,10 @@ export class NotebookService extends Disposable implements INotebookService, ICu
const data = await provider.provideKernels(resource, token);
result[index] = data.map(dto => {
return {
id: dto.id,
extension: dto.extension,
extensionLocation: URI.revive(dto.extensionLocation),
id: dto.id,
friendlyId: dto.friendlyId,
label: dto.label,
description: dto.description,
detail: dto.detail,
@@ -701,13 +725,13 @@ export class NotebookService extends Disposable implements INotebookService, ICu
preloads: dto.preloads,
providerHandle: dto.providerHandle,
resolve: async (uri: URI, editorId: string, token: CancellationToken) => {
return provider.resolveKernel(editorId, uri, dto.id, token);
return provider.resolveKernel(editorId, uri, dto.friendlyId, token);
},
executeNotebookCell: async (uri: URI, handle: number | undefined) => {
return provider.executeNotebook(uri, dto.id, handle);
return provider.executeNotebook(uri, dto.friendlyId, handle);
},
cancelNotebookCell: (uri: URI, handle: number | undefined): Promise<void> => {
return provider.cancelNotebook(uri, dto.id, handle);
return provider.cancelNotebook(uri, dto.friendlyId, handle);
}
};
});
@@ -718,6 +742,11 @@ export class NotebookService extends Disposable implements INotebookService, ICu
return flatten(result);
}
async getContributedNotebookKernelProviders(): Promise<INotebookKernelProvider[]> {
const kernelProviders = this.notebookKernelProviderInfoStore.getContributedKernelProviders();
return kernelProviders;
}
getRendererInfo(id: string): INotebookRendererInfo | undefined {
return this.notebookRenderersInfoStore.get(id);
}
@@ -890,7 +919,7 @@ export class NotebookService extends Disposable implements INotebookService, ICu
listVisibleNotebookEditors(): INotebookEditor[] {
return this._editorService.visibleEditorPanes
.filter(pane => (pane as unknown as { isNotebookEditor?: boolean }).isNotebookEditor)
.filter(pane => (pane as unknown as { isNotebookEditor?: boolean; }).isNotebookEditor)
.map(pane => pane.getControl() as INotebookEditor)
.filter(editor => !!editor)
.filter(editor => this._notebookEditors.has(editor.getId()));
@@ -912,7 +941,7 @@ export class NotebookService extends Disposable implements INotebookService, ICu
this._onDidChangeNotebookActiveKernel.fire({
uri: editor.uri!,
providerHandle: editor.activeKernel?.providerHandle,
kernelId: editor.activeKernel?.id
kernelFriendlyId: editor.activeKernel?.friendlyId
});
}));
}