## 事象 ```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', ```