From 89dd02c9270537de1187967f1cea14030d0bd7ad Mon Sep 17 00:00:00 2001 From: ray-x Date: Wed, 27 Jul 2022 14:36:29 +1000 Subject: [PATCH] using neovim 0.7.0 api for autocmd --- lua/navigator/dochighlight.lua | 31 +++++++++++++++++---------- lua/navigator/lspclient/attach.lua | 2 +- lua/navigator/lspclient/highlight.lua | 24 +++++++++++++++------ 3 files changed, 39 insertions(+), 18 deletions(-) diff --git a/lua/navigator/dochighlight.lua b/lua/navigator/dochighlight.lua index f2025e8..dd5f542 100644 --- a/lua/navigator/dochighlight.lua +++ b/lua/navigator/dochighlight.lua @@ -215,17 +215,26 @@ local nav_doc_hl = function() end) end -local function documentHighlight() - api.nvim_exec( - [[ - augroup lsp_document_highlight - autocmd! * - autocmd CursorHold,CursorHoldI lua require('navigator.dochighlight').nav_doc_hl() - autocmd CursorMoved lua vim.lsp.buf.clear_references() - augroup END - ]], - false - ) +local function documentHighlight(bufnr) + bufnr = bufnr or api.nvim_get_current_buf() + + local cmd_group = api.nvim_create_augroup('NGHiGroup', {}) + + api.nvim_create_autocmd({ 'CursorHold', 'CursorHoldI' }, { + group = cmd_group, + buffer = bufnr, + callback = function() + require('navigator.dochighlight').nav_doc_hl() + end, + }) + + api.nvim_create_autocmd({ 'CursorMoved' }, { + group = cmd_group, + buffer = bufnr, + callback = function() + vim.lsp.buf.clear_references() + end, + }) vim.lsp.handlers['textDocument/documentHighlight'] = function(err, result, ctx) local bufnr = ctx.bufnr or api.nvim_get_current_buf() if err then diff --git a/lua/navigator/lspclient/attach.lua b/lua/navigator/lspclient/attach.lua index 52f5507..75f3449 100644 --- a/lua/navigator/lspclient/attach.lua +++ b/lua/navigator/lspclient/attach.lua @@ -36,7 +36,7 @@ M.on_attach = function(client, bufnr) }) if client.server_capabilities.documentHighlightProvider == true then - require('navigator.dochighlight').documentHighlight() + require('navigator.dochighlight').documentHighlight(bufnr) end require('navigator.lspclient.lspkind').init() diff --git a/lua/navigator/lspclient/highlight.lua b/lua/navigator/lspclient/highlight.lua index 87c93c4..9ed8a33 100644 --- a/lua/navigator/lspclient/highlight.lua +++ b/lua/navigator/lspclient/highlight.lua @@ -3,6 +3,7 @@ local M = {} -- local log = require('navigator.util').log local api = vim.api +local cmd_group = api.nvim_create_augroup('NGHiGroup', {}) -- lsp sign          ﮻         ﯭ        ﳀ   function M.diagnositc_config_sign() if M.configed then @@ -48,17 +49,28 @@ function M.add_highlight() api.nvim_set_hl(0, 'DiagnosticUnderlineInformation', { link = 'SpellRare', default = true }) api.nvim_set_hl(0, 'DiagnosticUnderlineHint', { link = 'SpellRare', default = true }) api.nvim_set_hl(0, 'NGPreviewTitle', { link = 'Title', default = true }) - api.nvim_set_hl(0, 'LspReferenceRead', {default = true, bold = true, fg = 'yellow', bg = 'purple4'}) - api.nvim_set_hl(0, 'LspReferenceText', {default = true, bold = true, fg = 'blue', bg = 'MidnightBlue'}) - api.nvim_set_hl(0, 'LspReferenceWrite', {default = true, bold = true, italic = true, fg = 'red', bg = 'DarkSlateBlue'}) - + api.nvim_set_hl(0, 'LspReferenceRead', { default = true, bold = true, ctermfg = 'Yellow', underline = true }) + api.nvim_set_hl(0, 'LspReferenceText', { default = true, bold = true, ctermfg = 'White', underline = true }) + api.nvim_set_hl( + 0, + 'LspReferenceWrite', + { default = true, bold = true, italic = true, ctermfg = 'Magenta', underdouble = true } + ) for i = 1, #colors do for j = 1, 3 do - local hlg = string.format('NGHiReference_%i_%i', i, j) -- , colors[i][j], colors[i][4] - api.nvim_set_hl(0, hlg, {fg = colors[i][j], bg = colors[i][4], default = true}) + local hlg = string.format('NGHiReference_%i_%i', i, j) -- , colors[i][j], colors[i][4] + api.nvim_set_hl(0, hlg, { fg = colors[i][j], bg = colors[i][4], default = true }) end end end +api.nvim_create_autocmd('ColorScheme', { + group = cmd_group, + pattern = '*', + callback = function() + M.add_highlight() + end, +}) + return M