diff --git a/extensions/ipynb/src/deserializers.ts b/extensions/ipynb/src/deserializers.ts index 20d6dabdbf7..4ed27d23e7b 100644 --- a/extensions/ipynb/src/deserializers.ts +++ b/extensions/ipynb/src/deserializers.ts @@ -93,7 +93,7 @@ enum CellOutputMimeTypes { stdout = 'application/vnd.code.notebook.stdout' } -const textMimeTypes = ['text/plain', 'text/markdown', CellOutputMimeTypes.stderr, CellOutputMimeTypes.stdout]; +export const textMimeTypes = ['text/plain', 'text/markdown', 'text/latex', CellOutputMimeTypes.stderr, CellOutputMimeTypes.stdout]; function concatMultilineString(str: string | string[], trim?: boolean): string { const nonLineFeedWhiteSpaceTrim = /(^[\t\f\v\r ]+|[\t\f\v\r ]+$)/g; diff --git a/extensions/ipynb/src/serializers.ts b/extensions/ipynb/src/serializers.ts index 55a96db0861..6b55c295d68 100644 --- a/extensions/ipynb/src/serializers.ts +++ b/extensions/ipynb/src/serializers.ts @@ -6,6 +6,7 @@ import { nbformat } from '@jupyterlab/coreutils'; import { NotebookCellData, NotebookCellKind, NotebookCellOutput } from 'vscode'; import { CellOutputMetadata } from './common'; +import { textMimeTypes } from './deserializers'; const textDecoder = new TextDecoder(); @@ -15,8 +16,6 @@ enum CellOutputMimeTypes { stdout = 'application/vnd.code.notebook.stdout' } -const textMimeTypes = ['text/plain', 'text/markdown', CellOutputMimeTypes.stderr, CellOutputMimeTypes.stdout]; - export function createJupyterCellFromNotebookCell( vscCell: NotebookCellData ): nbformat.IRawCell | nbformat.IMarkdownCell | nbformat.ICodeCell { diff --git a/extensions/markdown-language-features/package.json b/extensions/markdown-language-features/package.json index 9be2eeaa674..af84af4ab87 100644 --- a/extensions/markdown-language-features/package.json +++ b/extensions/markdown-language-features/package.json @@ -47,7 +47,8 @@ "displayName": "Markdown it renderer", "entrypoint": "./notebook-out/index.js", "mimeTypes": [ - "text/markdown" + "text/markdown", + "text/latex" ] } ], diff --git a/src/vs/base/common/mime.ts b/src/vs/base/common/mime.ts index 3da37bcecbb..723a1be78ec 100644 --- a/src/vs/base/common/mime.ts +++ b/src/vs/base/common/mime.ts @@ -15,6 +15,7 @@ export namespace Mimes { export const binary = 'application/octet-stream'; export const unknown = 'application/unknown'; export const markdown = 'text/markdown'; + export const latex = 'text/latex'; } export interface ITextMimeAssociation { diff --git a/src/vs/workbench/contrib/notebook/browser/view/output/transforms/richTransform.ts b/src/vs/workbench/contrib/notebook/browser/view/output/transforms/richTransform.ts index 97129342b41..894871171f2 100644 --- a/src/vs/workbench/contrib/notebook/browser/view/output/transforms/richTransform.ts +++ b/src/vs/workbench/contrib/notebook/browser/view/output/transforms/richTransform.ts @@ -217,7 +217,7 @@ class MdRendererContrib extends Disposable implements IOutputRendererContributio } getMimetypes() { - return [Mimes.markdown]; + return [Mimes.markdown, Mimes.latex]; } constructor( diff --git a/src/vs/workbench/contrib/notebook/browser/view/renderers/webviewPreloads.ts b/src/vs/workbench/contrib/notebook/browser/view/renderers/webviewPreloads.ts index e6cb3c645e1..f6189b1cd21 100644 --- a/src/vs/workbench/contrib/notebook/browser/view/renderers/webviewPreloads.ts +++ b/src/vs/workbench/contrib/notebook/browser/view/renderers/webviewPreloads.ts @@ -1155,7 +1155,7 @@ async function webviewPreloads(ctx: PreloadContext) { await renderers.render(this, this.element); - if (this.mime === 'text/markdown') { + if (this.mime === 'text/markdown' || this.mime === 'text/latex') { const root = this.element.shadowRoot; if (root) { if (!hasPostedRenderedMathTelemetry) { diff --git a/src/vs/workbench/contrib/notebook/common/notebookCommon.ts b/src/vs/workbench/contrib/notebook/common/notebookCommon.ts index 3d0612418a0..ca13576562b 100644 --- a/src/vs/workbench/contrib/notebook/common/notebookCommon.ts +++ b/src/vs/workbench/contrib/notebook/common/notebookCommon.ts @@ -37,6 +37,7 @@ export const NOTEBOOK_DISPLAY_ORDER = [ 'application/javascript', 'text/html', 'image/svg+xml', + Mimes.latex, Mimes.markdown, 'image/png', 'image/jpeg', @@ -44,6 +45,7 @@ export const NOTEBOOK_DISPLAY_ORDER = [ ]; export const ACCESSIBLE_NOTEBOOK_DISPLAY_ORDER = [ + Mimes.latex, Mimes.markdown, 'application/json', Mimes.text, @@ -567,6 +569,7 @@ const _mimeTypeInfo = new Map([ ['image/git', { alwaysSecure: true, supportedByCore: true }], ['image/svg+xml', { supportedByCore: true }], ['application/json', { alwaysSecure: true, supportedByCore: true }], + [Mimes.latex, { alwaysSecure: true, supportedByCore: true }], [Mimes.markdown, { alwaysSecure: true, supportedByCore: true }], [Mimes.text, { alwaysSecure: true, supportedByCore: true }], ['text/html', { supportedByCore: true }], diff --git a/src/vs/workbench/contrib/notebook/test/notebookCommon.test.ts b/src/vs/workbench/contrib/notebook/test/notebookCommon.test.ts index 24b00a74ac9..f3d44da24a1 100644 --- a/src/vs/workbench/contrib/notebook/test/notebookCommon.test.ts +++ b/src/vs/workbench/contrib/notebook/test/notebookCommon.test.ts @@ -24,6 +24,7 @@ suite('NotebookCommon', () => { 'application/javascript', 'text/html', 'image/svg+xml', + Mimes.latex, Mimes.markdown, 'image/png', 'image/jpeg', @@ -34,6 +35,7 @@ suite('NotebookCommon', () => { 'application/javascript', 'text/html', 'image/svg+xml', + Mimes.latex, Mimes.markdown, 'image/png', 'image/jpeg', @@ -44,6 +46,7 @@ suite('NotebookCommon', () => { assert.deepStrictEqual(sortMimeTypes( [ 'application/json', + Mimes.latex, Mimes.markdown, 'application/javascript', 'text/html', @@ -57,6 +60,7 @@ suite('NotebookCommon', () => { 'application/javascript', 'text/html', 'image/svg+xml', + Mimes.latex, Mimes.markdown, 'image/png', 'image/jpeg',