diff options
| author | lvimuser <[email protected]> | 2022-09-15 07:13:46 -0300 | 
|---|---|---|
| committer | GitHub <[email protected]> | 2022-09-15 12:13:46 +0200 | 
| commit | 564cfe8f3c6e4e28b124f92d08489bc81dcead44 (patch) | |
| tree | 9e1e19edab46a8a2d52f8d7653890b2943aaabea /lua/lvim/lsp | |
| parent | 7535f4eff9ca70dfe73db4a099d509590aa07ade (diff) | |
fix(lsp/utils): do not register duplicate autocommands (#3004)
Diffstat (limited to 'lua/lvim/lsp')
| -rw-r--r-- | lua/lvim/lsp/utils.lua | 40 | 
1 files changed, 27 insertions, 13 deletions
| diff --git a/lua/lvim/lsp/utils.lua b/lua/lvim/lsp/utils.lua index b92ef11c..3be7e52f 100644 --- a/lua/lvim/lsp/utils.lua +++ b/lua/lvim/lsp/utils.lua @@ -88,19 +88,27 @@ function M.setup_document_highlight(client, bufnr)    if not status_ok or not highlight_supported then      return    end -  local augroup_exist, _ = pcall(vim.api.nvim_get_autocmds, { -    group = "lsp_document_highlight", +  local group = "lsp_document_highlight" +  local hl_events = { "CursorHold", "CursorHoldI" } + +  local ok, hl_autocmds = pcall(vim.api.nvim_get_autocmds, { +    group = group, +    buffer = bufnr, +    event = hl_events,    }) -  if not augroup_exist then -    vim.api.nvim_create_augroup("lsp_document_highlight", {}) + +  if ok and #hl_autocmds > 0 then +    return    end -  vim.api.nvim_create_autocmd({ "CursorHold", "CursorHoldI" }, { -    group = "lsp_document_highlight", + +  vim.api.nvim_create_augroup(group, { clear = false }) +  vim.api.nvim_create_autocmd(hl_events, { +    group = group,      buffer = bufnr,      callback = vim.lsp.buf.document_highlight,    })    vim.api.nvim_create_autocmd("CursorMoved", { -    group = "lsp_document_highlight", +    group = group,      buffer = bufnr,      callback = vim.lsp.buf.clear_references,    }) @@ -113,14 +121,20 @@ function M.setup_codelens_refresh(client, bufnr)    if not status_ok or not codelens_supported then      return    end -  local augroup_exist, _ = pcall(vim.api.nvim_get_autocmds, { -    group = "lsp_code_lens_refresh", +  local group = "lsp_code_lens_refresh" +  local cl_events = { "BufEnter", "InsertLeave" } +  local ok, cl_autocmds = pcall(vim.api.nvim_get_autocmds, { +    group = group, +    buffer = bufnr, +    event = cl_events,    }) -  if not augroup_exist then -    vim.api.nvim_create_augroup("lsp_code_lens_refresh", {}) + +  if ok and #cl_autocmds > 0 then +    return    end -  vim.api.nvim_create_autocmd({ "BufEnter", "InsertLeave" }, { -    group = "lsp_code_lens_refresh", +  vim.api.nvim_create_augroup(group, { clear = false }) +  vim.api.nvim_create_autocmd(cl_events, { +    group = group,      buffer = bufnr,      callback = vim.lsp.codelens.refresh,    }) | 
