@@ -55,26 +55,22 @@ function autoSaveModels (services: CgMonacoServices): Disposable {
5555 return disposableCollection
5656}
5757
58- let services : CgMonacoServices | null = null
5958let serviceDisposable : Disposable | null = null
6059let serviceReferenceCount = 0
6160function installServices ( infrastructure : Infrastructure ) : Disposable {
62- if ( services == null ) {
63- // FIXME: we can't recreate services because MonacoWorkspace can't be disposed without memory leaks
64- // fix me as soon as https://github.com/TypeFox/monaco-languageclient/pull/330/files is released
61+ if ( serviceReferenceCount === 0 ) {
62+ const disposableCollection = new DisposableCollection ( )
63+
6564 const m2p = new MonacoToProtocolConverter ( monaco )
6665 const p2m = new ProtocolToMonacoConverter ( monaco )
67- services = {
66+ const services = {
6867 commands : new MonacoCommands ( monaco ) ,
6968 languages : new MonacoLanguages ( monaco , p2m , m2p ) ,
7069 workspace : new CodinGameMonacoWorkspace ( p2m , m2p , infrastructure . rootUri , infrastructure . workspaceFolders ) ,
7170 window : new WatchableConsoleWindow ( )
7271 }
73- }
74-
75- if ( serviceReferenceCount === 0 ) {
76- const disposableCollection = new DisposableCollection ( )
7772
73+ disposableCollection . push ( services . workspace )
7874 disposableCollection . push ( installCommands ( services ) )
7975 disposableCollection . push ( Services . install ( services ) )
8076
0 commit comments