4
4
*--------------------------------------------------------------------------------------------*/
5
5
'use strict' ;
6
6
7
- import { LanguageServiceDefaultsImpl } from './monaco.contribution' ;
8
- import { TypeScriptWorker } from './worker' ;
7
+ import { LanguageServiceDefaultsImpl } from './monaco.contribution' ;
8
+ import { TypeScriptWorker } from './worker' ;
9
9
10
10
import Promise = monaco . Promise ;
11
11
import IDisposable = monaco . IDisposable ;
@@ -22,7 +22,7 @@ export class WorkerManager {
22
22
private _worker : monaco . editor . MonacoWebWorker < TypeScriptWorker > ;
23
23
private _client : Promise < TypeScriptWorker > ;
24
24
25
- constructor ( modeId :string , defaults : LanguageServiceDefaultsImpl ) {
25
+ constructor ( modeId : string , defaults : LanguageServiceDefaultsImpl ) {
26
26
this . _modeId = modeId ;
27
27
this . _defaults = defaults ;
28
28
this . _worker = null ;
@@ -74,14 +74,25 @@ export class WorkerManager {
74
74
}
75
75
} ) ;
76
76
77
- this . _client = this . _worker . getProxy ( ) ;
77
+ let p = this . _worker . getProxy ( ) ;
78
+
79
+ if ( this . _defaults . getEagerModelSync ( ) ) {
80
+ p = p . then ( worker => {
81
+ return this . _worker . withSyncedResources ( monaco . editor . getModels ( )
82
+ . filter ( model => model . getModeId ( ) === this . _modeId )
83
+ . map ( model => model . uri )
84
+ ) ;
85
+ } )
86
+ }
87
+
88
+ this . _client = p ;
78
89
}
79
90
80
91
return this . _client ;
81
92
}
82
93
83
94
getLanguageServiceWorker ( ...resources : Uri [ ] ) : Promise < TypeScriptWorker > {
84
- let _client :TypeScriptWorker ;
95
+ let _client : TypeScriptWorker ;
85
96
return toShallowCancelPromise (
86
97
this . _getClient ( ) . then ( ( client ) => {
87
98
_client = client
@@ -92,9 +103,9 @@ export class WorkerManager {
92
103
}
93
104
}
94
105
95
- function toShallowCancelPromise < T > ( p :Promise < T > ) : Promise < T > {
96
- let completeCallback : ( value :T ) => void ;
97
- let errorCallback : ( err :any ) => void ;
106
+ function toShallowCancelPromise < T > ( p : Promise < T > ) : Promise < T > {
107
+ let completeCallback : ( value : T ) => void ;
108
+ let errorCallback : ( err : any ) => void ;
98
109
99
110
let r = new Promise < T > ( ( c , e ) => {
100
111
completeCallback = c ;
0 commit comments