diff options
| author | Dimitris Dimitropoulos <dimitris.dimitropoulos00@gmail.com> | 2024-08-21 12:13:11 +0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-08-21 17:13:11 +0800 |
| commit | 63ee95e052e7e978994c614c62b1e3be6b366911 (patch) | |
| tree | a1e511f1323cd19b27efa6596c2e62fcff27b8de /lua | |
| parent | docs: update server_configurations.md (diff) | |
| download | nvim-lspconfig-63ee95e052e7e978994c614c62b1e3be6b366911.tar nvim-lspconfig-63ee95e052e7e978994c614c62b1e3be6b366911.tar.gz nvim-lspconfig-63ee95e052e7e978994c614c62b1e3be6b366911.tar.bz2 nvim-lspconfig-63ee95e052e7e978994c614c62b1e3be6b366911.tar.lz nvim-lspconfig-63ee95e052e7e978994c614c62b1e3be6b366911.tar.xz nvim-lspconfig-63ee95e052e7e978994c614c62b1e3be6b366911.tar.zst nvim-lspconfig-63ee95e052e7e978994c614c62b1e3be6b366911.zip | |
feat(clangd): add symbolInfo support (#3274)
* feat(clangd): add symbolInfo support
Signed-off-by: Dimitris Dimitropoulos <dimitris.dimitropoulos00@gmail.com>
* fix(clangd): use make_position_params util function
Signed-off-by: Dimitris Dimitropoulos <dimitris.dimitropoulos00@gmail.com>
* fix(clangd): no need to use a parameter
Signed-off-by: Dimitris Dimitropoulos <dimitris.dimitropoulos00@gmail.com>
* fix(clangd): remove parameter from command
Signed-off-by: Dimitris Dimitropoulos <dimitris.dimitropoulos00@gmail.com>
* fix(clangd): check if client supports method
Signed-off-by: Dimitris Dimitropoulos <dimitris.dimitropoulos00@gmail.com>
* fix(clangd): use client request instead of buf_request
Signed-off-by: Dimitris Dimitropoulos <dimitris.dimitropoulos00@gmail.com>
---------
Signed-off-by: Dimitris Dimitropoulos <dimitris.dimitropoulos00@gmail.com>
Diffstat (limited to 'lua')
| -rw-r--r-- | lua/lspconfig/server_configurations/clangd.lua | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/lua/lspconfig/server_configurations/clangd.lua b/lua/lspconfig/server_configurations/clangd.lua index 732f556c..d6cb0295 100644 --- a/lua/lspconfig/server_configurations/clangd.lua +++ b/lua/lspconfig/server_configurations/clangd.lua @@ -21,6 +21,31 @@ local function switch_source_header(bufnr) end end +local function symbol_info() + local bufnr = vim.api.nvim_get_current_buf() + local clangd_client = util.get_active_client_by_name(bufnr, 'clangd') + if not clangd_client or not clangd_client.supports_method 'textDocument/symbolInfo' then + return vim.notify('Clangd client not found', vim.log.levels.ERROR) + end + local params = vim.lsp.util.make_position_params() + clangd_client.request('textDocument/symbolInfo', params, function(err, res) + if err or #res == 0 then + -- Clangd always returns an error, there is not reason to parse it + return + end + local container = string.format('container: %s', res[1].containerName) ---@type string + local name = string.format('name: %s', res[1].name) ---@type string + vim.lsp.util.open_floating_preview({ name, container }, '', { + height = 2, + width = math.max(string.len(name), string.len(container)), + focusable = false, + focus = false, + border = require('lspconfig.ui.windows').default_options.border or 'single', + title = 'Symbol Info', + }) + end, bufnr) +end + local root_files = { '.clangd', '.clang-tidy', @@ -56,6 +81,12 @@ return { end, description = 'Switch between source/header', }, + ClangdShowSymbolInfo = { + function() + symbol_info() + end, + description = 'Show symbol info', + }, }, docs = { description = [[ |
