Skip to content

Don't Close Window On fs.remove() When Last Buffer In Window #2861

@siduck

Description

@siduck
Contributor

Problem
When there's just 1 window opened along with nvimtree, then deleting its file from tree, would make nvimtree become fullscreen

Desired behavior
Nvimtree should open unamed buf ( enew ) and then delete, this will maintain the win layout!

 actions = {
    remove_file = {
      open_unamed_buf = true,
    },
  },

Possible solutions with edgecases

The code must be run only when the user presses "y"

Case 1

If there's just 1 listed buffer and its the active window

  • Add empty buffer i.e enew
  • delete

Activity

alex-courtis

alex-courtis commented on Aug 3, 2024

@alex-courtis
Member

Discussions: NvChad/NvChad#2950

TL;DR: this is possible but will be tricky from a functional and technical perspective.

changed the title [-]Prevent Nvim-tree window from becoming full-screen on deleting active buffer file[/-] [+]Don't Close Window On fs.remove() When Last Buffer In Window[/+] on Aug 3, 2024
siduck

siduck commented on Aug 3, 2024

@siduck
ContributorAuthor

image

cant we create an unnamed buf and place it in the window of the buffer which is getting deleted 🤔

alex-courtis

alex-courtis commented on Aug 3, 2024

@alex-courtis
Member

cant we create an unnamed buf and place it in the window of the buffer which is getting deleted 🤔

That sounds sensible.

siduck

siduck commented on Aug 3, 2024

@siduck
ContributorAuthor

so would this be added to nvimtree or the user has to add in his config? I tried with an autocmd

vim.api.nvim_create_autocmd("BufDelete", {
  callback = function()
    local cur_buf = vim.api.nvim_get_current_buf()
    local cur_ft = vim.bo[cur_buf].ft

    if cur_ft == "NvimTree" and #vim.fn.getbufinfo { buflisted = 1 } == 1 then
      vim.cmd "bn"
      vim.cmd "enew"
    end
  end,
})

but this closes nvimtree window too, no idea why

alex-courtis

alex-courtis commented on Aug 3, 2024

@alex-courtis
Member

This is something that should go into nvim-tree itself. It needs the internals of remove-file.lua

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

      Development

      No branches or pull requests

        Participants

        @alex-courtis@siduck

        Issue actions

          Don't Close Window On fs.remove() When Last Buffer In Window · Issue #2861 · nvim-tree/nvim-tree.lua