Merge branch 'notebook/dev' into main

This commit is contained in:
rebornix 2021-04-28 13:36:56 -07:00
commit 3719898cb8
No known key found for this signature in database
GPG key ID: 181FC90D15393C20
4 changed files with 21 additions and 12 deletions

View file

@ -1554,18 +1554,24 @@ declare module 'vscode' {
readonly id: string;
/**
* The selector allows to narrow down on specific notebook types or
* instances.
*
* For instance `{ viewType: 'notebook.test' }` selects all notebook
* documents of the type `notebook.test`, whereas `{ pattern: '/my/file/test.nb' }`
* selects only the notebook with the path `/my/file/test.nb`.
* The notebook view type this controller is for.
*/
readonly viewType: string;
/**
* An array of language identifiers that are supported by this
* controller. When falsy all languages are supported.
* controller. Any language identifier from [`getLanguages`](#languages.getLanguages)
* is possible. When falsy all languages are supported.
*
* Samples:
* ```js
* // support JavaScript and TypeScript
* myController.supportedLanguages = ['javascript', 'typescript']
*
* // support all languages
* myController.supportedLanguages = undefined; // falsy
* myController.supportedLanguages = []; // falsy
* ```
*/
supportedLanguages?: string[];
@ -1674,7 +1680,7 @@ declare module 'vscode' {
* Creates a new notebook controller.
*
* @param id Extension-unique identifier of the controller
* @param selector A notebook selector to narrow down notebook type or path
* @param viewType A notebook type for which this controller is for.
* @param label The label of the controller
* @param handler
* @param preloads

View file

@ -18,7 +18,7 @@ import { IModelService } from 'vs/editor/common/services/modelService';
import { Schemas } from 'vs/base/common/network';
import { isEqual } from 'vs/base/common/resources';
import { IModeService } from 'vs/editor/common/services/modeService';
import { ITextModel } from 'vs/editor/common/model';
import { ITextBuffer, ITextModel } from 'vs/editor/common/model';
import { TextModel } from 'vs/editor/common/model/textModel';
@ -513,6 +513,9 @@ export class NotebookTextModel extends Disposable implements INotebookTextModel
if (textModel && textModel instanceof TextModel) {
cell.textModel = textModel;
cell.language = cellDto.language;
if (!cell.textModel.equalsTextBuffer(cell.textBuffer as ITextBuffer)) {
cell.textModel.setValue(cellDto.source);
}
}
const dirtyStateListener = cell.onDidChangeContent(() => {
this._increaseVersionIdForCellContentChange();

View file

@ -59,7 +59,7 @@ suite('NotebookEditorKernelManager', () => {
await withTestNotebook(
[],
async (viewModel) => {
const kernelManager = instantiationService.createInstance(NotebookEditorKernelManager, { activeKernel: undefined, viewModel });
const kernelManager = instantiationService.createInstance(NotebookEditorKernelManager);
const cell = viewModel.createCell(1, 'var c = 3', 'javascript', CellKind.Code, {}, [], true);
await assertThrowsAsync(async () => await kernelManager.executeNotebookCell(cell));

View file

@ -140,7 +140,7 @@ suite('NotebookKernelService', () => {
{
// open as jupyter -> bind event
const p1 = Event.toPromise(kernelService.onDidChangeNotebookKernelBinding);
const d1 = instantiationService.createInstance(NotebookTextModel, jupyter.viewType, jupyter.uri, [], {});
const d1 = instantiationService.createInstance(NotebookTextModel, jupyter.viewType, jupyter.uri, [], {}, {});
onDidAddNotebookDocument.fire(d1);
const event = await p1;
assert.strictEqual(event.newKernel, jupyterKernel.id);
@ -148,7 +148,7 @@ suite('NotebookKernelService', () => {
{
// RE-open as dotnet -> bind event
const p2 = Event.toPromise(kernelService.onDidChangeNotebookKernelBinding);
const d2 = instantiationService.createInstance(NotebookTextModel, dotnet.viewType, dotnet.uri, [], {});
const d2 = instantiationService.createInstance(NotebookTextModel, dotnet.viewType, dotnet.uri, [], {}, {});
onDidAddNotebookDocument.fire(d2);
const event2 = await p2;
assert.strictEqual(event2.newKernel, dotnetKernel.id);