🔖
Neovim0.11でLua LSの「undefined global vim」警告を解消する
Lua Language Serverを入れてNeovim設定ファイルを編集すると undefined global vim
な警告が出るのでなんとかする。
前提とする環境
- Neovim v0.11.1
- Lazy.nvim
- nvim-lspconfig
設定はnvim-lspconfigのconfig関数に書く前提です。
{
"neovim/nvim-lspconfig",
config = function()
-- ここに書く
end
}
ただ消す
ただ警告を消すだけならダイレクトにvim
をグローバル変数として登録しておく。
vim.lsp.config("lua_ls", {
settings = {
Lua = {
diagnostics = {
globals = { "vim" }
}
}
}
})
Neovim設定ファイルの編集に特化したLS設定をする
nvim-lspconfigのlua_ls設定のコメントにいい感じの設定が載っているのでコピペして持ってくる。
以下ほぼコピペだが、'${3rd}/luv/library'
の読み込み部分だけ追加した。
(これを追加しないとvim.uv
以下にアクセスするコードで Undefined field fs_stat
とかの警告が出る)
-- Neovim編集に特化した設定
-- from https://github.com/neovim/nvim-lspconfig/blob/master/lsp/lua_ls.lua
vim.lsp.config('lua_ls', {
on_init = function(client)
-- ここでNeovim設定ファイルの編集かどうかを判定して
-- 違ったら特別な設定は行わない、という意図だと思われる
if client.workspace_folders then
local path = client.workspace_folders[1].name
if
path ~= vim.fn.stdpath('config')
and (vim.uv.fs_stat(path .. '/.luarc.json') or vim.uv.fs_stat(path .. '/.luarc.jsonc'))
then
return
end
end
-- ここからNeovim設定ファイル編集特化の設定を行う
client.config.settings.Lua = vim.tbl_deep_extend('force', client.config.settings.Lua, {
runtime = {
version = 'LuaJIT',
path = {
'lua/?.lua',
'lua/?/init.lua',
},
},
workspace = {
checkThirdParty = false,
library = {
vim.env.VIMRUNTIME,
-- vim.uv. 以下のAPIへのアクセスでwarningが出るのを防ぐため追加
'${3rd}/luv/library'
}
}
})
end,
settings = {
Lua = {}
}
})
いい感じにしてくれるプラグインを入れる
lazydev.nvimというプラグインを入れるとLua LSをNeovim編集特化に設定してくれるようだ。これを入れれば警告も消えるはず(試してないけど)。
私にとってはちょっとオーバースペックというか、あまりわかってないままプラグインを入れたくない気分なので一旦保留。もっと問題が出てきたら入れるかも。
Discussion