解决Neovim打开自身配置文件时的报错问题
问题描述
今天使用 Neovim 打开它自己的配置文件时,出现报错信息
1 | LSP[lua_ls] Your workspace is set to `/home/foobar`. Lua language server refused to load this directory. Please check your configuration.[learn more here](https://luals.github.io/wiki/faq#why-is-the-server-scanning-the-wrong-folder) |
这个错误信息的意思是,Lua
语言服务器(lua_ls)被你的编辑器(如 VS Code
或 Neovim)告知,要将整个 /home/foobar
目录作为工作区进行扫描,而服务器由于性能或安全方面的考量,拒绝了这个指令。这通常是一个配置问题,可以通过正确设置工作区解决。
解决方案
在你的Neovim配置目录下创建.luarc.json文件,明确告诉lua_ls这就是项目根据目录。即
1 | { |
其中:runtime.version一行,指明了兼容Lua 5.1版本。同时使用workspace.ignoreDir来忽略无关目录,以提高性能,所以需要配置这个忽略列表。
为什么之前会报错?
默认情况下,
nvim-lspconfig的lua_ls如果没有找到项目根目录,会回退到使用当前工作目录(vim.loop.cwd())。如果你是在主目录下启动Neovim(例如直接运行nvim ~/.config/nvim/init.lua),那么当前工作目录就是/home/foobar,导致lua_ls被设置为扫描整个主目录,从而触发拒绝。创建
.luarc.json后,root_pattern会优先匹配,从而正确设置工作区。按上述步骤操作后,错误信息就会消失,
LSP功能也能正常使用。