@@ -30,6 +30,22 @@ self.MonacoEnvironment = {
3030 } ,
3131} ;
3232
33+ /** Resolve Monaco language id, including markdown when only a path is known. */
34+ function resolveLanguage (
35+ language : string | undefined ,
36+ path : string | undefined ,
37+ ) : string {
38+ if ( language && language !== 'plaintext' ) {
39+ return language ;
40+ }
41+ if ( path ) {
42+ const ext = path . split ( '.' ) . pop ( ) ?. toLowerCase ( ) ;
43+ if ( ext === 'md' || ext === 'markdown' ) return 'markdown' ;
44+ if ( ext === 'mdx' ) return 'mdx' ;
45+ }
46+ return language || 'typescript' ;
47+ }
48+
3349monaco . editor . defineTheme ( 'vesper' , vesperTheme ) ;
3450
3551monaco . editor . defineTheme ( 'vibesdk' , {
@@ -247,7 +263,7 @@ export const MonacoEditor = memo<MonacoEditorProps>(function MonacoEditor({
247263 ...restOptions
248264 } = options ;
249265
250- const initialLanguage = language || 'typescript' ;
266+ const initialLanguage = resolveLanguage ( language , pathRef . current ) ;
251267 const initialValue = value ?? '' ;
252268 const model = getOrCreateModel (
253269 initialValue ,
@@ -320,7 +336,7 @@ export const MonacoEditor = memo<MonacoEditorProps>(function MonacoEditor({
320336 if ( ! editor . current ) return ;
321337
322338 const nextValue = createOptions . value ?? '' ;
323- const nextLanguage = createOptions . language || 'typescript' ;
339+ const nextLanguage = resolveLanguage ( createOptions . language , path ) ;
324340 const pathChanged = path !== prevPath . current ;
325341 const valueChanged = nextValue !== prevValue . current ;
326342
@@ -550,8 +566,8 @@ export const MonacoDiffEditor = memo<MonacoDiffEditorProps>(
550566
551567 useEffect ( ( ) => {
552568 if ( ! diffEditor . current ) return ;
553- const lang = language || 'plaintext' ;
554- const prevOriginal = originalModel . current ;
569+ const lang = resolveLanguage ( language , path ) ;
570+ const prevOriginal = originalModel . current ;
555571 const prevModified = modifiedModel . current ;
556572 const original = monaco . editor . createModel (
557573 originalValue ,
0 commit comments