aboutsummaryrefslogtreecommitdiffstats
path: root/lsp/clangd.lua
diff options
context:
space:
mode:
authorDimitris Dimitropoulos <dimitris.dimitropoulos00@gmail.com>2025-08-11 21:27:29 +0300
committerDimitris Dimitropoulos <dimitris.dimitropoulos00@gmail.com>2025-08-11 21:45:11 +0300
commit1247cdfc98a3f43575ac16dbb103c84d8e7a9160 (patch)
tree05bb5ab387da68361a7b36b95d51ce8d3fa9b63e /lsp/clangd.lua
parentfix(zk): update config to 0.11+ (diff)
downloadnvim-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.lua33
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,
}