@@ -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