@@ -351,18 +351,27 @@ endfunction
351
351
352
352
353
353
function ! OmniSharp#testrunner#SetTests (bufferTests) abort
354
- let winid = win_getid ()
354
+ let hasNew = v: false
355
355
for buffer in a: bufferTests
356
356
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
357
360
let project = get (s: tests , key , { ' files' : {}, ' errors' : [] })
358
361
let project.visible = 1
359
362
let s: tests [key ] = project
360
363
let filename = fnamemodify (bufname (buffer .bufnr ), ' :p' )
361
364
let testfile = get (project.files , filename, { ' tests' : {} })
365
+ if ! get (testfile, ' visible' , 0 )
366
+ let hasNew = v: true
367
+ endif
362
368
let testfile.visible = 1
363
369
let project.files [filename] = testfile
364
370
for buffertest in buffer .tests
365
371
let name = buffertest.name
372
+ if ! has_key (testfile.tests, name)
373
+ let hasNew = v: true
374
+ endif
366
375
let test = get (testfile.tests, name, { ' state' : ' Not run' })
367
376
let testfile.tests[name] = test
368
377
let test.name = name
@@ -373,8 +382,19 @@ function! OmniSharp#testrunner#SetTests(bufferTests) abort
373
382
let test.lnum = buffertest.nameRange.Start.Line
374
383
endfor
375
384
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
378
398
endfunction
379
399
380
400
@@ -431,6 +451,11 @@ function! s:UpdateState(bufnr, state, ...) abort
431
451
call setbufvar (s: runner .bufnr , ' &modified' , 0 )
432
452
endif
433
453
endfor
454
+ let winid = win_getid ()
455
+ if s: buffer .focus ()
456
+ syn sync fromstart
457
+ call win_gotoid (winid)
458
+ endif
434
459
endfunction
435
460
436
461
function ! OmniSharp#testrunner#StateComplete (location) abort
0 commit comments