diff options
| author | someoneinjd <61791143+someoneinjd@users.noreply.github.com> | 2025-06-04 21:25:11 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-06-04 06:25:11 -0700 |
| commit | d6ef4920bfec05f1fa90a4fc6d8be089b644a724 (patch) | |
| tree | e8a59c66b194e4766ded0725ffffb292b2d37013 | |
| parent | feat(tailwind): add "postcss.config.js" root marker #3884 (diff) | |
| download | nvim-lspconfig-d6ef4920bfec05f1fa90a4fc6d8be089b644a724.tar nvim-lspconfig-d6ef4920bfec05f1fa90a4fc6d8be089b644a724.tar.gz nvim-lspconfig-d6ef4920bfec05f1fa90a4fc6d8be089b644a724.tar.bz2 nvim-lspconfig-d6ef4920bfec05f1fa90a4fc6d8be089b644a724.tar.lz nvim-lspconfig-d6ef4920bfec05f1fa90a4fc6d8be089b644a724.tar.xz nvim-lspconfig-d6ef4920bfec05f1fa90a4fc6d8be089b644a724.tar.zst nvim-lspconfig-d6ef4920bfec05f1fa90a4fc6d8be089b644a724.zip | |
fix(clangd): set offset_encoding correctly #3887
Problem:
Neovim's native Client:initialize implementation does not support
clangd's utf8 offsets extension, resulting in an inconsistency in
offsetEncoding between clangd and Neovim when using vim.lsp.config.
Solution:
Add a custom on_init to set the offset_encoding correctly.
| -rw-r--r-- | lsp/clangd.lua | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/lsp/clangd.lua b/lsp/clangd.lua index 062b4777..d0f01d3f 100644 --- a/lsp/clangd.lua +++ b/lsp/clangd.lua @@ -57,6 +57,9 @@ local function symbol_info() end, bufnr) end +---@class ClangdInitializeResult: lsp.InitializeResult +---@field offsetEncoding? string + return { cmd = { 'clangd' }, filetypes = { 'c', 'cpp', 'objc', 'objcpp', 'cuda', 'proto' }, @@ -77,6 +80,13 @@ return { }, offsetEncoding = { 'utf-8', 'utf-16' }, }, + ---@param client vim.lsp.Client + ---@param init_result ClangdInitializeResult + on_init = function(client, init_result) + if init_result.offsetEncoding then + client.offset_encoding = init_result.offsetEncoding + end + end, on_attach = function() vim.api.nvim_buf_create_user_command(0, 'LspClangdSwitchSourceHeader', function() switch_source_header(0) |
