From 5f102e7ece63bc330673277b14b934105a7b077b Mon Sep 17 00:00:00 2001 From: Billie Cleek Date: Sat, 18 Jul 2020 09:25:28 -0700 Subject: [PATCH] lsp: return current diagnostics when file is unchanged Fixes #2958 --- autoload/go/lsp.vim | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/autoload/go/lsp.vim b/autoload/go/lsp.vim index ba99681a6b..0cb25a6311 100644 --- a/autoload/go/lsp.vim +++ b/autoload/go/lsp.vim @@ -1298,11 +1298,16 @@ function! go#lsp#AnalyzeFile(fname) abort let l:lsp = s:lspfactory.get() - let l:version = l:lsp.fileVersions[l:fname] + let l:lastdiagnostics = get(l:lsp.diagnostics, l:fname, []) + + let l:version = l:lsp.fileVersions[a:fname] + if l:version == getbufvar(a:fname, 'changedtick') + return l:lastdiagnostics + endif call go#lsp#DidChange(a:fname) - let l:diagnostics = go#promise#New(function('s:setDiagnostics', []), 10000, get(l:lsp.diagnostics, l:fname, [])) + let l:diagnostics = go#promise#New(function('s:setDiagnostics', []), 10000, l:lastdiagnostics) let l:lsp.notificationQueue[l:fname] = add(l:lsp.notificationQueue[l:fname], l:diagnostics.wrapper) return l:diagnostics.await() endfunction