66import { editor , Environment , Uri } from 'monaco-editor/esm/vs/editor/editor.api.js' ;
77import { initialize as initializeMonacoService } from 'vscode/services' ;
88import { initialize as initializeVscodeExtensions } from 'vscode/extensions' ;
9- import type { OpenEditor } from 'vscode/service-override/modelEditor ' ;
9+ import type { OpenEditor } from 'vscode/service-override/editor ' ;
1010
1111interface MonacoEnvironmentEnhanced extends Environment {
1212 vscodeApiInitialised : boolean ;
@@ -15,13 +15,13 @@ interface MonacoEnvironmentEnhanced extends Environment {
1515export type InitializeServiceConfig = {
1616 enableDialogService ?: boolean ;
1717 enableNotificationService ?: boolean ;
18- enableModelEditorService ?: boolean ;
19- modelEditorServiceConfig ?: {
20- useDefaultFunction : boolean ;
18+ enableModelService ?: boolean ;
19+ configureEditorOrViewsServiceConfig ?: {
20+ enableViewsService : boolean ;
21+ useDefaultOpenEditorFunction : boolean ;
2122 openEditorFunc ?: OpenEditor
2223 } ;
23- enableConfigurationService ?: boolean
24- configurationServiceConfig ?: {
24+ configureConfigurationServiceConfig ?: {
2525 defaultWorkspaceUri : string ;
2626 } ;
2727 enableThemeService ?: boolean ;
@@ -32,7 +32,7 @@ export type InitializeServiceConfig = {
3232 enableDebugService ?: boolean ;
3333 enablePreferencesService ?: boolean ;
3434 enableSnippetsService ?: boolean ;
35- enableViewsService ?: boolean ;
35+ enableQuickaccessService ?: boolean ;
3636 userServices ?: editor . IEditorOverrideServices ;
3737 debugLogging ?: boolean ;
3838} ;
@@ -75,10 +75,24 @@ const importAllServices = async (config?: InitializeServiceConfig) => {
7575 // files service is required
7676 addService ( 'files' , import ( 'vscode/service-override/files' ) ) ;
7777
78- if ( lc . enableModelEditorService === true && lc . modelEditorServiceConfig !== undefined ) {
79- addService ( 'modelEditor ' , import ( 'vscode/service-override/modelEditor ' ) ) ;
78+ if ( lc . enableModelService === true ) {
79+ addService ( 'model ' , import ( 'vscode/service-override/model ' ) ) ;
8080 }
81- if ( lc . enableConfigurationService === true && lc . configurationServiceConfig !== undefined ) {
81+ if ( lc . configureEditorOrViewsServiceConfig !== undefined ) {
82+ if ( lc . configureEditorOrViewsServiceConfig . enableViewsService ) {
83+ addService ( 'views' , import ( 'vscode/service-override/views' ) ) ;
84+ } else {
85+ addService ( 'editor' , import ( 'vscode/service-override/editor' ) ) ;
86+ }
87+ }
88+ if ( lc . enableQuickaccessService === true ) {
89+ // quickaccess requires keybindings
90+ if ( lc . enableKeybindingsService === undefined || lc . enableKeybindingsService === false ) {
91+ throw new Error ( '"quickaccess" requires "keybindings" service. Please add it to the "initServices" config.' ) ;
92+ }
93+ addService ( 'quickaccess' , import ( 'vscode/service-override/quickaccess' ) ) ;
94+ }
95+ if ( lc . configureConfigurationServiceConfig !== undefined ) {
8296 addService ( 'configuration' , import ( 'vscode/service-override/configuration' ) ) ;
8397 }
8498 if ( lc . enableDialogService === true ) {
@@ -88,9 +102,11 @@ const importAllServices = async (config?: InitializeServiceConfig) => {
88102 addService ( 'notifications' , import ( 'vscode/service-override/notifications' ) ) ;
89103 }
90104 if ( lc . enableThemeService === true ) {
91- addService ( 'theme' , import ( 'vscode/service-override/theme' ) ) ;
92105 // theme requires textmate
93- lc . enableTextmateService = true ;
106+ if ( lc . enableTextmateService === undefined || lc . enableTextmateService === false ) {
107+ throw new Error ( '"theme" requires "textmate" service. Please add it to the "initServices" config.' ) ;
108+ }
109+ addService ( 'theme' , import ( 'vscode/service-override/theme' ) ) ;
94110 }
95111 if ( lc . enableTextmateService === true ) {
96112 addService ( 'textmate' , import ( 'vscode/service-override/textmate' ) ) ;
@@ -113,9 +129,6 @@ const importAllServices = async (config?: InitializeServiceConfig) => {
113129 if ( lc . enableSnippetsService === true ) {
114130 addService ( 'snippets' , import ( 'vscode/service-override/snippets' ) ) ;
115131 }
116- if ( lc . enableViewsService === true ) {
117- addService ( 'views' , import ( 'vscode/service-override/views' ) ) ;
118- }
119132
120133 const reportServiceLoading = ( origin : string , services : editor . IEditorOverrideServices , debugLogging : boolean ) => {
121134 for ( const serviceName of Object . keys ( services ) ) {
@@ -146,19 +159,18 @@ const importAllServices = async (config?: InitializeServiceConfig) => {
146159 }
147160
148161 let services : editor . IEditorOverrideServices = { } ;
149- if ( serviceName === 'modelEditor' && lc . enableModelEditorService ) {
150- const defaultOpenEditorFunc : OpenEditor = async ( model , options , sideBySide ) => {
151- console . log ( 'Trying to open a model' , model , options , sideBySide ) ;
152- return undefined ;
153- } ;
154-
155- if ( lc . modelEditorServiceConfig ?. useDefaultFunction ) {
162+ if ( serviceName === 'editor' || serviceName === 'views' ) {
163+ if ( lc . configureEditorOrViewsServiceConfig ! . useDefaultOpenEditorFunction ) {
164+ const defaultOpenEditorFunc : OpenEditor = async ( model , options , sideBySide ) => {
165+ console . log ( 'Trying to open a model' , model , options , sideBySide ) ;
166+ return undefined ;
167+ } ;
156168 services = loadedImport . default ( defaultOpenEditorFunc ) ;
157- } else if ( lc . modelEditorServiceConfig ?. openEditorFunc ) {
158- services = loadedImport . default ( lc . modelEditorServiceConfig . openEditorFunc ) ;
169+ } else if ( lc . configureEditorOrViewsServiceConfig ?. openEditorFunc ) {
170+ services = loadedImport . default ( lc . configureEditorOrViewsServiceConfig . openEditorFunc ) ;
159171 }
160- } else if ( serviceName === 'configuration' && lc . enableConfigurationService ) {
161- const uri = Uri . file ( lc . configurationServiceConfig ! . defaultWorkspaceUri ) ;
172+ } else if ( serviceName === 'configuration' ) {
173+ const uri = Uri . file ( lc . configureConfigurationServiceConfig ! . defaultWorkspaceUri ) ;
162174 services = loadedImport . default ( uri ) ;
163175 } else {
164176 services = loadedImport . default ( ) ;
0 commit comments