Skip to content

Commit 32e1641

Browse files
committed
Only repaint when initializing new tests
1 parent cb42eb0 commit 32e1641

File tree

1 file changed

+28
-3
lines changed

1 file changed

+28
-3
lines changed

autoload/OmniSharp/testrunner.vim

Lines changed: 28 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -351,18 +351,27 @@ endfunction
351351

352352

353353
function! 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! 5zo
395+
endfor
396+
call win_gotoid(winid)
397+
endif
378398
endfunction
379399

380400

@@ -431,6 +451,11 @@ function! s:UpdateState(bufnr, state, ...) abort
431451
call setbufvar(s:runner.bufnr, '&modified', 0)
432452
endif
433453
endfor
454+
let winid = win_getid()
455+
if s:buffer.focus()
456+
syn sync fromstart
457+
call win_gotoid(winid)
458+
endif
434459
endfunction
435460

436461
function! OmniSharp#testrunner#StateComplete(location) abort

0 commit comments

Comments
 (0)