rust-analyzer在含static/const的文件顶部添加'rewriting static'问题
这个问题大概率是你的OS项目中特殊的配置、自定义宏或者rust-analyzer的实验性设置导致的,以下是具体排查和解决步骤:
检查项目的rust-analyzer配置
查看项目根目录下是否存在.rust-analyzer文件夹或rust-project.json文件,里面可能包含了针对该项目的特殊LSP配置,比如启用了某个与static变量处理相关的实验性功能。如果有可疑配置,尝试注释掉或删除后重启LSP(:LspRestart)测试。排查自定义宏与构建脚本
《Writing an OS in Rust》教程中的项目通常会用到自定义proc macro或特殊的build.rs脚本,这类代码可能会在rust-analyzer分析代码时触发意外的文本注入。你可以临时注释掉项目中的自定义宏调用或停用build.rs,然后测试问题是否消失,逐步定位到具体的触发源。调整rust-analyzer的实验特性
在Neovim的kickstart配置中,找到rust-analyzer的LSP设置部分,添加或修改以下配置来禁用可能导致问题的实验功能:require('lspconfig').rust_analyzer.setup({ settings = { ['rust-analyzer'] = { experimental = { rewriteStatic = false, -- 禁用static相关的实验性重写功能 }, }, }, })保存配置后重启Neovim,测试是否还会出现自动添加内容的情况。
清理rust-analyzer缓存
缓存损坏也可能导致异常行为,执行以下操作清理缓存:- 停止LSP服务:
:LspStop - 删除项目的
target目录 - 删除rust-analyzer的全局缓存(通常位于
~/.cache/rust-analyzer) - 重启Neovim并重新启动LSP:
:LspStart
- 停止LSP服务:
检查Cargo.toml的特殊配置
查看项目Cargo.toml中的[profile]或[build]部分,是否有特殊的rustflags或其他编译配置,这些可能影响rust-analyzer的分析逻辑。尝试临时注释掉非必要的配置项,测试问题是否解决。
内容的提问来源于stack exchange,提问作者Havelex

