Properly responsd to server reverse-request
This commit is contained in:
parent
73fe403a19
commit
87db1e3478
3 changed files with 37 additions and 3 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue