mirror of
https://github.com/microsoft/vscode.git
synced 2026-09-26 18:06:43 +01:00
notebooks: still prefer built-in renders, but add equivalence for 1st party jupyter ones
Fixes #136247
This commit is contained in:
@@ -30,7 +30,7 @@ import { INotebookEditorOptions } from 'vs/workbench/contrib/notebook/browser/no
|
||||
import { NotebookDiffEditorInput } from 'vs/workbench/contrib/notebook/browser/notebookDiffEditorInput';
|
||||
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, CellUri, DisplayOrderKey, INotebookContributionData, INotebookExclusiveDocumentFilter, INotebookRendererInfo, INotebookTextModel, IOrderedMimeType, IOutputDto, MimeTypeDisplayOrder, mimeTypeIsAlwaysSecure, mimeTypeSupportedByCore, NotebookData, NotebookEditorPriority, NotebookRendererMatch, NotebookTextDiffEditorPreview, NOTEBOOK_DISPLAY_ORDER, RENDERER_NOT_AVAILABLE, TransientOptions } from 'vs/workbench/contrib/notebook/common/notebookCommon';
|
||||
import { ACCESSIBLE_NOTEBOOK_DISPLAY_ORDER, BUILTIN_RENDERER_ID, CellUri, DisplayOrderKey, INotebookContributionData, INotebookExclusiveDocumentFilter, INotebookRendererInfo, INotebookTextModel, IOrderedMimeType, IOutputDto, MimeTypeDisplayOrder, mimeTypeIsAlwaysSecure, mimeTypeSupportedByCore, NotebookData, NotebookEditorPriority, NotebookRendererMatch, NotebookTextDiffEditorPreview, NOTEBOOK_DISPLAY_ORDER, RENDERER_EQUIVALENT_EXTENSIONS, RENDERER_NOT_AVAILABLE, TransientOptions } from 'vs/workbench/contrib/notebook/common/notebookCommon';
|
||||
import { NotebookEditorInput } from 'vs/workbench/contrib/notebook/common/notebookEditorInput';
|
||||
import { INotebookEditorModelResolverService } from 'vs/workbench/contrib/notebook/common/notebookEditorModelResolverService';
|
||||
import { updateEditorTopPadding } from 'vs/workbench/contrib/notebook/common/notebookOptions';
|
||||
@@ -314,11 +314,12 @@ export class NotebookOutputRendererInfoStore {
|
||||
const enum ReuseOrder {
|
||||
PreviouslySelected = 1 << 8,
|
||||
SameExtensionAsNotebook = 2 << 8,
|
||||
OtherRenderer = 3 << 8,
|
||||
BuiltIn = 4 << 8,
|
||||
BuiltIn = 3 << 8,
|
||||
OtherRenderer = 4 << 8,
|
||||
}
|
||||
|
||||
const preferred = notebookProviderInfo && this.preferredMimetype.getValue()[notebookProviderInfo.id]?.[mimeType];
|
||||
const preferred = false && notebookProviderInfo && this.preferredMimetype.getValue()[notebookProviderInfo.id]?.[mimeType];
|
||||
const notebookExtId = notebookProviderInfo?.extension?.value;
|
||||
const renderers: { ordered: IOrderedMimeType, score: number }[] = Array.from(this.contributedRenderers.values())
|
||||
.map(renderer => {
|
||||
const ownScore = kernelProvides === undefined
|
||||
@@ -329,9 +330,10 @@ export class NotebookOutputRendererInfoStore {
|
||||
return undefined;
|
||||
}
|
||||
|
||||
const rendererExtId = renderer.extensionId.value;
|
||||
const reuseScore = preferred === renderer.id
|
||||
? ReuseOrder.PreviouslySelected
|
||||
: renderer.extensionId.value === notebookProviderInfo?.extension?.value
|
||||
: rendererExtId === notebookExtId || RENDERER_EQUIVALENT_EXTENSIONS.get(rendererExtId)?.has(notebookExtId!)
|
||||
? ReuseOrder.SameExtensionAsNotebook
|
||||
: renderer.isBuiltin ? ReuseOrder.BuiltIn : ReuseOrder.OtherRenderer;
|
||||
return {
|
||||
|
||||
@@ -56,6 +56,17 @@ export const ACCESSIBLE_NOTEBOOK_DISPLAY_ORDER: readonly string[] = [
|
||||
'image/jpeg',
|
||||
];
|
||||
|
||||
/**
|
||||
* A mapping of extension IDs who contain renderers, to extensions who they
|
||||
* should be treated as the same in the renderer selection logic. This is used
|
||||
* to prefer the 1st party Jupyter renderers even though they're in a separate
|
||||
* extension, for instance. See #136247.
|
||||
*/
|
||||
export const RENDERER_EQUIVALENT_EXTENSIONS: ReadonlyMap<string, ReadonlySet<string>> = new Map([
|
||||
['ms-toolsai.jupyter', new Set(['vscode.ipynb'])],
|
||||
['ms-toolsai.jupyter-renderers', new Set(['vscode.ipynb'])],
|
||||
]);
|
||||
|
||||
export const BUILTIN_RENDERER_ID = '_builtin';
|
||||
export const RENDERER_NOT_AVAILABLE = '_notAvailable';
|
||||
|
||||
|
||||
Reference in New Issue
Block a user