![[neovim-shopping.webp|cover-picture]]
[[Neovimプラグイン]]でバグなどを発見しIssueで報告するときに再現確認するための方法。[[👤Folke Lematire]]氏のIssue templateで採用されている方法を利用する。
## ディレクトリの作成
確認用のsandboxディレクトリを適当に作成する。
```console
mkdir nvim-sandbox
cd nvim-sandbox
```
## repro.luaの作成
`repro.lua`を作成する。
```lua
-- ./.repro の絶対パスをrootに代入
local root = vim.fn.fnamemodify("./.repro", ":p")
-- .configなどデフォルトで~/.configに向いているパス設定を./.repro配下にする
for _, name in ipairs({ "config", "data", "state", "cache" }) do
vim.env[("XDG_%s_HOME"):format(name:upper())] = root .. "/" .. name
end
-- lazy.nvimを .repro/plugins 配下にインストール
local lazypath = root .. "/plugins/lazy.nvim"
if not vim.loop.fs_stat(lazypath) then
vim.fn.system({ "git", "clone", "--filter=blob:none", "https://github.com/folke/lazy.nvim.git", lazypath })
end
vim.opt.runtimepath:prepend(lazypath)
-- lazy.nvimでプラグインをインストール
local plugins = {
-- Folke氏のプラグインに報告するときには必要だが、そうでなければ任意
"folke/tokyonight.nvim",
-- 再現報告したいプラグインの設定はこの下
}
require("lazy").setup(plugins, {
root = root .. "/plugins",
})
-- Folke氏のプラグインに報告するときには必要だが、そうでなければ任意
vim.cmd.colorscheme("tokyonight")
```
> [!info]
> XDGからはじまる環境変数定義は [[XDG Base Directory]] を参照。
## 起動
`-u`オプションで`repro.lua`を指定して起動する。
```console
nvim -u repro.lua
```
初回だけ[[lazy.nvim]]がインストールされ、依存する[[Neovimプラグイン]]もインストールされている。あとは再現確認をするだけ。