diff options
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,    }) | 
