@@ -351,18 +351,27 @@ endfunction
351351
352352
353353function ! OmniSharp#testrunner#SetTests (bufferTests) abort
354- let winid = win_getid ()
354+ let hasNew = v: false
355355 for buffer in a: bufferTests
356356 let [sln, assembly, key ] = s: utils .getProject (buffer .bufnr )
357+ if ! has_key (s: tests , key ) || ! s: tests [key ].visible
358+ let hasNew = v: true
359+ endif
357360 let project = get (s: tests , key , { ' files' : {}, ' errors' : [] })
358361 let project.visible = 1
359362 let s: tests [key ] = project
360363 let filename = fnamemodify (bufname (buffer .bufnr ), ' :p' )
361364 let testfile = get (project.files , filename, { ' tests' : {} })
365+ if ! get (testfile, ' visible' , 0 )
366+ let hasNew = v: true
367+ endif
362368 let testfile.visible = 1
363369 let project.files [filename] = testfile
364370 for buffertest in buffer .tests
365371 let name = buffertest.name
372+ if ! has_key (testfile.tests, name)
373+ let hasNew = v: true
374+ endif
366375 let test = get (testfile.tests, name, { ' state' : ' Not run' })
367376 let testfile.tests[name] = test
368377 let test.name = name
@@ -373,8 +382,19 @@ function! OmniSharp#testrunner#SetTests(bufferTests) abort
373382 let test.lnum = buffertest.nameRange.Start.Line
374383 endfor
375384 endfor
376- call s: Open ()
377- call win_gotoid (winid)
385+ let winid = win_getid ()
386+ if hasNew
387+ call s: Open ()
388+ call win_gotoid (winid)
389+ elseif s: buffer .focus ()
390+ for buffer in a: bufferTests
391+ let filename = fnamemodify (bufname (buffer .bufnr ), ' :p' )
392+ let pattern = ' ^ ' . substitute (filename, ' /' , ' \\/' , ' g' )
393+ call search (pattern, ' cw' )
394+ normal ! 5 zo
395+ endfor
396+ call win_gotoid (winid)
397+ endif
378398endfunction
379399
380400
@@ -433,6 +453,11 @@ function! s:UpdateState(bufnr, state, ...) abort
433453 call setbufvar (s: runner .bufnr , ' &modified' , 0 )
434454 endif
435455 endfor
456+ let winid = win_getid ()
457+ if s: buffer .focus ()
458+ syn sync fromstart
459+ call win_gotoid (winid)
460+ endif
436461endfunction
437462
438463function ! OmniSharp#testrunner#StateComplete (location) abort
0 commit comments