Minor improvements to console usage
Display failures and stop adding random text which makes the (very useful) CodeLLDB interface look messy
This commit is contained in:
parent
16f22b396f
commit
1b9763a4fc
4 changed files with 63 additions and 10 deletions
|
|
@ -183,7 +183,7 @@ function! vimspector#Evaluate( expr ) abort
|
|||
return
|
||||
endif
|
||||
py3 _vimspector_session.ShowOutput( 'Console' )
|
||||
py3 _vimspector_session.EvaluateConsole( vim.eval( 'a:expr' ) )
|
||||
py3 _vimspector_session.EvaluateConsole( vim.eval( 'a:expr' ), True )
|
||||
endfunction
|
||||
|
||||
function! vimspector#EvaluateConsole( expr ) abort
|
||||
|
|
@ -192,7 +192,7 @@ function! vimspector#EvaluateConsole( expr ) abort
|
|||
endif
|
||||
stopinsert
|
||||
setlocal nomodified
|
||||
py3 _vimspector_session.EvaluateConsole( vim.eval( 'a:expr' ) )
|
||||
py3 _vimspector_session.EvaluateConsole( vim.eval( 'a:expr' ), False )
|
||||
endfunction
|
||||
|
||||
function! vimspector#ShowOutput( ... ) abort
|
||||
|
|
|
|||
|
|
@ -467,9 +467,10 @@ class DebugSession( object ):
|
|||
expression )
|
||||
|
||||
@IfConnected()
|
||||
def EvaluateConsole( self, expression ):
|
||||
def EvaluateConsole( self, expression, verbose ):
|
||||
self._outputView.Evaluate( self._stackTraceView.GetCurrentFrame(),
|
||||
expression )
|
||||
expression,
|
||||
verbose )
|
||||
|
||||
@IfConnected()
|
||||
def DeleteWatch( self ):
|
||||
|
|
|
|||
|
|
@ -260,14 +260,18 @@ class DAPOutputView( OutputView ):
|
|||
# Don't clear because output is probably still useful
|
||||
self._connection = None
|
||||
|
||||
def Evaluate( self, frame, expression ):
|
||||
self._Print( 'Console', [ 'Evaluating: ' + expression ] )
|
||||
def Evaluate( self, frame, expression, verbose ):
|
||||
if verbose:
|
||||
self._Print( 'Console', f"Evaluating: { expression }" )
|
||||
|
||||
def print_result( message ):
|
||||
result = message[ 'body' ][ 'result' ]
|
||||
if result is None:
|
||||
result = '<no result>'
|
||||
self._Print( 'Console', f' Result: { result }' )
|
||||
self._Print( 'Console', result.splitlines() )
|
||||
|
||||
def print_failure( reason, msg ):
|
||||
self._Print( 'Console', reason.splitlines() )
|
||||
|
||||
request = {
|
||||
'command': 'evaluate',
|
||||
|
|
@ -280,4 +284,6 @@ class DAPOutputView( OutputView ):
|
|||
if frame:
|
||||
request[ 'arguments' ][ 'frameId' ] = frame[ 'id' ]
|
||||
|
||||
self._connection.DoRequest( print_result, request )
|
||||
self._connection.DoRequest( print_result,
|
||||
request,
|
||||
print_failure )
|
||||
|
|
|
|||
|
|
@ -499,7 +499,7 @@ function Test_EvaluateConsole()
|
|||
call WaitForAssert( {->
|
||||
\ assert_equal(
|
||||
\ [
|
||||
\ ' Result: 1'
|
||||
\ '1'
|
||||
\ ],
|
||||
\ getbufline( bufnr( 'vimspector.Console' ), '$', '$' )
|
||||
\ )
|
||||
|
|
@ -511,7 +511,7 @@ function Test_EvaluateConsole()
|
|||
\ assert_equal(
|
||||
\ [
|
||||
\ 'Evaluating: t.i',
|
||||
\ ' Result: 1'
|
||||
\ '1'
|
||||
\ ],
|
||||
\ getbufline( bufnr( 'vimspector.Console' ), len-1, '$' )
|
||||
\ )
|
||||
|
|
@ -522,3 +522,49 @@ function Test_EvaluateConsole()
|
|||
call vimspector#test#setup#Reset()
|
||||
%bwipe!
|
||||
endfunction
|
||||
|
||||
|
||||
function Test_EvaluatePromptConsole()
|
||||
let fn = 'testdata/cpp/simple/struct.cpp'
|
||||
call s:StartDebugging( #{ fn: fn, line: 24, col: 1, launch: #{
|
||||
\ configuration: 'run-to-breakpoint'
|
||||
\ } } )
|
||||
|
||||
" Make sure the Test t is initialised
|
||||
call vimspector#StepOver()
|
||||
call vimspector#test#signs#AssertCursorIsAtLineInBuffer( fn, 26, 1 )
|
||||
call vimspector#StepOver()
|
||||
call vimspector#test#signs#AssertCursorIsAtLineInBuffer( fn, 27, 1 )
|
||||
|
||||
VimspectorShowOutput
|
||||
call assert_equal( bufnr( 'vimspector.Console' ),
|
||||
\ winbufnr( g:vimspector_session_windows.output ) )
|
||||
|
||||
call feedkeys( "it.i\<CR>", 'xt' )
|
||||
call WaitForAssert( {->
|
||||
\ assert_equal(
|
||||
\ [
|
||||
\ '1'
|
||||
\ ],
|
||||
\ getbufline( bufnr( 'vimspector.Console' ), '$', '$' )
|
||||
\ )
|
||||
\ } )
|
||||
|
||||
let len = getbufinfo( 'vimspector.Console' )[ 0 ].linecount
|
||||
|
||||
call WaitForAssert( {->
|
||||
\ assert_equal(
|
||||
\ [
|
||||
\ '> t.i',
|
||||
\ '',
|
||||
\ '1'
|
||||
\ ],
|
||||
\ getbufline( bufnr( 'vimspector.Console' ), len-2, '$' )
|
||||
\ )
|
||||
\ } )
|
||||
call vimspector#test#signs#AssertCursorIsAtLineInBuffer(
|
||||
\ 'vimspector.Console', len, v:null )
|
||||
|
||||
call vimspector#test#setup#Reset()
|
||||
%bwipe!
|
||||
endfunction
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue