mirror of
https://github.com/neovim/neovim.git
synced 2026-07-09 10:59:38 +00:00
fix(dir): reload listing on :edit #40496
This commit is contained in:
@@ -195,6 +195,16 @@ function first_open(buf, dir)
|
||||
return
|
||||
end
|
||||
vim.b[buf].nvim_dir = dir
|
||||
api.nvim_create_autocmd('BufReadCmd', {
|
||||
buffer = buf,
|
||||
nested = true,
|
||||
desc = 'Reload directory listing',
|
||||
callback = function()
|
||||
if vim.b[buf].nvim_dir ~= nil then
|
||||
reload(buf)
|
||||
end
|
||||
end,
|
||||
})
|
||||
set_maps(buf)
|
||||
if api.nvim_get_option_value('filetype', { buf = buf }) ~= 'directory' then
|
||||
api.nvim_set_option_value('filetype', 'directory', { buf = buf })
|
||||
|
||||
@@ -240,19 +240,31 @@ describe('nvim.dir', function()
|
||||
eq(false, api.nvim_buf_is_loaded(root_buf))
|
||||
end)
|
||||
|
||||
it("preserves custom 'bufhidden' when reloading", function()
|
||||
it('reloads directory buffers', function()
|
||||
make_fixture()
|
||||
n.clear({
|
||||
args_rm = { '-u' },
|
||||
args = { '--cmd', [[autocmd FileType directory ++once setlocal bufhidden=delete]] },
|
||||
args = { '--clean', '--cmd', [[autocmd FileType directory ++once setlocal bufhidden=delete]] },
|
||||
})
|
||||
|
||||
edit(root)
|
||||
assert_directory(root)
|
||||
eq('delete', bufopt('bufhidden'))
|
||||
local buf = api.nvim_get_current_buf()
|
||||
|
||||
t.write_file(root .. '/beta.txt', 'beta', true)
|
||||
feed('R')
|
||||
poke_eventloop()
|
||||
eq('delete', bufopt('bufhidden'))
|
||||
line_of('beta.txt')
|
||||
|
||||
t.write_file(root .. '/gamma.txt', 'gamma', true)
|
||||
command('edit')
|
||||
eq(buf, api.nvim_get_current_buf())
|
||||
assert_directory(root)
|
||||
line_of('subdir/')
|
||||
line_of('alpha.txt')
|
||||
line_of('gamma.txt')
|
||||
end)
|
||||
|
||||
it('reports an error and keeps the buffer when reloading a removed directory', function()
|
||||
|
||||
Reference in New Issue
Block a user