@@ -237,10 +237,13 @@ endfunction
237237function ! OmniSharp#FindSolutionOrDir (... ) abort
238238 let interactive = a: 0 ? a: 1 : 1
239239 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
241242 try
242243 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
244247 catch
245248 return ' '
246249 endtry
@@ -378,11 +381,11 @@ endfunction
378381
379382
380383function ! 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
385387 endif
388+ let solution_files = s: FindSolutionsFiles (a: bufnr )
386389
387390 if len (solution_files) == 1
388391 return solution_files[0 ]
0 commit comments