diff options
| author | Barrett Ruth <62671086+barrettruth@users.noreply.github.com> | 2026-06-27 13:08:28 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-06-27 14:08:28 -0400 |
| commit | 9202e2c80cea8da009b9c31cf9e0aa204e06397d (patch) | |
| tree | c5b5a4b7297d63e4c1ab7578475cbd96a7388ca5 /test/functional/plugin/dir_spec.lua | |
| parent | b138e7a251cb88324cd161788141d0113134d0c6 (diff) | |
| download | rneovim-9202e2c80cea8da009b9c31cf9e0aa204e06397d.tar.gz rneovim-9202e2c80cea8da009b9c31cf9e0aa204e06397d.tar.bz2 rneovim-9202e2c80cea8da009b9c31cf9e0aa204e06397d.zip | |
fix(dir): respect directory buffer lifetime #40453
Problem:
dir.lua leaves previously-navigated directory buffers around.
This is fine by default, but users need a simple way to opt out.
Solution:
1. Respect `set hidden` (via `'bufhidden'`) as one way to make
previously-navigated dir buffers from showing up.
2. Document a one-liner to hide these buffers
Diffstat (limited to 'test/functional/plugin/dir_spec.lua')
| -rw-r--r-- | test/functional/plugin/dir_spec.lua | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/test/functional/plugin/dir_spec.lua b/test/functional/plugin/dir_spec.lua index 5f15d7d692..40b5855c6d 100644 --- a/test/functional/plugin/dir_spec.lua +++ b/test/functional/plugin/dir_spec.lua @@ -215,6 +215,46 @@ describe('nvim.dir', function() line_of('beta.txt') end) + it("follows global 'hidden' when abandoned", function() + make_fixture() + n.clear({ args_rm = { '-u' } }) + + command('set hidden') + + edit(root) + local root_buf = api.nvim_get_current_buf() + eq('', bufopt('bufhidden')) + + edit(subdir) + eq(true, api.nvim_buf_is_loaded(root_buf)) + eq(1, fn.getbufinfo(root_buf)[1].hidden) + + n.clear({ args_rm = { '-u' } }) + command('set nohidden') + + edit(root) + root_buf = api.nvim_get_current_buf() + eq('', bufopt('bufhidden')) + + edit(subdir) + eq(false, api.nvim_buf_is_loaded(root_buf)) + end) + + it("preserves custom 'bufhidden' when reloading", function() + make_fixture() + n.clear({ + args_rm = { '-u' }, + args = { '--cmd', [[autocmd FileType directory ++once setlocal bufhidden=delete]] }, + }) + + edit(root) + eq('delete', bufopt('bufhidden')) + + feed('R') + poke_eventloop() + eq('delete', bufopt('bufhidden')) + end) + it('reports an error and keeps the buffer when reloading a removed directory', function() make_fixture() n.clear({ args_rm = { '-u' } }) |