Skip to content

Commit afad37b

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 afad37b

File tree

1 file changed

+24
-21
lines changed

1 file changed

+24
-21
lines changed

src/formatter.ts

Lines changed: 24 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -93,38 +93,41 @@ 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 (
117+
metadata.language_info &&
118+
metadata.language_info.codemirror_mode
119+
) {
120+
const mode = metadata.language_info.codemirror_mode;
121+
if (typeof mode === 'string') {
122+
return mode.toLowerCase();
123+
} else if (typeof mode.name === 'string') {
124+
return mode.name.toLowerCase();
125+
}
123126
}
124127
}
125128

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

0 commit comments

Comments
 (0)