aboutsummaryrefslogtreecommitdiff
path: root/test/functional/plugin/dir_spec.lua
diff options
context:
space:
mode:
authorBarrett Ruth <62671086+barrettruth@users.noreply.github.com>2026-06-27 13:08:28 -0500
committerGitHub <noreply@github.com>2026-06-27 14:08:28 -0400
commit9202e2c80cea8da009b9c31cf9e0aa204e06397d (patch)
treec5b5a4b7297d63e4c1ab7578475cbd96a7388ca5 /test/functional/plugin/dir_spec.lua
parentb138e7a251cb88324cd161788141d0113134d0c6 (diff)
downloadrneovim-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.lua40
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' } })