Skip to content

Commit 50e5910

Browse files
committed
Fall back to session check if metadata is missing
`getNotebookType()` has two ways to determine the language. If the metadata check fails, it falls through to the current session check. Previously, if metadata was `null`, the method would return early.
1 parent 92c805d commit 50e5910

File tree

1 file changed

+21
-21
lines changed

1 file changed

+21
-21
lines changed

src/formatter.ts

+21-21
Original file line numberDiff line numberDiff line change
@@ -93,38 +93,38 @@ export class JupyterlabNotebookCodeFormatter extends JupyterlabCodeFormatter {
9393
}
9494

9595
private getNotebookType(): string | null {
96+
// If there is no current notebook, there is nothing to do
9697
if (!this.notebookTracker.currentWidget) {
9798
return null;
9899
}
99100

101+
// first, check the notebook's metadata for language info
100102
const metadata =
101103
this.notebookTracker.currentWidget.content.model?.sharedModel?.metadata;
102104

103-
if (!metadata) {
104-
return null;
105-
}
106-
107-
// prefer kernelspec language
108-
if (
109-
metadata.kernelspec &&
110-
metadata.kernelspec.language &&
111-
typeof metadata.kernelspec.language === 'string'
112-
) {
113-
return metadata.kernelspec.language.toLowerCase();
114-
}
105+
if (metadata) {
106+
// prefer kernelspec language
107+
if (
108+
metadata.kernelspec &&
109+
metadata.kernelspec.language &&
110+
typeof metadata.kernelspec.language === 'string'
111+
) {
112+
return metadata.kernelspec.language.toLowerCase();
113+
}
115114

116-
// otherwise, check language info code mirror mode
117-
if (metadata.language_info && metadata.language_info.codemirror_mode) {
118-
const mode = metadata.language_info.codemirror_mode;
119-
if (typeof mode === 'string') {
120-
return mode.toLowerCase();
121-
} else if (typeof mode.name === 'string') {
122-
return mode.name.toLowerCase();
115+
// otherwise, check language info code mirror mode
116+
if (metadata.language_info && metadata.language_info.codemirror_mode) {
117+
const mode = metadata.language_info.codemirror_mode;
118+
if (typeof mode === 'string') {
119+
return mode.toLowerCase();
120+
} else if (typeof mode.name === 'string') {
121+
return mode.name.toLowerCase();
122+
}
123123
}
124124
}
125125

126-
// finally, try to get the language from the current session's kernel spec
127-
const sessionContext = this.notebookTracker.currentWidget?.sessionContext;
126+
// in the absence of metadata, look in the current session's kernel spec
127+
const sessionContext = this.notebookTracker.currentWidget.sessionContext;
128128
const kernelName = sessionContext?.session?.kernel?.name;
129129
if (kernelName) {
130130
const specs = sessionContext.specsManager.specs?.kernelspecs;

0 commit comments

Comments
 (0)