From 95b7ee5bc89171f4c72dd11a9f43965a84afa791 Mon Sep 17 00:00:00 2001 From: jdhao Date: Wed, 18 May 2022 13:32:35 +0800 Subject: [PATCH] lsp: only show diagnostic once for each line if cursor is not moved This will help use to check signature help without it being overwritten by diagnostic popups. --- lua/config/lsp.lua | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/lua/config/lsp.lua b/lua/config/lsp.lua index b5fab6a..6273231 100644 --- a/lua/config/lsp.lua +++ b/lua/config/lsp.lua @@ -31,7 +31,19 @@ local custom_attach = function(client, bufnr) source = 'always', -- show source in diagnostic popup window prefix = ' ' } - vim.diagnostic.open_float(nil, opts) + + if not vim.b.diagnostics_pos then + vim.b.diagnostics_pos = { nil, nil } + end + + local cursor_pos = vim.api.nvim_win_get_cursor(0) + if (cursor_pos[1] ~= vim.b.diagnostics_pos[1] or cursor_pos[2] ~= vim.b.diagnostics_pos[2]) and + #vim.diagnostic.get() > 0 + then + vim.diagnostic.open_float(nil, opts) + end + + vim.b.diagnostics_pos = cursor_pos end })