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:
|
except vim.error as e:
|
||||||
if 'E325' not in str( e ):
|
if 'E325' not in str( e ):
|
||||||
self._logger.exception(
|
self._logger.exception(
|
||||||
'Unexpected error from vim: {0}'.format( str( e ) ) )
|
'Unexpected error from vim: loading buffer {}'.format(
|
||||||
|
buffer_number ) )
|
||||||
return False
|
return False
|
||||||
|
|
||||||
self._signs[ 'vimspectorPC' ] = self._next_sign_id
|
self._signs[ 'vimspectorPC' ] = self._next_sign_id
|
||||||
|
|
@ -184,6 +185,7 @@ class CodeView( object ):
|
||||||
'env': env,
|
'env': env,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
buffer_number = None
|
||||||
with utils.TemporaryVimOptions( { 'splitright': True,
|
with utils.TemporaryVimOptions( { 'splitright': True,
|
||||||
'equalalways': False } ):
|
'equalalways': False } ):
|
||||||
with utils.RestoreCurrentWindow():
|
with utils.RestoreCurrentWindow():
|
||||||
|
|
@ -194,4 +196,10 @@ class CodeView( object ):
|
||||||
|
|
||||||
self._logger.debug( 'Start terminal: {}'.format( vim_cmd ) )
|
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 )
|
failure_handler )
|
||||||
self._SendMessage( msg )
|
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 ):
|
def Reset( self ):
|
||||||
self._Write = None
|
self._Write = None
|
||||||
self._handler = None
|
self._handler = None
|
||||||
|
|
|
||||||
|
|
@ -488,7 +488,15 @@ class DebugSession( object ):
|
||||||
def OnRequest_runInTerminal( self, message ):
|
def OnRequest_runInTerminal( self, message ):
|
||||||
params = message[ 'arguments' ]
|
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 ):
|
def Clear( self ):
|
||||||
self._codeView.Clear()
|
self._codeView.Clear()
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue