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 {
152152 try {
153153 this . startPromise = this . _start ( )
154154 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+ }
155159 started = true
156160 } catch ( error ) {
157161 this . languageClient = undefined
@@ -299,8 +303,12 @@ export class LanguageClientManager implements LanguageClient {
299303 }
300304 case State . Stopped : {
301305 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
304312 console . info ( '[LSP] Restarting language client' , state )
305313 this . start ( ) . catch ( error => {
306314 monaco . errorHandler . onUnexpectedError ( new Error ( '[LSP] Language client stopped' , {
You can’t perform that action at this time.
0 commit comments