aboutsummaryrefslogtreecommitdiffstats
path: root/lsp
diff options
context:
space:
mode:
authorsomeoneinjd <61791143+someoneinjd@users.noreply.github.com>2025-06-04 21:25:11 +0800
committerGitHub <noreply@github.com>2025-06-04 06:25:11 -0700
commitd6ef4920bfec05f1fa90a4fc6d8be089b644a724 (patch)
treee8a59c66b194e4766ded0725ffffb292b2d37013 /lsp
parentfeat(tailwind): add "postcss.config.js" root marker #3884 (diff)
downloadnvim-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.
Diffstat (limited to 'lsp')
-rw-r--r--lsp/clangd.lua10
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)