## 事象 以下の `Snacks.bufdelete()` みたいに `Snacks` キーワードを使うと ```lua return { "folke/snacks.nvim", lazy = false, keys = { { "<C-j>f", function() Snacks.picker.files() end, silent = true }, } } ``` 以下のような警告が表示される。 ```warning Undefined global `Snacks`. [undefined-global] ``` [[snacks.nvim]]は実行時にちゃんと動作するので問題ないはず。通常は `require` を使うが、[[snacks.nvim]]の設定例では `require` を使っていないので、この状態のまま解決してほしい。 [[lazydev.nvim]]の設定は以下。 ```lua return { { "folke/lazydev.nvim", ft = "lua", opts = { library = { { path = "luvit-meta/library", words = { "vim%.uv" } }, }, }, }, { "Bilal2453/luvit-meta", lazy = true }, } ``` ### 環境 | 対象 | バージョン | | ---------------- | ----------- | | [[Ubuntu]] | 24.04.1 LTS | | [[Neovim]] | 0.10.3 | | [[snacks.nvim]] | bc0630e | | [[lazydev.nvim]] | 2367a6c | ## 原因 先ほど記載したとおり `rquire` でモジュールが読み込まれていないため `Snacks` のキーワードが解決しないから。 ## 解決方法 [[lazydev.nvim]]で該当モジュールを読み込むように `snacks.nvim/lua/snacks` を追加する。グローバルなので `words` の指定は不要。 ```lua return { { "folke/lazydev.nvim", ft = "lua", opts = { library = { { path = "luvit-meta/library", words = { "vim%.uv" } }, -- [追加] { path = "snacks.nvim/lua/snacks" }, }, }, }, { "Bilal2453/luvit-meta", lazy = true }, } ``` `Snacks.picker.todo_comments` だけは定義が[[Todo Comments]]側にあるので、そこだけ[[Diagnostics (LuaLS)|Diagnostics]]を除外する。 ```lua --- @diagnostic disable-next-line: undefined-field todo_commentsはsnacks以外に定義があるため無視 { "<C-j>m", function() Snacks.picker.todo_comments() end, silent = true }, ```