Skip to content

quit as last buffer  #1368

Closed
Closed
@YanzhaoW

Description

@YanzhaoW

Description

Without any configuration, neovim simply doesn't quit as nvim-tree is the last buffer. Many people suggest, as is also mentioned in the README.md (#1115 ), that I should add following command:

vim.api.nvim_create_autocmd("BufEnter", {
  nested = true,
  callback = function()
    if #vim.api.nvim_list_wins() == 1 and vim.api.nvim_buf_get_name(0):match("NvimTree_") ~= nil then
      vim.cmd "quit"
    end
  end
})

This is very bad solution because it can cause neovim to crash if you accidentally quit without saving. Following errors will be repeated if you press any key in neovim:

Press ENTER or type command to continue
Error executing vim.schedule lua callback: ...e/pack/packer/start/nvim-tree.lua/lua/nvim-tree/view.lua:378: Vim(append):Error executing lua callback: /home/ywang/.config/nvim/lua/plugs/n
vimtree_config.lua:34: Vim(quit):E37: No write since last change
stack traceback:
        [C]: in function 'cmd'
        /home/ywang/.config/nvim/lua/plugs/nvimtree_config.lua:34: in function </home/ywang/.config/nvim/lua/plugs/nvimtree_config.lua:32>
        [C]: in function 'nvim_win_close'
        ...e/pack/packer/start/nvim-tree.lua/lua/nvim-tree/view.lua:378: in function <...e/pack/packer/start/nvim-tree.lua/lua/nvim-tree/view.lua:356>
stack traceback:
        [C]: in function 'nvim_win_close'
        ...e/pack/packer/start/nvim-tree.lua/lua/nvim-tree/view.lua:378: in function <...e/pack/packer/start/nvim-tree.lua/lua/nvim-tree/view.lua:356>
Press ENTER or type command to continue

I would suggest remove this tip in the README.md.

Is there any other doable solution to quit neovim when the nvim-tree is the last buffer?

Neovim version

NVIM v0.7.0
Build type: Release
LuaJIT 2.1.0-beta3

Minimal config

require'nvim-tree'.setup{
    view = {
        side = 'right'
    },
    update_focused_file = {
        enable = true,
        update_cwd = true,
        ignore_list = {}
    }
}
-- vim.cmd([[autocmd BufEnter * ++nested if winnr('$') == 1 && bufname() == 'NvimTree_' . tabpagenr() | quit | endif]])
vim.api.nvim_create_autocmd("BufEnter", {
  nested = true,
  callback = function()
    if #vim.api.nvim_list_wins() == 1 and vim.api.nvim_buf_get_name(0):match("NvimTree_") ~= nil then
      vim.cmd "quit"
    end
  end
})

Steps to reproduce

  1. open a file using nvim with nvim-tree
  2. edit a file
  3. quit without saving
  4. error occurs and is repeated when you press any key

Expected behavior

No response

Actual behavior

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    PR pleasenvim-tree team does not have the bandwidth to implement; a PR will be gratefully appreciateddocumentationImprovements or additions to documentation

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions