From 33a05a4b42e7986a20702ea06a6b86e9fdeca3e4 Mon Sep 17 00:00:00 2001 From: Strahinja Val Markovic Date: Wed, 17 Jul 2013 18:29:34 -0700 Subject: [PATCH] Minor style fixes --- python/ycm/completers/cs/cs_completer.py | 64 +++++++++++++++--------- 1 file changed, 39 insertions(+), 25 deletions(-) diff --git a/python/ycm/completers/cs/cs_completer.py b/python/ycm/completers/cs/cs_completer.py index 363718c1..0658687f 100755 --- a/python/ycm/completers/cs/cs_completer.py +++ b/python/ycm/completers/cs/cs_completer.py @@ -37,31 +37,36 @@ class CsharpCompleter( ThreadedCompleter ): def __init__( self ): super( CsharpCompleter, self ).__init__() - self.OmniSharpPort = int( vimsupport.GetVariableValue( + self._omnisharp_port = int( vimsupport.GetVariableValue( "g:ycm_csharp_server_port" ) ) - self.OmniSharpHost = 'http://localhost:' + str( self.OmniSharpPort ) + self._omnisharp_host = 'http://localhost:' + str( self._omnisharp_port ) if vimsupport.GetBoolValue( "g:ycm_auto_start_csharp_server" ): self._StartServer() + def OnVimLeave( self ): if self._ServerIsRunning(): self._StopServer() + def SupportedFiletypes( self ): """ Just csharp """ return [ 'cs' ] + def ComputeCandidates( self, unused_query, unused_start_column ): - return [ { 'word': str( completion['CompletionText'] ), - 'menu': str( completion['DisplayText'] ), - 'info': str( completion['Description'] ) } + return [ { 'word': str( completion[ 'CompletionText' ] ), + 'menu': str( completion[ 'DisplayText' ] ), + 'info': str( completion[ 'Description' ] ) } for completion in self._GetCompletions() ] + def DefinedSubcommands( self ): return [ 'StartServer', 'StopServer', 'RestartServer' ] + def OnUserCommand( self, arguments ): if not arguments: self.EchoUserCommandsHelpMessage() @@ -77,55 +82,50 @@ class CsharpCompleter( ThreadedCompleter ): self._StopServer() self._StartServer() + def _StartServer( self ): """ Start the OmniSharp server """ if not self._ServerIsRunning(): - solutionfiles, folder = self._FindSolutionFiles() + solutionfiles, folder = _FindSolutionFiles() if len( solutionfiles ) == 0: vimsupport.PostVimMessage( 'Error starting OmniSharp server: no solutionfile found' ) return elif len( solutionfiles ) == 1: - solutionfile = solutionfiles[0] + solutionfile = solutionfiles[ 0 ] else: choice = vimsupport.PresentDialog( "Which solutionfile should be loaded?", - [ str(i) + " " + s for i, s in enumerate( solutionfiles ) ] ) + [ str( i ) + " " + solution for i, solution in + enumerate( solutionfiles ) ] ) if choice == -1: vimsupport.PostVimMessage( 'OmniSharp not started' ) return else: solutionfile = solutionfiles[ choice ] - omnisharp = os.path.join( os.path.abspath( os.path.dirname( __file__ ) ), - 'OmniSharpServer/OmniSharp/bin/Debug/OmniSharp.exe' ) + omnisharp = os.path.join( + os.path.abspath( os.path.dirname( __file__ ) ), + 'OmniSharpServer/OmniSharp/bin/Debug/OmniSharp.exe' ) solutionfile = os.path.join ( folder, solutionfile ) # command has to be provided as one string for some reason - command = [ omnisharp + ' -p ' + str( self.OmniSharpPort ) - + ' -s ' + solutionfile ] + command = [ omnisharp + ' -p ' + str( self._omnisharp_port ) + ' -s ' + + solutionfile ] with open( os.devnull, "w" ) as fnull: subprocess.Popen( command, stdout = fnull, stderr = fnull, shell=True ) + def _StopServer( self ): """ Stop the OmniSharp server """ self._GetResponse( '/stopserver' ) + def _ServerIsRunning( self ): """ Check if the OmniSharp server is running """ return self._GetResponse( '/checkalivestatus', silent=True ) != None - def _FindSolutionFiles( self ): - folder = os.path.dirname( vim.current.buffer.name ) - solutionfiles = glob.glob1( folder, '*.sln' ) - while not solutionfiles: - lastfolder = folder - folder = os.path.dirname( folder ) - if folder == lastfolder: - break - solutionfiles = glob.glob1( folder, '*.sln' ) - return solutionfiles, folder def _GetCompletions( self ): """ Ask server for completions """ @@ -139,15 +139,29 @@ class CsharpCompleter( ThreadedCompleter ): completions = self._GetResponse( '/autocomplete', parameters ) return completions if completions != None else [] + def _GetResponse( self, endPoint, parameters={}, silent = False ): """ Handle communication with server """ - target = urlparse.urljoin( self.OmniSharpHost, endPoint ) + target = urlparse.urljoin( self._omnisharp_host, endPoint ) parameters = urllib.urlencode( parameters ) try: response = urllib2.urlopen( target, parameters ) return json.loads( response.read() ) except Exception as e: if not silent: - vimsupport.PostVimMessage('OmniSharp : Could not connect to ' - + target + ': ' + str(e)) + vimsupport.PostVimMessage('OmniSharp : Could not connect to ' + target + + ': ' + str(e)) return None + + +def _FindSolutionFiles(): + folder = os.path.dirname( vim.current.buffer.name ) + solutionfiles = glob.glob1( folder, '*.sln' ) + while not solutionfiles: + lastfolder = folder + folder = os.path.dirname( folder ) + if folder == lastfolder: + break + solutionfiles = glob.glob1( folder, '*.sln' ) + return solutionfiles, folder +