diff --git a/lua/plugins/lspconfig.lua b/lua/plugins/lspconfig.lua index fb3e828..a786ab5 100644 --- a/lua/plugins/lspconfig.lua +++ b/lua/plugins/lspconfig.lua @@ -1,4 +1,4 @@ -local lspKeys = function(bufnr) +local lspKeys = function(client, bufnr) local tele_builtins = require('telescope.builtin') local options = { noremap = true, silent = false, buffer = bufnr } vim.keymap.set('n', ',', vim.diagnostic.goto_prev, @@ -35,19 +35,6 @@ local lspKeys = function(bufnr) vim.tbl_extend('error', options, { desc = 'Diagnostics' })) vim.keymap.set('n', '', 'ClangdSwitchSourceHeader', vim.tbl_extend('error', options, { desc = 'Switch Source/Header' })) -end - -local on_attach = function(client, bufnr) - local function buf_set_option(...) - vim.api.nvim_buf_set_option(bufnr, ...) - end - - buf_set_option('omnifunc', 'v:lua.vim.lsp.omnifunc') - vim.api.nvim_buf_set_option(0, 'formatexpr', 'v:lua.vim.lsp.formatexpr()') - - lspKeys(bufnr) - - -- vim.cmd([[autocmd CursorHold lua OpenDiagFloat()]]) -- Set some keybinds conditional on server capabilities if client.server_capabilities.documentFormattingProvider then @@ -62,37 +49,52 @@ local on_attach = function(client, bufnr) end, { noremap = true, silent = false, desc = 'Format visual', buffer = bufnr }) end +end +local document_highlight = function(bufnr) -- Set autocommands conditional on server_capabilities + local group = vim.api.nvim_create_augroup('lsp_document_highlight', { clear = false }) + vim.api.nvim_create_autocmd({ 'CursorHold', 'CursorHoldI' }, { + callback = function() + vim.lsp.buf.document_highlight() + end, + buffer = bufnr, + group = group, + desc = 'Document Highlight', + }) + vim.api.nvim_create_autocmd('CursorMoved', { + callback = function() + vim.lsp.buf.clear_references() + end, + buffer = bufnr, + group = group, + desc = 'Clear All the References', + }) + vim.api.nvim_create_autocmd({ 'LspDetach' }, { + group = group, + buffer = bufnr, + callback = function() + vim.lsp.buf.clear_references() + vim.api.nvim_clear_autocmds { + group = group, + buffer = bufnr + } + end, + }) +end + +local on_attach = function(client, bufnr) + local function buf_set_option(...) + vim.api.nvim_buf_set_option(bufnr, ...) + end + + buf_set_option('omnifunc', 'v:lua.vim.lsp.omnifunc') + vim.api.nvim_buf_set_option(0, 'formatexpr', 'v:lua.vim.lsp.formatexpr()') + + lspKeys(client, bufnr) + if client.server_capabilities.documentHighlightProvider then - local group = vim.api.nvim_create_augroup('lsp_document_highlight', { clear = false }) - vim.api.nvim_create_autocmd({ 'CursorHold', 'CursorHoldI' }, { - callback = function() - vim.lsp.buf.document_highlight() - end, - buffer = bufnr, - group = group, - desc = 'Document Highlight', - }) - vim.api.nvim_create_autocmd('CursorMoved', { - callback = function() - vim.lsp.buf.clear_references() - end, - buffer = bufnr, - group = group, - desc = 'Clear All the References', - }) - vim.api.nvim_create_autocmd({ 'LspDetach' }, { - group = group, - buffer = bufnr, - callback = function() - vim.lsp.buf.clear_references() - vim.api.nvim_clear_autocmds { - group = group, - buffer = bufnr - } - end, - }) + document_highlight(bufnr) end end