@@ -127,8 +127,14 @@ export class ConnectionManager implements IConnectionManager {
127127 this . logger . debug ( 'OUTPUT: ' + data . toString ( ) ) ;
128128
129129 // If the language client isn't already running and it's sent the trigger text, start up a client
130- if ( this . languageServerClient === undefined && data . toString ( ) . match ( 'LANGUAGE SERVER RUNNING' ) !== null ) {
131- this . languageServerClient = this . createLanguageClient ( ) ;
130+ if ( this . languageServerClient === undefined && / L A N G U A G E S E R V E R R U N N I N G / . test ( data . toString ( ) ) ) {
131+ if ( this . connectionConfiguration . port ) {
132+ this . languageServerClient = this . createLanguageClient ( ) ;
133+ } else {
134+ var p = data . toString ( ) . match ( / L A N G U A G E S E R V E R R U N N I N G .* : ( \d + ) / ) ;
135+ this . connectionConfiguration . port = + p [ 1 ] ;
136+ this . languageServerClient = this . createLanguageClient ( ) ;
137+ }
132138 this . extensionContext . subscriptions . push ( this . languageServerClient . start ( ) ) ;
133139 }
134140 } ) ;
@@ -184,26 +190,8 @@ export class ConnectionManager implements IConnectionManager {
184190 if ( this . connectionConfiguration . protocol === ProtocolType . TCP ) {
185191 if ( this . connectionConfiguration . port ) {
186192 this . logger . debug ( logPrefix + 'Selected port for local language server: ' + this . connectionConfiguration . port ) ;
187- connMgr . startLanguageServerProcess ( localServer . command , localServer . args , localServer . options , callback ) ;
188- } else {
189- // Start a server to get a random port
190- this . logger . debug ( logPrefix + 'Creating server process to identify random port' ) ;
191- const server = net
192- . createServer ( )
193- . on ( 'close' , ( ) => {
194- this . logger . debug ( logPrefix + 'Server process to identify random port disconnected' ) ;
195- connMgr . startLanguageServerProcess ( localServer . command , localServer . args , localServer . options , callback ) ;
196- } )
197- . on ( 'error' , err => {
198- throw err ;
199- } ) ;
200-
201- // Listen on random port
202- server . listen ( 0 ) ;
203- this . logger . debug ( logPrefix + 'Selected port for local language server: ' + server . address ( ) . port ) ;
204- connMgr . connectionConfiguration . port = server . address ( ) . port ;
205- server . close ( ) ;
206193 }
194+ connMgr . startLanguageServerProcess ( localServer . command , localServer . args , localServer . options , callback ) ;
207195 } else {
208196 this . logger . debug ( logPrefix + 'STDIO Server process starting' ) ;
209197 connMgr . startLanguageServerProcess ( localServer . command , localServer . args , localServer . options , callback ) ;
0 commit comments