Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Passing nil as window handle in view.get_winnr #2632

Closed
sharkov63 opened this issue Jan 19, 2024 · 0 comments · Fixed by #2633
Closed

Passing nil as window handle in view.get_winnr #2632

sharkov63 opened this issue Jan 19, 2024 · 0 comments · Fixed by #2633
Labels
bug Something isn't working

Comments

@sharkov63
Copy link
Contributor

Description

After #2627, in some cases function view.get_winnr can pass nil to nvim_win_is_valid as a window handle, which causes an error.

I figured out the fix and will provide PR very soon. The issue is to put a clean room example in history.

Neovim version

NVIM v0.10.0-dev
Build type: RelWithDebInfo
LuaJIT 2.1.0-beta3
Run "nvim -V1 -v" for more info

Operating system and version

Linux 5.16.15-051615-generic

Windows variant

No response

nvim-tree version

master

Clean room replication

vim.g.loaded_netrw = 1
vim.g.loaded_netrwPlugin = 1

vim.cmd [[set runtimepath=$VIMRUNTIME]]
vim.cmd [[set packpath=/tmp/nvt-min/site]]
local package_root = "/tmp/nvt-min/site/pack"
local install_path = package_root .. "/packer/start/packer.nvim"
local function load_plugins()
  require("packer").startup {
    {
      "wbthomason/packer.nvim",
      "nvim-tree/nvim-tree.lua",
      "nvim-tree/nvim-web-devicons",
      -- ADD PLUGINS THAT ARE _NECESSARY_ FOR REPRODUCING THE ISSUE
    },
    config = {
      package_root = package_root,
      compile_path = install_path .. "/plugin/packer_compiled.lua",
      display = { non_interactive = true },
    },
  }
end
if vim.fn.isdirectory(install_path) == 0 then
  print "Installing nvim-tree and dependencies."
  vim.fn.system { "git", "clone", "--depth=1", "https://github.com/wbthomason/packer.nvim", install_path }
end
load_plugins()
require("packer").sync()
vim.cmd [[autocmd User PackerComplete ++once echo "Ready!" | lua setup()]]
vim.opt.termguicolors = true
vim.opt.cursorline = true

-- MODIFY NVIM-TREE SETTINGS THAT ARE _NECESSARY_ FOR REPRODUCING THE ISSUE
_G.setup = function()
  require("nvim-tree").setup {
    actions = {
      open_file = {
        eject = false,
      },
    },
  }
end

-- UNCOMMENT this block for diagnostics issues, substituting pattern and cmd as appropriate.
-- Requires diagnostics.enable = true in setup.
--[[
vim.api.nvim_create_autocmd("FileType", {
  pattern = "lua",
  callback = function()
    vim.lsp.start { cmd = { "lua-language-server" } }
  end,
})
]]

Steps to reproduce

  1. nvim -nu /tmp/nvt-min.lua
  2. :NvimTreeOpen
  3. :q
  4. :NvimTreeOpen

Expected behavior

Tree opens up second time

Actual behavior

Error executing Lua callback: ...e/pack/packer/start/nvim-tree.lua/lua/nvim-tree/view.lua:476: Invalid 'window': Expect
ed Lua number                                                                                                          
stack traceback:                                                                                                       
        [C]: in function 'nvim_win_is_valid'                                                                           
        ...e/pack/packer/start/nvim-tree.lua/lua/nvim-tree/view.lua:476: in function 'get_winnr'                       
        ...e/pack/packer/start/nvim-tree.lua/lua/nvim-tree/view.lua:423: in function 'is_visible'                      
        .../start/nvim-tree.lua/lua/nvim-tree/actions/tree/open.lua:26: in function 'open'                             
        ...ck/packer/start/nvim-tree.lua/lua/nvim-tree/commands.lua:15: in function <...ck/packer/start/nvim-tree.lua/l
ua/nvim-tree/commands.lua:14>                                                                                          
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant