1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

NeoVim 設定ファイルの補完を安定して効かせたい

1
Posted at

Lua スクリプトで NeoVim の設定ファイルを記述する際、NeoVim やプラグインの API のドキュメントや型情報を見たり補完を受けることができると便利です。補完を効かせる方法はいくらか存在しますが、筆者の環境では (筆者の知識不足によるものですが) 設定の変更によって有効化されたりされなかったりとなかなかうまく行かないことが多くありました。そうこうしているうちに、ランタイムでの動作なく確実に補完を効かせる設定を見つけ出しました。

環境

NeoVim: v0.11.6
lua-language-server: 3.17.1
プラグイン: lazy.nvim, blink-cmp.nvim, nvim-lspconfig

既存の方法

LazyDev を使う方法

LazyDev を nvim-cmp, blink-cmp などのプロバイダに設定する方法です。Lazy.nvim を使用している場合は最も手軽な方法と思われます。筆者の環境では時折うまく動作しないことがありました。

lspconfig を使う方法

nvim-lspconfig の setup を呼び出してクライアントのワークスペースを設定する方法です。この方法は lua-language-server の設定をランタイムで書き換える方法です。NeoVim のネイティブ LSP が実装される以前の方法であるためそのまま使用できませんが、ある程度動作すると思われます。

lua-language-server の設定をする方法

lspconfig を使う方法に着想を得て、lua-language-server の設定ファイルを変更することで NeoVim とプラグインの情報を読み込ませることにしました。この方法では init.lua と同じディレクトリに設定ファイル .luarc.json を配置し、以下の内容を記述します。(おそらく筆者の環境で LazyDev が動かないのは .luarc.json が存在するためでしょう。)

{
  "$schema": "https://raw.githubusercontent.com/LuaLS/vscode-lua/master/setting/schema.json",
  "runtime": {
    "version": "LuaJIT"
  },
  "workspace.library": [
    "/usr/share/nvim/runtime/lua",
    "~/.local/share/nvim/lazy"
  ]
}

workspace.library には NeoVim ランタイムのパスと lazy.nvim のルートパスを記述します。この部分は環境により変化する可能性があります。(その点で動的な手法が優れているという考え方もできますが、筆者は一旦この方法に落ち着きました)

標準的な Lua LSP の設定がされていれば、これだけで workspace.library に記述したディレクトリがライブラリとして取り込まれます。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?