@@ -237,10 +237,13 @@ endfunction
237
237
function ! OmniSharp#FindSolutionOrDir (... ) abort
238
238
let interactive = a: 0 ? a: 1 : 1
239
239
let bufnr = a: 0 > 1 ? a: 2 : bufnr (' %' )
240
- if empty (getbufvar (bufnr , ' OmniSharp_buf_server' ))
240
+ let cache = getbufvar (bufnr , ' OmniSharp_buf_server' )
241
+ if empty (cache) || index (OmniSharp#proc#ListJobs (), cache) < 0
241
242
try
242
243
let sln = s: FindSolution (interactive, bufnr )
243
- call setbufvar (bufnr , ' OmniSharp_buf_server' , sln)
244
+ if sln != cache
245
+ call setbufvar (bufnr , ' OmniSharp_buf_server' , sln)
246
+ endif
244
247
catch
245
248
return ' '
246
249
endtry
@@ -378,11 +381,11 @@ endfunction
378
381
379
382
380
383
function ! s: FindSolution (interactive, bufnr ) abort
381
- let solution_files = s: FindSolutionsFiles (a: bufnr )
382
- if empty (solution_files)
383
- " This file has no parent solution, so check for running solutions
384
- return s: FindRunningServerForBuffer (a: bufnr )
384
+ let running_server_for_buffer = s: FindRunningServerForBuffer (a: bufnr )
385
+ if ! empty (running_server_for_buffer)
386
+ return running_server_for_buffer
385
387
endif
388
+ let solution_files = s: FindSolutionsFiles (a: bufnr )
386
389
387
390
if len (solution_files) == 1
388
391
return solution_files[0 ]
0 commit comments