Merge pull request #824 from mispencer/OmnisharpServerUpdate

Update OmniSharpServer to latest to resolve port issues on windows as non-admin
This commit is contained in:
Val Markovic 2014-02-19 13:40:52 -08:00
commit 55663847ba
3 changed files with 35 additions and 24 deletions

@ -1 +1 @@
Subproject commit ee198be6f06d39cef84b0817e0b88d3e08cbc477 Subproject commit 53ea4d7fb5190fa118ff36cdf1037644b4a2fc9f

View File

@ -39,6 +39,17 @@ class CsharpCompleter( Completer ):
A Completer that uses the Omnisharp server as completion engine. A Completer that uses the Omnisharp server as completion engine.
""" """
subcommands = {
'StartServer': (lambda self, request_data: self._StartServer( request_data )),
'StopServer': (lambda self, request_data: self._StopServer()),
'RestartServer': (lambda self, request_data: self._RestartServer( request_data )),
'ServerRunning': (lambda self, request_data: self._ServerIsRunning()),
'ServerReady': (lambda self, request_data: self._ServerIsReady()),
'GoToDefinition': (lambda self, request_data: self._GoToDefinition( request_data )),
'GoToDeclaration': (lambda self, request_data: self._GoToDefinition( request_data )),
'GoToDefinitionElseDeclaration': (lambda self, request_data: self._GoToDefinition( request_data ))
}
def __init__( self, user_options ): def __init__( self, user_options ):
super( CsharpCompleter, self ).__init__( user_options ) super( CsharpCompleter, self ).__init__( user_options )
self._omnisharp_port = None self._omnisharp_port = None
@ -65,13 +76,7 @@ class CsharpCompleter( Completer ):
def DefinedSubcommands( self ): def DefinedSubcommands( self ):
return [ 'StartServer', return CsharpCompleter.subcommands.keys()
'StopServer',
'RestartServer',
'ServerRunning',
'GoToDefinition',
'GoToDeclaration',
'GoToDefinitionElseDeclaration' ]
def OnFileReadyToParse( self, request_data ): def OnFileReadyToParse( self, request_data ):
@ -85,21 +90,11 @@ class CsharpCompleter( Completer ):
raise ValueError( self.UserCommandsHelpMessage() ) raise ValueError( self.UserCommandsHelpMessage() )
command = arguments[ 0 ] command = arguments[ 0 ]
if command == 'StartServer': if command in CsharpCompleter.subcommands:
return self._StartServer( request_data ) command_lamba = CsharpCompleter.subcommands[ command ]
elif command == 'StopServer': return command_lamba( self, request_data )
return self._StopServer() else:
elif command == 'RestartServer': raise ValueError( self.UserCommandsHelpMessage() )
if self._ServerIsRunning():
self._StopServer()
return self._StartServer( request_data )
elif command == 'ServerRunning':
return self._ServerIsRunning()
elif command in [ 'GoToDefinition',
'GoToDeclaration',
'GoToDefinitionElseDeclaration' ]:
return self._GoToDefinition( request_data )
raise ValueError( self.UserCommandsHelpMessage() )
def DebugInfo( self ): def DebugInfo( self ):
@ -181,6 +176,13 @@ class CsharpCompleter( Completer ):
self._logger.info( 'Stopping OmniSharp server' ) self._logger.info( 'Stopping OmniSharp server' )
def _RestartServer ( self, request_data ):
""" Restarts the OmniSharp server """
if self._ServerIsRunning():
self._StopServer()
return self._StartServer( request_data )
def _GetCompletions( self, request_data ): def _GetCompletions( self, request_data ):
""" Ask server for completions """ """ Ask server for completions """
completions = self._GetResponse( '/autocomplete', completions = self._GetResponse( '/autocomplete',
@ -221,6 +223,15 @@ class CsharpCompleter( Completer ):
return False return False
def _ServerIsReady( self ):
""" Check if our OmniSharp server is ready """
try:
return bool( self._omnisharp_port and
self._GetResponse( '/checkreadystatus', silent = True ) )
except:
return False
def _ServerLocation( self ): def _ServerLocation( self ):
return 'http://localhost:' + str( self._omnisharp_port ) return 'http://localhost:' + str( self._omnisharp_port )

View File

@ -73,7 +73,7 @@ def GetCompletions_CsCompleter_Works_test():
while True: while True:
result = app.post_json( '/run_completer_command', result = app.post_json( '/run_completer_command',
BuildRequest( completer_target = 'filetype_default', BuildRequest( completer_target = 'filetype_default',
command_arguments = ['ServerRunning'], command_arguments = ['ServerReady'],
filetype = 'cs' ) ).json filetype = 'cs' ) ).json
if result: if result:
break break