diff options
| author | Dimitris Dimitropoulos <dimitris.dimitropoulos00@gmail.com> | 2025-08-11 21:27:29 +0300 |
|---|---|---|
| committer | Dimitris Dimitropoulos <dimitris.dimitropoulos00@gmail.com> | 2025-08-11 21:45:11 +0300 |
| commit | 1247cdfc98a3f43575ac16dbb103c84d8e7a9160 (patch) | |
| tree | 05bb5ab387da68361a7b36b95d51ce8d3fa9b63e /lsp/clangd.lua | |
| parent | fix(zk): update config to 0.11+ (diff) | |
| download | nvim-lspconfig-1247cdfc98a3f43575ac16dbb103c84d8e7a9160.tar nvim-lspconfig-1247cdfc98a3f43575ac16dbb103c84d8e7a9160.tar.gz nvim-lspconfig-1247cdfc98a3f43575ac16dbb103c84d8e7a9160.tar.bz2 nvim-lspconfig-1247cdfc98a3f43575ac16dbb103c84d8e7a9160.tar.lz nvim-lspconfig-1247cdfc98a3f43575ac16dbb103c84d8e7a9160.tar.xz nvim-lspconfig-1247cdfc98a3f43575ac16dbb103c84d8e7a9160.tar.zst nvim-lspconfig-1247cdfc98a3f43575ac16dbb103c84d8e7a9160.zip | |
fix(clangd): update config to 0.11+
- Use client and bufnr as arguments of on_attach
- Silence wrong diagnostics about unknown method
- Call request as method
- Align the style of the two functions
- Drop border setup in favor of winborder option
Diffstat (limited to 'lsp/clangd.lua')
| -rw-r--r-- | lsp/clangd.lua | 33 |
1 files changed, 18 insertions, 15 deletions
diff --git a/lsp/clangd.lua b/lsp/clangd.lua index a4443779..c3f5d522 100644 --- a/lsp/clangd.lua +++ b/lsp/clangd.lua @@ -12,14 +12,15 @@ --- specified as compile_commands.json, see https://clangd.llvm.org/installation#compile_commandsjson -- https://clangd.llvm.org/extensions.html#switch-between-sourceheader -local function switch_source_header(bufnr) +local function switch_source_header(bufnr, client) local method_name = 'textDocument/switchSourceHeader' - local client = vim.lsp.get_clients({ bufnr = bufnr, name = 'clangd' })[1] - if not client then + ---@diagnostic disable-next-line:param-type-mismatch + if not client or not client:supports_method(method_name) then return vim.notify(('method %s is not supported by any servers active on the current buffer'):format(method_name)) end local params = vim.lsp.util.make_text_document_params(bufnr) - client.request(method_name, params, function(err, result) + ---@diagnostic disable-next-line:param-type-mismatch + client:request(method_name, params, function(err, result) if err then error(tostring(err)) end @@ -31,17 +32,18 @@ local function switch_source_header(bufnr) end, bufnr) end -local function symbol_info() - local bufnr = vim.api.nvim_get_current_buf() - local clangd_client = vim.lsp.get_clients({ bufnr = bufnr, name = 'clangd' })[1] - if not clangd_client or not clangd_client.supports_method 'textDocument/symbolInfo' then +local function symbol_info(bufnr, client) + local method_name = 'textDocument/symbolInfo' + ---@diagnostic disable-next-line:param-type-mismatch + if not client or not client:supports_method(method_name) then return vim.notify('Clangd client not found', vim.log.levels.ERROR) end local win = vim.api.nvim_get_current_win() - local params = vim.lsp.util.make_position_params(win, clangd_client.offset_encoding) - clangd_client.request('textDocument/symbolInfo', params, function(err, res) + local params = vim.lsp.util.make_position_params(win, client.offset_encoding) + ---@diagnostic disable-next-line:param-type-mismatch + client:request(method_name, params, function(err, res) if err or #res == 0 then - -- Clangd always returns an error, there is not reason to parse it + -- Clangd always returns an error, there is no reason to parse it return end local container = string.format('container: %s', res[1].containerName) ---@type string @@ -51,7 +53,6 @@ local function symbol_info() width = math.max(string.len(name), string.len(container)), focusable = false, focus = false, - border = 'single', title = 'Symbol Info', }) end, bufnr) @@ -87,13 +88,15 @@ return { client.offset_encoding = init_result.offsetEncoding end end, - on_attach = function(_, bufnr) + ---@param client vim.lsp.Client + ---@param bufnr integer + on_attach = function(client, bufnr) vim.api.nvim_buf_create_user_command(bufnr, 'LspClangdSwitchSourceHeader', function() - switch_source_header(bufnr) + switch_source_header(bufnr, client) end, { desc = 'Switch between source/header' }) vim.api.nvim_buf_create_user_command(bufnr, 'LspClangdShowSymbolInfo', function() - symbol_info() + symbol_info(bufnr, client) end, { desc = 'Show symbol info' }) end, } |
