From 81bdb298c3759050e34c35d30a3d2c7aa1233876 Mon Sep 17 00:00:00 2001 From: Jose Alvarez Date: Fri, 12 Nov 2021 15:50:13 -0500 Subject: [PATCH] perf(diagnostics): ignore didSave notification if buffer unchanged --- lua/null-ls/diagnostics.lua | 10 ++++++++-- test/spec/diagnostics_spec.lua | 2 +- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/lua/null-ls/diagnostics.lua b/lua/null-ls/diagnostics.lua index e89a65315..1a66f4baf 100644 --- a/lua/null-ls/diagnostics.lua +++ b/lua/null-ls/diagnostics.lua @@ -92,10 +92,16 @@ M.handler = function(original_params) s.clear_cache(uri) end - local params = u.make_params(original_params, methods.map[method]) local bufnr = vim.uri_to_bufnr(uri) - local changedtick = original_params.textDocument.version or api.nvim_buf_get_changedtick(bufnr) + + if method == methods.lsp.DID_SAVE and changedtick == last_changedtick[uri] then + u.debug_log("buffer unchanged; ignoring didSave notification") + return + end + + local params = u.make_params(original_params, methods.map[method]) + last_changedtick[uri] = changedtick require("null-ls.generators").run_registered({ diff --git a/test/spec/diagnostics_spec.lua b/test/spec/diagnostics_spec.lua index 21235ca3b..25d7b816a 100644 --- a/test/spec/diagnostics_spec.lua +++ b/test/spec/diagnostics_spec.lua @@ -67,7 +67,7 @@ describe("diagnostics", function() it("should call make_params with params and method", function() diagnostics.handler(mock_params) - assert.stub(u.make_params).was_called_with(mock_params, methods.internal.DIAGNOSTICS) + assert.stub(u.make_params).was_called_with(mock_params, methods.internal.DIAGNOSTICS_ON_OPEN) end) describe("handler", function()