## 事象
[[no-neck-pain.nvim]]で保存した[[セッション (Neovim)|セッション]]を読み込むと以下のエラーになることがある。
```error
Error executing vim.schedule lua callback: .../nvim/lazy/no-neck-pain.nvim/lua/no-neck-pain/colors.lua:138: Invalid window id: 1001
stack traceback:
[C]: in function 'nvim_win_get_buf'
.../nvim/lazy/no-neck-pain.nvim/lua/no-neck-pain/colors.lua:138: in function 'init'
...hare/nvim/lazy/no-neck-pain.nvim/lua/no-neck-pain/ui.lua:163: in function 'create_side_buffers'
...re/nvim/lazy/no-neck-pain.nvim/lua/no-neck-pain/main.lua:108: in function 'callback'
...vim/lazy/no-neck-pain.nvim/lua/no-neck-pain/util/api.lua:115: in function <...vim/lazy/no-neck-pain.nvim/lua/no-neck-pain/util/api.lua:113>
```
再現する条件は以下のとおり。
- 2つの[[ウィンドウ (Vim)|ウィンドウ]]にファイルを開いている
- [[no-neck-pain.nvim]]による[[スクラッチウィンドウ (Vim)|スクラッチウィンドウ]]が見た目上存在しない
### 再現手順
```bash
# Create a sandbox environment
mkdir -p ~/.config/no-neck-pain
cat > ~/.config/no-neck-pain/init.lua << 'EOF'
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
if not vim.uv.fs_stat(lazypath) then
local out = vim.fn.system({
"git",
"clone",
"--filter=blob:none",
"https://github.com/folke/lazy.nvim.git",
"--branch=stable",
lazypath,
})
end
vim.opt.rtp:prepend(lazypath)
require("lazy").setup({
{
"shortcuts/no-neck-pain.nvim",
lazy = false,
opts = {
width = 140,
autocmds = {
enableOnVimEnter = true,
enableOnTabEnter = true,
},
buffers = {
colors = { background = "tokyonight-moon" },
},
},
}
})
EOF
alias svim="NVIM_APPNAME=no-neck-pain nvim"
# Install lazy.nvim & no-neck-pain
svim
:q
# Create a sample file
echo "aaa" > aaa.txt
# Open files and make a session
svim
:e aaa.txt
:vnew aaa.txt
:mksession! mk.vim
:qa!
# Restore session
svim
:source mk.vim
```
## 原因
存在しない `win` が指定されていたから。(なぜそうなるかまでは調べていない)
```lua
local bufnr = vim.api.nvim_win_get_buf(win)
```
<div class="link-card">
<div class="link-card-header">
<img src="https://github.githubassets.com/favicons/favicon.svg" class="link-card-site-icon"/>
<span class="link-card-site-name">GitHub</span>
</div>
<div class="link-card-body">
<div class="link-card-content">
<p class="link-card-title">no-neck-pain.nvim/lua/no-neck-pain/colors.lua at 5d91f31a2d583a367df97a4654be028fbe13f2d2 · shortcuts/no-neck-pain.nvim</p>
<p class="link-card-description">☕ Dead sim ... </p>
</div>
<img src="https://opengraph.githubassets.com/e9a62412ef57edcf21e0a5181b66b7834310bd219f12587580dd14da932b34d9/shortcuts/no-neck-pain.nvim" class="link-card-image" />
</div>
<a href="https://github.com/shortcuts/no-neck-pain.nvim/blob/5d91f31a2d583a367df97a4654be028fbe13f2d2/lua/no-neck-pain/colors.lua?plain=1#L133"></a>
</div>
## 解決方法
`win` が存在するかを予めチェックして、存在しない場合は処理しないようにする。
```lua
if not vim.api.nvim_win_is_valid(win) then
return
end
local bufnr = vim.api.nvim_win_get_buf(win)
```
この解決策が妥当か分からないので別途Issueを作成する。