diff options
author | kylo252 <[email protected]> | 2022-01-03 11:06:45 +0100 |
---|---|---|
committer | GitHub <[email protected]> | 2022-01-03 11:06:45 +0100 |
commit | 238e43e5b370ef17267c344954e28003cd26614a (patch) | |
tree | 748733422cdcee4adafecac6803358a88ccbda35 /lua/lvim/lsp | |
parent | b3cfd165fbca4c8b595ed577027a5171e33a00e9 (diff) |
refactor: more consistent autocmds (#2133)
Diffstat (limited to 'lua/lvim/lsp')
-rw-r--r-- | lua/lvim/lsp/init.lua | 38 | ||||
-rw-r--r-- | lua/lvim/lsp/manager.lua | 1 | ||||
-rw-r--r-- | lua/lvim/lsp/utils.lua | 10 |
3 files changed, 25 insertions, 24 deletions
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! * <buffer> - autocmd CursorHold <buffer> lua vim.lsp.buf.document_highlight() - autocmd CursorMoved <buffer> 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! * <buffer> - autocmd InsertLeave <buffer> lua vim.lsp.codelens.refresh() - autocmd InsertLeave <buffer> 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 |