如何禁用clangd对Neovim中宏间代码段的置灰效果?
解决clangd把未识别宏包裹代码置灰的问题
方案1:给clangd加参数,直接关闭相关诊断
打开NChad的lsp配置文件(一般在~/.config/nvim/lua/plugins/lspconfig.lua这类路径),找到clangd的配置块,修改为如下内容:
require("lspconfig").clangd.setup({ cmd = { "clangd", "--fallback-style=Google", "-Wno-unused", "-Wno-unused-variable", "-Wno-unused-function", "--header-insertion=never", }, })
-Wno-开头的参数是告诉clangd不要触发这类“未使用”相关的警告,自然也就不会对代码进行置灰处理。
方案2:手动给clangd补充宏定义
如果不想全盘关闭诊断,可以直接把专有宏定义传给clangd:
在clangd的cmd参数里添加-D宏名=1,比如你的专有宏是MY_CUSTOM_MACRO,配置如下:
cmd = { "clangd", "-DMY_CUSTOM_MACRO=1", "--fallback-style=Google", "--header-insertion=never", },
要是宏数量较多,也可以用compile_commands.json来传递配置——用bear工具配合你的专有构建命令生成,比如执行bear -- 你的构建命令,生成的文件会被clangd自动读取,宏和编译选项都能被识别。
方案3:直接修改Neovim的高亮规则
如果只是不想看到置灰效果,不在意诊断本身,可以直接清空对应的高亮组:
在你的Neovim配置中添加这段代码:
vim.api.nvim_create_autocmd("ColorScheme", { callback = function() -- 先执行`:hi`命令查看当前置灰对应的高亮组名称,可能是LspDiagnosticsUnused、DiagnosticUnused或ClangdUnused vim.api.nvim_set_hl(0, "LspDiagnosticsUnused", { fg = "NONE", bg = "NONE" }) end, })
把高亮组的前景、背景色都设为NONE,就看不到置灰效果了。
内容的提问来源于stack exchange,提问作者Václav Hrbek
相关产品推荐
相关产品推荐

