先日、Neovim のプラグインの設定をアップデートしている時にひとつ問題に出会しました。Lua 言語サーバー が出してくれる診断結果メッセージは、通常はうっかりミスを防ぐのに便利なのですが、なかには許容できる警告もあります。その一つが、「undefined global vim」という警告です。この警告を出ないようにする具体的な方法がなかなかネット検索では見つからず苦労しました。需要があるのかどうか知りませんが、忘れないうちにメモします。
対策
~/.config/nvim/luarc.json
をつくって、Lua 言語サーバーの挙動を微調整する。
{
"diagnostics": {
// 明示的に定義されていない vim モジュールをよしとする場合
"globals": ["vim"],
// 細かい助言がいらない場合
"hint.enable": false
}
}
Neovim の vim モジュール
Neovim ドキュメントによると Nvim Lua の「標準ライブラリ」(stdlib) は、vim
モジュールとして利用することができ、それは自動的に読み込まれるので require("vim")
の宣言は不要とのことです。
The Nvim Lua "standard library" (stdlib) is the vim module, which exposes various functions and sub-modules. It is always loaded, thus require("vim") is unnecessary.
ですので、Neovimの設定を書く際には、特に何もしなくても vim モジュールにアクセスできるようになっています。これ自体には特に何の問題もありません。
言語サーバープロトコル (LSP)
- プログラミング言語の機能を公開するために便利な共通の枠組みを提供
- プログラミング言語の機能を開発ツールに統合しやすくする
Lua 言語サーバー (Lua LS)
- Lua 言語の言語サーバーの実装
Lua 言語サーバーの診断機能
- Lua 言語のコードを診断
- 情報、警告、エラーなど、さまざまな重大度の情報を報告
Neovim ではうっかり文法を間違った場合は、このような診断報告がでます。
無効にしたい診断機能
ある時点から「undefined global vim」という警告がでるようになりました。なぜかはよくわかりません。
これは Neovim の仕様なので間違いではありません。この警告を無効にしたいです。
場合によっては重要度の低い情報は無効にした方がスッキリするかもしれません。世の中にあるいくつかのサンプルコードでは使わない引数を含む関数が登場します。例えば、それらを何らかの理由で残しておきたいときにはそれに対する助言は無駄になります。
.luarc.json
Lua言語サーバーの動作をカスタマイズする方法が複数あるそうです。その一つが .luarc.json
ファイルです。
Lua 言語サーバー自身にも .luarc.json
ファイルがありました。
.luarc.json
ファイルを Neovim の設定のあるディレクトリに作成することにより、Lua言語サーバーの動作を補正できるようです。詳しいメカニズムはしりません。
Elixir 言語でコードの静的解析をする方法については @koga1020 さんの記事が参考になります。
コミュニティ
闘魂コミュニティ
みんなでわいわい楽しく自由に闘魂プログラミングをしています。
ぜひお気軽にお立ち寄りください。
Nervesで組み込み開発するコミュニティ
「Elixir で IoT!?ナウでヤングで cool な Nerves フレームワーク」です。
Elixir 言語でワクワクするコミュニティ