parent
b903867cdd
commit
98f549aeae
@ -31,12 +31,10 @@ import json
|
|||||||
import subprocess
|
import subprocess
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
|
|
||||||
SERVER_NOT_FOUND_MSG = ( 'OmniSharp server binary not found at {0}. ' +
|
SERVER_NOT_FOUND_MSG = ( 'OmniSharp server binary not found at {0}. ' +
|
||||||
'Did you compile it? You can do so by running ' +
|
'Did you compile it? You can do so by running ' +
|
||||||
'"./install.sh --omnisharp-completer".' )
|
'"./install.sh --omnisharp-completer".' )
|
||||||
|
|
||||||
CS_SERVER_PORT_RANGE_START = 10001
|
|
||||||
|
|
||||||
class CsharpCompleter( Completer ):
|
class CsharpCompleter( Completer ):
|
||||||
"""
|
"""
|
||||||
@ -118,7 +116,7 @@ class CsharpCompleter( Completer ):
|
|||||||
""" Start the OmniSharp server """
|
""" Start the OmniSharp server """
|
||||||
self._logger.info( 'startup' )
|
self._logger.info( 'startup' )
|
||||||
|
|
||||||
self._omnisharp_port = CS_SERVER_PORT_RANGE_START + os.getpid()
|
self._omnisharp_port = utils.GetUnusedLocalhostPort()
|
||||||
solutionfiles, folder = _FindSolutionFiles( request_data[ 'filepath' ] )
|
solutionfiles, folder = _FindSolutionFiles( request_data[ 'filepath' ] )
|
||||||
|
|
||||||
if len( solutionfiles ) == 0:
|
if len( solutionfiles ) == 0:
|
||||||
|
@ -22,6 +22,7 @@ import os
|
|||||||
import sys
|
import sys
|
||||||
import signal
|
import signal
|
||||||
import functools
|
import functools
|
||||||
|
import socket
|
||||||
|
|
||||||
WIN_PYTHON27_PATH = 'C:\python27\pythonw.exe'
|
WIN_PYTHON27_PATH = 'C:\python27\pythonw.exe'
|
||||||
WIN_PYTHON26_PATH = 'C:\python26\pythonw.exe'
|
WIN_PYTHON26_PATH = 'C:\python26\pythonw.exe'
|
||||||
@ -48,6 +49,15 @@ def PathToTempDir():
|
|||||||
return tempdir
|
return tempdir
|
||||||
|
|
||||||
|
|
||||||
|
def GetUnusedLocalhostPort():
|
||||||
|
sock = socket.socket()
|
||||||
|
# This tells the OS to give us any free port in the range [1024 - 65535]
|
||||||
|
sock.bind( ( '', 0 ) )
|
||||||
|
port = sock.getsockname()[ 1 ]
|
||||||
|
sock.close()
|
||||||
|
return port
|
||||||
|
|
||||||
|
|
||||||
def PathToPythonInterpreter():
|
def PathToPythonInterpreter():
|
||||||
# This is a bit tricky. Normally, sys.executable has the full path to the
|
# This is a bit tricky. Normally, sys.executable has the full path to the
|
||||||
# Python interpreter. But this code is also executed from inside Vim's
|
# Python interpreter. But this code is also executed from inside Vim's
|
||||||
|
@ -57,7 +57,7 @@ class YouCompleteMe( object ):
|
|||||||
|
|
||||||
|
|
||||||
def _SetupServer( self ):
|
def _SetupServer( self ):
|
||||||
server_port = SERVER_PORT_RANGE_START + os.getpid()
|
server_port = utils.GetUnusedLocalhostPort()
|
||||||
with tempfile.NamedTemporaryFile( delete = False ) as options_file:
|
with tempfile.NamedTemporaryFile( delete = False ) as options_file:
|
||||||
self._temp_options_filename = options_file.name
|
self._temp_options_filename = options_file.name
|
||||||
json.dump( dict( self._user_options ), options_file )
|
json.dump( dict( self._user_options ), options_file )
|
||||||
|
Loading…
x
Reference in New Issue
Block a user