## 事象 [[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を作成する。