Goto definition implemented
This commit is contained in:
parent
bba97eb38b
commit
6b73f3fde4
@ -70,7 +70,10 @@ class CsharpCompleter( ThreadedCompleter ):
|
|||||||
def DefinedSubcommands( self ):
|
def DefinedSubcommands( self ):
|
||||||
return [ 'StartServer',
|
return [ 'StartServer',
|
||||||
'StopServer',
|
'StopServer',
|
||||||
'RestartServer' ]
|
'RestartServer',
|
||||||
|
'GoToDefinition',
|
||||||
|
'GoToDeclaration',
|
||||||
|
'GoToDefinitionElseDeclaration' ]
|
||||||
|
|
||||||
|
|
||||||
def OnUserCommand( self, arguments ):
|
def OnUserCommand( self, arguments ):
|
||||||
@ -87,6 +90,12 @@ class CsharpCompleter( ThreadedCompleter ):
|
|||||||
if self._ServerIsRunning():
|
if self._ServerIsRunning():
|
||||||
self._StopServer()
|
self._StopServer()
|
||||||
self._StartServer()
|
self._StartServer()
|
||||||
|
elif command == 'GoToDefinition':
|
||||||
|
self._GoToDefinition()
|
||||||
|
elif command == 'GoToDeclaration':
|
||||||
|
self._GoToDefinition()
|
||||||
|
elif command == 'GoToDefinitionElseDeclaration':
|
||||||
|
self._GoToDefinition()
|
||||||
|
|
||||||
|
|
||||||
def DebugInfo( self ):
|
def DebugInfo( self ):
|
||||||
@ -157,6 +166,36 @@ class CsharpCompleter( ThreadedCompleter ):
|
|||||||
vimsupport.PostVimMessage( 'Stopping OmniSharp server' )
|
vimsupport.PostVimMessage( 'Stopping OmniSharp server' )
|
||||||
|
|
||||||
|
|
||||||
|
def _GetCompletions( self ):
|
||||||
|
""" Ask server for completions """
|
||||||
|
line, column = vimsupport.CurrentLineAndColumn()
|
||||||
|
|
||||||
|
parameters = {}
|
||||||
|
parameters[ 'line' ], parameters[ 'column' ] = line + 1, column + 1
|
||||||
|
parameters[ 'buffer' ] = '\n'.join( vim.current.buffer )
|
||||||
|
parameters[ 'filename' ] = vim.current.buffer.name
|
||||||
|
|
||||||
|
completions = self._GetResponse( '/autocomplete', parameters )
|
||||||
|
return completions if completions != None else []
|
||||||
|
|
||||||
|
|
||||||
|
def _GoToDefinition( self ):
|
||||||
|
line, column = vimsupport.CurrentLineAndColumn()
|
||||||
|
|
||||||
|
parameters = {}
|
||||||
|
parameters[ 'line' ], parameters[ 'column' ] = line + 1, column + 1
|
||||||
|
parameters[ 'buffer' ] = '\n'.join( vim.current.buffer )
|
||||||
|
parameters[ 'filename' ] = vim.current.buffer.name
|
||||||
|
|
||||||
|
definition = self._GetResponse( '/gotodefinition', parameters )
|
||||||
|
if definition[ 'FileName' ] != None:
|
||||||
|
vimsupport.JumpToLocation( definition[ 'FileName' ],
|
||||||
|
definition[ 'Line' ],
|
||||||
|
definition[ 'Column' ] )
|
||||||
|
else:
|
||||||
|
vimsupport.PostVimMessage( 'Can\'t jump to definition' )
|
||||||
|
|
||||||
|
|
||||||
def _ServerIsRunning( self ):
|
def _ServerIsRunning( self ):
|
||||||
""" Check if our OmniSharp server is running """
|
""" Check if our OmniSharp server is running """
|
||||||
return ( self._omnisharp_port != None and
|
return ( self._omnisharp_port != None and
|
||||||
@ -180,19 +219,6 @@ class CsharpCompleter( ThreadedCompleter ):
|
|||||||
return 'http://localhost:' + str( port )
|
return 'http://localhost:' + str( port )
|
||||||
|
|
||||||
|
|
||||||
def _GetCompletions( self ):
|
|
||||||
""" Ask server for completions """
|
|
||||||
line, column = vimsupport.CurrentLineAndColumn()
|
|
||||||
|
|
||||||
parameters = {}
|
|
||||||
parameters[ 'line' ], parameters[ 'column' ] = line + 1, column + 1
|
|
||||||
parameters[ 'buffer' ] = '\n'.join( vim.current.buffer )
|
|
||||||
parameters[ 'filename' ] = vim.current.buffer.name
|
|
||||||
|
|
||||||
completions = self._GetResponse( '/autocomplete', parameters )
|
|
||||||
return completions if completions != None else []
|
|
||||||
|
|
||||||
|
|
||||||
def _GetResponse( self, endPoint, parameters={}, silent=False, port=None ):
|
def _GetResponse( self, endPoint, parameters={}, silent=False, port=None ):
|
||||||
""" Handle communication with server """
|
""" Handle communication with server """
|
||||||
target = urlparse.urljoin( self._PortToHost( port ), endPoint )
|
target = urlparse.urljoin( self._PortToHost( port ), endPoint )
|
||||||
|
Loading…
x
Reference in New Issue
Block a user