ghillb / cybu.nvim

Neovim plugin that offers context when cycling buffers in the form of a customizable notification window.
MIT License
305 stars 5 forks source link

The buffer becomes invalid when switching session #20

Closed ziboh closed 1 year ago

ziboh commented 1 year ago

In my setup, I use neovim-session-manager to manage my session,When switching sessions, the buffer of buye becomes invalid. The specific errors are shown below:

E5108: Error executing lua: vim/_editor.lua:0: nvim_exec2(): Vim:Error executing Lua callback: .../.local/share/AstroNvim/lazy/cybu.nvim/lua/cybu/init.lua:228: Invalid buffer id: 15
stack traceback:
    [C]: in function 'nvim_buf_set_lines'
    .../.local/share/AstroNvim/lazy/cybu.nvim/lua/cybu/init.lua:228: in function 'get_cybu_buf'
    .../.local/share/AstroNvim/lazy/cybu.nvim/lua/cybu/init.lua:376: in function 'populate_state'
    .../.local/share/AstroNvim/lazy/cybu.nvim/lua/cybu/init.lua:394: in function 'cycle'
    ...bo/.local/share/AstroNvim/lazy/cybu.nvim/plugin/cybu.lua:13: in function <...bo/.local/share/AstroNvim/lazy/cybu.nvim/plugin/cybu.lua:12>
    [C]: in function 'nvim_exec2'
    vim/_editor.lua: in function 'cmd'
    /home/zibo/.config/astronvim/lua/user/lsp/mappings.lua:25: in function </home/zibo/.config/astronvim/lua/user/lsp/mappings.lua:23>
stack traceback:
    [C]: in function 'nvim_exec2'
    vim/_editor.lua: in function 'cmd'
    /home/zibo/.config/astronvim/lua/user/lsp/mappings.lua:25: in function </home/zibo/.config/astronvim/lua/user/lsp/mappings.lua:23>

I found that these changes fixed the issue for me:

diff --git a/lua/cybu/init.lua b/lua/cybu/init.lua
index 79a25c2..7af13a3 100644
--- a/lua/cybu/init.lua
+++ b/lua/cybu/init.lua
@@ -208,7 +208,7 @@ end

 cybu.get_cybu_buf = function()
   local cybu_buf
-  if not _state.cybu_buf then
+  if not _state.cybu_buf or not vim.api.nvim_buf_is_valid(_state.cybu_buf) then
     cybu_buf = vim.api.nvim_create_buf(false, true)
     vim.api.nvim_buf_set_option(cybu_buf, "filetype", "cybu")
     vim.api.nvim_buf_set_option(cybu_buf, "buftype", "nofile")
ghillb commented 1 year ago

Thank you for reporting and the PR!