NeovimでローカルのBiome使う設定
流行りのBiomeをグローバルではなくローカルにインストールしてNeovimで動かす設定を紹介します。
プラグインの用意
nvim-lspconfigを入れてLSPとして使います。
Neovimがv0.10未満の場合はnone-ls.nvimが必要です。
lspconfigの設定
Biomeをグローバルでインストールしている方は、server_configurations.mdのとおり、setup
を呼び出すだけで終わりです。
local lspconfig = require("lspconfig")lspconfig.biome.setup({})
Biomeをローカルにインストールしている仲間の皆さんは少々工夫が必要です。
インストールしているパッケージマネージャーに合わせてsetup
のcmd
を書き換えます。
lspconfig.biome.setup({ cmd = { "npx", "biome", "lsp-proxy" } -- cmd = { "pnpm", "biome", "lsp-proxy" }})
pnpm
を使ってたらpnpm
、そうじゃないならnpx
で指定する場合は次のように書きます。
local lspconfig = require("lspconfig")lspconfig.biome.setup({ on_attach = on_attach, -- 各自設定して~ cmd = { "biome", "lsp-proxy" }, on_new_config = function(new_config) local pnpm = lspconfig.util.root_pattern("pnpm-lock.yml", "pnpm-lock.yaml")(vim.api.nvim_buf_get_name(0)) local cmd = { "npx", "biome", "lsp-proxy" } if pnpm then cmd = { "pnpm", "biome", "lsp-proxy" } end new_config.cmd = cmd end,})
on_new_config
を使って動的に設定を書き換えできます。pnpmかどうかはロックファイルで判断します。
Formatterの設定
単純に:lua vim.lsp.buf.format()
で呼び出すだけであれば、以上で設定は終わりです。
ただし、「保存時にFormatterを実行する場合」は次の記事を参考に設定を見直してください。
LSPの動的な機能登録を使うには一部のAPIを書き換える必要があるためです。
none-ls(現在は不要)
none-ls.nvimでFormatterを使う例も残しておきます。こちらは単純でsources
にnull_ls.builtins.formatting.biome
を書くだけです。
local null_ls = require("null-ls")local sources = { -- ほかのFormatterなど null_ls.builtins.formatting.biome,}null_ls.setup({ sources = sources,})
気になって実装覗いてみたら、「ローカルを探してみて実行できないならグローバルとしてコマンドをたたく」という処理のようです。
以上、ローカルにインストールしたBiomeをNeovimで使う方法でした。
最初にlspconfigのドキュメントのとおりに書いたらNeovimが起動時にすぐ落ちました。あらためてドキュメントと実装を見たらグローバル前提っぽいな~と思ってこの記事を書いた次第です。