File tree Expand file tree Collapse file tree 1 file changed +10
-2
lines changed Expand file tree Collapse file tree 1 file changed +10
-2
lines changed Original file line number Diff line number Diff line change @@ -152,6 +152,10 @@ export class LanguageClientManager implements LanguageClient {
152
152
try {
153
153
this . startPromise = this . _start ( )
154
154
await this . startPromise
155
+ // If the initialize request fails, the start method still returns a resolve promise due to a vscode-languageclient bug
156
+ if ( ! ( this . languageClient ?. isRunning ( ) ?? false ) ) {
157
+ throw new Error ( 'Language server not running' )
158
+ }
155
159
started = true
156
160
} catch ( error ) {
157
161
this . languageClient = undefined
@@ -299,8 +303,12 @@ export class LanguageClientManager implements LanguageClient {
299
303
}
300
304
case State . Stopped : {
301
305
this . updateStatus ( 'closed' )
302
-
303
- if ( state . oldState === State . Running && ! this . isDisposed ( ) ) {
306
+ setTimeout ( ( ) => {
307
+ // setTimeout is required or the dispose() fails (Client is stopping but no stop promise available.)
308
+ void languageClient . dispose ( )
309
+ } )
310
+ if ( state . oldState === State . Running && ! this . isDisposed ( ) && this . languageClient === languageClient ) {
311
+ this . languageClient = undefined
304
312
console . info ( '[LSP] Restarting language client' , state )
305
313
this . start ( ) . catch ( error => {
306
314
monaco . errorHandler . onUnexpectedError ( new Error ( '[LSP] Language client stopped' , {
You can’t perform that action at this time.
0 commit comments