@@ -328,13 +328,47 @@ export default function mainSettings() {
328328 page . show ( ) ;
329329
330330 appSettings . uiSettings [ "main-settings" ] = page ;
331- appSettings . uiSettings [ "app-settings" ] = otherSettings ( ) ;
332- appSettings . uiSettings [ "file-settings" ] = filesSettings ( ) ;
333- appSettings . uiSettings [ "backup-restore" ] = backupRestore ( ) ;
334- appSettings . uiSettings [ "editor-settings" ] = editorSettings ( ) ;
335- appSettings . uiSettings [ "scroll-settings" ] = scrollSettings ( ) ;
336- appSettings . uiSettings [ "search-settings" ] = searchSettings ( ) ;
337- appSettings . uiSettings [ "preview-settings" ] = previewSettings ( ) ;
338- appSettings . uiSettings [ "terminal-settings" ] = terminalSettings ( ) ;
339- appSettings . uiSettings [ "lsp-settings" ] = lspSettings ( ) ;
331+
332+ const lazyPages = {
333+ "app-settings" : otherSettings ,
334+ "file-settings" : filesSettings ,
335+ "backup-restore" : backupRestore ,
336+ "editor-settings" : editorSettings ,
337+ "scroll-settings" : scrollSettings ,
338+ "search-settings" : searchSettings ,
339+ "preview-settings" : previewSettings ,
340+ "terminal-settings" : terminalSettings ,
341+ "lsp-settings" : lspSettings ,
342+ } ;
343+
344+ const instantiated = { } ;
345+
346+ for ( const [ key , initializer ] of Object . entries ( lazyPages ) ) {
347+ delete appSettings . uiSettings [ key ] ;
348+ Object . defineProperty ( appSettings . uiSettings , key , {
349+ get ( ) {
350+ if ( ! ( key in instantiated ) ) {
351+ instantiated [ key ] = initializer ( ) ;
352+ Object . defineProperty ( appSettings . uiSettings , key , {
353+ value : instantiated [ key ] ,
354+ writable : true ,
355+ configurable : true ,
356+ enumerable : true ,
357+ } ) ;
358+ }
359+ return instantiated [ key ] ;
360+ } ,
361+ set ( val ) {
362+ instantiated [ key ] = val ;
363+ Object . defineProperty ( appSettings . uiSettings , key , {
364+ value : val ,
365+ writable : true ,
366+ configurable : true ,
367+ enumerable : true ,
368+ } ) ;
369+ } ,
370+ configurable : true ,
371+ enumerable : false ,
372+ } ) ;
373+ }
340374}
0 commit comments