Properly responsd to server reverse-request

This commit is contained in:
Ben Jackson 2018-12-19 00:44:33 +00:00
commit 87db1e3478
3 changed files with 37 additions and 3 deletions

View file

@ -73,7 +73,8 @@ class CodeView( object ):
except vim.error as e:
if 'E325' not in str( e ):
self._logger.exception(
'Unexpected error from vim: {0}'.format( str( e ) ) )
'Unexpected error from vim: loading buffer {}'.format(
buffer_number ) )
return False
self._signs[ 'vimspectorPC' ] = self._next_sign_id
@ -184,6 +185,7 @@ class CodeView( object ):
'env': env,
}
buffer_number = None
with utils.TemporaryVimOptions( { 'splitright': True,
'equalalways': False } ):
with utils.RestoreCurrentWindow():
@ -194,4 +196,10 @@ class CodeView( object ):
self._logger.debug( 'Start terminal: {}'.format( vim_cmd ) )
vim.eval( vim_cmd )
buffer_number = int( vim.eval( vim_cmd ) )
if buffer_number is None or buffer_number <= 0:
# TODO: Do something better like reject the request?
raise ValueError( "Unable to start terminal" )
return buffer_number

View file

@ -48,6 +48,24 @@ class DebugAdapterConnection( object ):
failure_handler )
self._SendMessage( msg )
def DoResponse( self, request, error, response ):
this_id = self._next_message_id
self._next_message_id += 1
msg = {}
msg[ 'seq' ] = this_id
msg[ 'type' ] = 'response'
msg[ 'request_seq' ] = request[ 'seq' ]
msg[ 'command' ] = request[ 'command' ]
msg[ 'body' ] = response
if error:
msg[ 'success' ] = False
msg[ 'message' ] = error
else:
msg[ 'success' ] = True
self._SendMessage( msg )
def Reset( self ):
self._Write = None
self._handler = None

View file

@ -488,7 +488,15 @@ class DebugSession( object ):
def OnRequest_runInTerminal( self, message ):
params = message[ 'arguments' ]
self._codeView.LaunchTerminal( params )
buffer_number = self._codeView.LaunchTerminal( params )
response = {
'processId': vim.eval( 'job_info( term_getjob( {} ) )'
'.process'.format( buffer_number ) )
}
self._connection.DoResponse( message, None, response )
def Clear( self ):
self._codeView.Clear()