## 事象
```console
vim README.md
```
のようにしてファイルを指定して開くと、以下のようなエラーになる。
```error
Error executing luv callback:
...e/pack/packer/start/gitsigns.nvim/lua/gitsigns/async.lua:105: The coroutine failed with this message: ...cal/nvim-data/lazy/gitsigns.nvim/lua/gitsigns/attach.lua:307: attempt to call field 'scheduler_if_buf_valid' (a nil value)
stack traceback:
...cal/nvim-data/lazy/gitsigns.nvim/lua/gitsigns/attach.lua: in function 'fn'
...l/nvim-data/lazy/gitsigns.nvim/lua/gitsigns/debounce.lua:68: in function 'attach_throttled'
...cal/nvim-data/lazy/gitsigns.nvim/lua/gitsigns/attach.lua:439: in function 'attach'
...ta/site/pack/packer/start/gitsigns.nvim/lua/gitsigns.lua:132: in function 'setup_attach'
...ta/site/pack/packer/start/gitsigns.nvim/lua/gitsigns.lua:191: in function <...ta/site/pack/packer/start/gitsigns.nvim/lua/gitsigns.lua:167>
stack traceback:
```
[[init.lua]]の設定は以下の通り。
```lua
{
'lewis6991/gitsigns.nvim',
event = {'BufNewFile', 'BufRead'},
keys = {
{ '<Space>d', ':Gitsigns preview_hunk<CR>' },
{ '<C-j>D', ':Gitsigns diffthis<CR>' },
{ '<C-j>u', ':Gitsigns reset_hunk<CR>' },
{ '<Space>s', ':Gitsigns stage_hunk<CR>' },
{ '<Space>j', ':Gitsigns next_hunk<CR>' },
{ '<Space>k', ':Gitsigns prev_hunk<CR>' },
},
config = function()
require('gitsigns').setup()
end
},
```
### 備考
- [[Windows 11]]で発生
- [[Ubuntu]]では発生しない
- 100%発生するわけではない
- 大きなリポジトリの方が発生確率が高い
## 原因
[[lazy.nvim]]の`BufNewFile`、`BufRead`イベント時に初期化するとタイミングの問題で失敗するため。詳細は不明だが、[[Windows]]でのみ発生するのは[[Git]]コマンドに対するレスポンスの問題な気がしている。リポジトリサイズで再現確率が変わるのも同様。
## 解決方法
setupの操作を遅延実行する。200(ミリ秒)は自分のマシンの感覚なので適宜調整すること。
```lua
-- Gitの行表示
{
'lewis6991/gitsigns.nvim',
event = {'BufNewFile', 'BufRead'},
config = function()
vim.defer_fn(function()
require('gitsigns').setup {
}
end, 200)
end
},
```
これで安定して起動するようになった。
### ❌ダメだった方法
#### eventを削除する
問題は解消するが、[[gitsigns.nvim]]のコマンドを実行するまで表示されないため快適とは言えない。
#### eventを[[VeryLazy]]にする
遅延ロードしないようにeventに[[VeryLazy]]を設定する方法もやってみたが、[[Windows]]だとむしろエラーが増えた。
```lua
event = 'VeryLazy',
```