From 238e43e5b370ef17267c344954e28003cd26614a Mon Sep 17 00:00:00 2001 From: kylo252 <59826753+kylo252@users.noreply.github.com> Date: Mon, 3 Jan 2022 11:06:45 +0100 Subject: refactor: more consistent autocmds (#2133) --- lua/lvim/lsp/init.lua | 38 ++++++++++++++------------------------ lua/lvim/lsp/manager.lua | 1 + lua/lvim/lsp/utils.lua | 10 ++++++++++ 3 files changed, 25 insertions(+), 24 deletions(-) (limited to 'lua/lvim/lsp') diff --git a/lua/lvim/lsp/init.lua b/lua/lvim/lsp/init.lua index 68a64d6c..377c4010 100644 --- a/lua/lvim/lsp/init.lua +++ b/lua/lvim/lsp/init.lua @@ -1,24 +1,13 @@ local M = {} local Log = require "lvim.core.log" local utils = require "lvim.utils" +local autocmds = require "lvim.core.autocmds" local function lsp_highlight_document(client) if lvim.lsp.document_highlight == false then return -- we don't need further end - -- Set autocommands conditional on server_capabilities - if client.resolved_capabilities.document_highlight then - vim.api.nvim_exec( - [[ - augroup lsp_document_highlight - autocmd! * - autocmd CursorHold lua vim.lsp.buf.document_highlight() - autocmd CursorMoved lua vim.lsp.buf.clear_references() - augroup END - ]], - false - ) - end + autocmds.enable_lsp_document_highlight(client.id) end local function lsp_code_lens_refresh(client) @@ -27,16 +16,7 @@ local function lsp_code_lens_refresh(client) end if client.resolved_capabilities.code_lens then - vim.api.nvim_exec( - [[ - augroup lsp_code_lens_refresh - autocmd! * - autocmd InsertLeave lua vim.lsp.codelens.refresh() - autocmd InsertLeave lua vim.lsp.codelens.display() - augroup END - ]], - false - ) + autocmds.enable_code_lens_refresh() end end @@ -101,6 +81,15 @@ local function select_default_formater(client) end end +function M.common_on_exit(_, _) + if lvim.lsp.document_highlight then + autocmds.disable_lsp_document_highlight() + end + if lvim.lsp.code_lens_refresh then + autocmds.disable_code_lens_refresh() + end +end + function M.common_on_init(client, bufnr) if lvim.lsp.on_init_callback then lvim.lsp.on_init_callback(client, bufnr) @@ -132,6 +121,7 @@ function M.get_common_opts() return { on_attach = M.common_on_attach, on_init = M.common_on_init, + on_exit = M.common_on_exit, capabilities = M.common_capabilities(), } end @@ -171,7 +161,7 @@ function M.setup() require("lvim.lsp.null-ls").setup() - require("lvim.core.autocmds").configure_format_on_save() + autocmds.configure_format_on_save() end return M diff --git a/lua/lvim/lsp/manager.lua b/lua/lvim/lsp/manager.lua index c95b9f69..6c748020 100644 --- a/lua/lvim/lsp/manager.lua +++ b/lua/lvim/lsp/manager.lua @@ -24,6 +24,7 @@ local function resolve_config(name, user_config) local config = { on_attach = require("lvim.lsp").common_on_attach, on_init = require("lvim.lsp").common_on_init, + on_exit = require("lvim.lsp").common_on_exit, capabilities = require("lvim.lsp").common_capabilities(), } diff --git a/lua/lvim/lsp/utils.lua b/lua/lvim/lsp/utils.lua index 6d1ed09c..47b1c8ba 100644 --- a/lua/lvim/lsp/utils.lua +++ b/lua/lvim/lsp/utils.lua @@ -76,4 +76,14 @@ function M.get_all_supported_filetypes() return vim.tbl_keys(lsp_installer_filetypes or {}) end +function M.conditional_document_highlight(id) + local client_ok, method_supported = pcall(function() + return vim.lsp.get_client_by_id(id).resolved_capabilities.document_highlight + end) + if not client_ok or not method_supported then + return + end + vim.lsp.buf.document_highlight() +end + return M -- cgit v1.2.3