Skip to content

Commit f6a0f89

Browse files
Fix preview of single-file Julia documents using Jupyter instead of Julia engine
Engine extensions (like the bundled Julia engine) were only loaded in singleFileProjectContext when renderOptions was provided. The preview command creates the project context before render services exist, so engine extensions were never discovered for single files. This caused Jupyter to win the language claim for Julia code blocks. Now engine extensions are always resolved, using a fresh extension context as fallback when renderOptions is absent — matching the pattern used by projectContext. Fixes #14208
1 parent 7c01551 commit f6a0f89

1 file changed

Lines changed: 13 additions & 10 deletions

File tree

src/project/types/single-file/single-file.ts

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ import {
3535
mergeExtensionMetadata,
3636
resolveEngineExtensions,
3737
} from "../../project-context.ts";
38+
import { createExtensionContext } from "../../../extension/extension.ts";
3839

3940
export async function singleFileProjectContext(
4041
source: string,
@@ -93,17 +94,19 @@ export async function singleFileProjectContext(
9394
result.diskCache.close();
9495
},
9596
};
97+
// Always resolve engine extensions so bundled engines (e.g. Julia) are
98+
// discovered even when called without renderOptions (e.g. from preview)
99+
const extensionContext = renderOptions?.services.extension ||
100+
createExtensionContext();
101+
result.config = result.config || { project: {} };
102+
result.config = await resolveEngineExtensions(
103+
extensionContext,
104+
result.config,
105+
result.dir,
106+
);
107+
96108
if (renderOptions) {
97-
result.config = {
98-
project: {},
99-
};
100-
// First resolve engine extensions
101-
result.config = await resolveEngineExtensions(
102-
renderOptions.services.extension,
103-
result.config,
104-
result.dir,
105-
);
106-
// Then merge extension metadata
109+
// Merge extension metadata (requires renderOptions for full services)
107110
await mergeExtensionMetadata(result, renderOptions);
108111

109112
// Check if extensions contributed output-dir metadata

0 commit comments

Comments
 (0)