From e885c95daae2387b66cbe05318e30870dcdd07d9 Mon Sep 17 00:00:00 2001 From: Ben Jackson Date: Sat, 18 Jul 2020 18:09:25 +0100 Subject: [PATCH] Put the cursor at the end of the buffer after evaluations --- python3/vimspector/output.py | 17 +++----- tests/lib/autoload/vimspector/test/signs.vim | 4 +- tests/variables.test.vim | 43 ++++++++++++++++++++ 3 files changed, 51 insertions(+), 13 deletions(-) diff --git a/python3/vimspector/output.py b/python3/vimspector/output.py index c21f8f1..a359448 100644 --- a/python3/vimspector/output.py +++ b/python3/vimspector/output.py @@ -126,20 +126,13 @@ class OutputView( object ): self._ShowOutput( category ) def Evaluate( self, frame, expression ): - console = self._buffers[ 'Console' ].buf - with utils.ModifiableScratchBuffer( console ): - utils.AppendToBuffer( console, 'Evaluating: ' + expression ) + self._Print( 'Console', [ 'Evaluating: ' + expression ] ) def print_result( message ): - with utils.ModifiableScratchBuffer( console ): - utils.AppendToBuffer( console, - 'Evaluated: ' + expression ) - - result = message[ 'body' ][ 'result' ] - if result is None: - result = 'null' - - utils.AppendToBuffer( console, ' Result: ' + result ) + result = message[ 'body' ][ 'result' ] + if result is None: + result = '' + self._Print( 'Console', f' Result: { result }' ) request = { 'command': 'evaluate', diff --git a/tests/lib/autoload/vimspector/test/signs.vim b/tests/lib/autoload/vimspector/test/signs.vim index bd7a463..571353e 100644 --- a/tests/lib/autoload/vimspector/test/signs.vim +++ b/tests/lib/autoload/vimspector/test/signs.vim @@ -9,7 +9,9 @@ function! vimspector#test#signs#AssertCursorIsAtLineInBuffer( buffer, call WaitForAssert( {-> \ assert_equal( a:line, line( '.' ), 'Current line' ) \ }, 10000 ) - call assert_equal( a:column, col( '.' ), 'Current column' ) + if a:column isnot v:null + call assert_equal( a:column, col( '.' ), 'Current column' ) + endif endfunction function! vimspector#test#signs#AssertPCIsAtLineInBuffer( buffer, line ) abort diff --git a/tests/variables.test.vim b/tests/variables.test.vim index 1b10809..733061f 100644 --- a/tests/variables.test.vim +++ b/tests/variables.test.vim @@ -479,3 +479,46 @@ function! Test_ExpandWatch() call vimspector#test#setup#Reset() %bwipe! endfunction + + +function Test_EvaluateConsole() + 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 ) + + VimspectorEval t.i + call assert_equal( bufnr( 'vimspector.Console' ), + \ winbufnr( g:vimspector_session_windows.output ) ) + call WaitForAssert( {-> + \ assert_equal( + \ [ + \ ' Result: 1' + \ ], + \ getbufline( bufnr( 'vimspector.Console' ), '$', '$' ) + \ ) + \ } ) + + let len = getbufinfo( 'vimspector.Console' )[ 0 ].linecount + + call WaitForAssert( {-> + \ assert_equal( + \ [ + \ 'Evaluating: t.i', + \ ' Result: 1' + \ ], + \ getbufline( bufnr( 'vimspector.Console' ), len-1, '$' ) + \ ) + \ } ) + call vimspector#test#signs#AssertCursorIsAtLineInBuffer( + \ 'vimspector.Console', len, v:null ) + + call vimspector#test#setup#Reset() + %bwipe! +endfunction