Skip to content

Incompatibility with fugitive and oil.nvim and other plugins #2695

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

Closed
pedro757 opened this issue Mar 5, 2024 · 5 comments · Fixed by #2696
Closed

Incompatibility with fugitive and oil.nvim and other plugins #2695

pedro757 opened this issue Mar 5, 2024 · 5 comments · Fixed by #2696
Labels
awaiting feedback bug Something isn't working

Comments

@pedro757
Copy link

pedro757 commented Mar 5, 2024

Description

Error detected while processing BufEnter Autocommands for "*":                                                                                                                                               
Error executing lua callback: ...share/nvim/lazy/nvim-tree.lua/lua/nvim-tree/git/init.lua:151: bad argument #1 to 'fs_stat' (string expected, got nil)                                                       
stack traceback:                                                                                                                                                                                             
        [C]: in function 'fs_stat'                                                                                                                                                                           
        ...share/nvim/lazy/nvim-tree.lua/lua/nvim-tree/git/init.lua:151: in function 'get_toplevel'                                                                                                          
        ...share/nvim/lazy/nvim-tree.lua/lua/nvim-tree/git/init.lua:222: in function 'load_project_status'                                                                                                   
        .../nvim/lazy/nvim-tree.lua/lua/nvim-tree/explorer/init.lua:38: in function '_load'                                                                                                                  
        .../nvim/lazy/nvim-tree.lua/lua/nvim-tree/explorer/init.lua:30: in function 'new'                                                                                                                    
        ...cal/share/nvim/lazy/nvim-tree.lua/lua/nvim-tree/core.lua:20: in function 'init'                                                                                                                   
        .../nvim-tree.lua/lua/nvim-tree/actions/root/change-dir.lua:88: in function 'f'                                                                                                                      
        .../nvim-tree.lua/lua/nvim-tree/actions/root/change-dir.lua:77: in function 'force_dirchange'                                                                                                        
        ...o/.local/share/nvim/lazy/nvim-tree.lua/lua/nvim-tree.lua:104: in function <...o/.local/share/nvim/lazy/nvim-tree.lua/lua/nvim-tree.lua:92>

Neovim version

NVIM v0.10.0-dev-2507+g3df1211eb
Build type: RelWithDebInfo
LuaJIT 2.1.1707061634
Run "nvim -V1 -v" for more info

Operating system and version

Linux 6.1.77-2

Windows variant

No response

nvim-tree version

efafd73

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",
      "tpope/vim-fugitive",
      "stevearc/oil.nvim",
      -- 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 {}
  require("oil").setup()
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. Run :G or :Oil

Expected behavior

Not to error

Actual behavior

Error detected while processing BufEnter Autocommands for "*":                                                                                                                                               
Error executing lua callback: ...share/nvim/lazy/nvim-tree.lua/lua/nvim-tree/git/init.lua:151: bad argument #1 to 'fs_stat' (string expected, got nil)                                                       
stack traceback:                                                                                                                                                                                             
        [C]: in function 'fs_stat'                                                                                                                                                                           
        ...share/nvim/lazy/nvim-tree.lua/lua/nvim-tree/git/init.lua:151: in function 'get_toplevel'                                                                                                          
        ...share/nvim/lazy/nvim-tree.lua/lua/nvim-tree/git/init.lua:222: in function 'load_project_status'                                                                                                   
        .../nvim/lazy/nvim-tree.lua/lua/nvim-tree/explorer/init.lua:38: in function '_load'                                                                                                                  
        .../nvim/lazy/nvim-tree.lua/lua/nvim-tree/explorer/init.lua:30: in function 'new'                                                                                                                    
        ...cal/share/nvim/lazy/nvim-tree.lua/lua/nvim-tree/core.lua:20: in function 'init'                                                                                                                   
        .../nvim-tree.lua/lua/nvim-tree/actions/root/change-dir.lua:88: in function 'f'                                                                                                                      
        .../nvim-tree.lua/lua/nvim-tree/actions/root/change-dir.lua:77: in function 'force_dirchange'                                                                                                        
        ...o/.local/share/nvim/lazy/nvim-tree.lua/lua/nvim-tree.lua:104: in function <...o/.local/share/nvim/lazy/nvim-tree.lua/lua/nvim-tree.lua:92>
@pedro757 pedro757 added the bug Something isn't working label Mar 5, 2024
@alex-courtis
Copy link
Member

Unfortunately I can't reproduce this one with the clean room above, with :Oil or :G

I'm a fugitive user however I haven't seen this one before.

I do note that the stack contains lazy - is that the lazy plugin manager? I'm not seeing that in the replication config...
Can you reproduce without lazy?

@pedro757
Copy link
Author

pedro757 commented Mar 6, 2024

I deleted oil:/ and fugitive:/ directories and now works fine, no idea why it works now, thank you

@pedro757
Copy link
Author

pedro757 commented Mar 6, 2024

Those directories apparently appear when saving a special buffer of fugitive or oil.nvim https://www.reddit.com/r/vim/comments/17vpwyw/where_do_the_fugitive_folders_come_from_and_how/

@alex-courtis
Copy link
Member

I wasn't able to reproduce however the issue is clear. A guard has been added for this case #2696

@pedro757 I'd be most grateful if you reproduced the issue then tested the fix:

cd /path/to/nvim-tree.lua
git pull
git checkout origin/2695-git-toplevel-guard-invalid-path

When you're finished testing:

git checkout master

@pedro757
Copy link
Author

pedro757 commented Mar 11, 2024

Sorry it was my fault, I had this autocommand, that created those directories (oil: and fugitive:) on save.

 vim.api.nvim_create_autocmd("BufWritePre", {
   callback = function()
+    if vim.o.filetype == "oil" or vim.o.filetype == "fugitive" then
+      return
+    end
     local dir = vim.fn.expand "<afile>:p:h"
     if vim.fn.isdirectory(dir) == 0 then
       vim.fn.mkdir(dir, "p")
     end
   end,
 })

Just added those lines to prevent that, thank you

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
awaiting feedback bug Something isn't working
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants