diff --git a/runtime/plugin/dir.lua b/runtime/plugin/dir.lua index 85f3b9e6a1..cf01290c31 100644 --- a/runtime/plugin/dir.lua +++ b/runtime/plugin/dir.lua @@ -11,7 +11,10 @@ vim.keymap.set('n', '(nvim-dir-open)', function() end, { silent = true, desc = 'Open directory entry' }) vim.keymap.set('n', '(nvim-dir-up)', function() - require('nvim.dir')._open_parent() + local dir = require('nvim.dir') + for _ = 1, vim.v.count1 do + dir._open_parent() + end end, { silent = true, desc = 'Open parent directory' }) vim.keymap.set('n', '(nvim-dir-reload)', function() diff --git a/test/functional/plugin/dir_spec.lua b/test/functional/plugin/dir_spec.lua index 0a598e4204..33212a49d8 100644 --- a/test/functional/plugin/dir_spec.lua +++ b/test/functional/plugin/dir_spec.lua @@ -348,7 +348,7 @@ describe('nvim.dir', function() eq('new:2', exec_lua('return vim.g.nvim_dir_provider_list')) end) - it('maps - to open parent directories', function() + it('maps [count]- to open parent directories', function() make_fixture() n.clear({ args_rm = { '-u', '--cmd' } }) @@ -361,6 +361,20 @@ describe('nvim.dir', function() -- Ensure the cursor stays on the entry we navigated up from. eq('alpha.txt', api.nvim_get_current_line()) + + edit(file) + feed('1-') + poke_eventloop() + + assert_directory(root) + eq('alpha.txt', api.nvim_get_current_line()) + + edit(file) + feed('2-') + poke_eventloop() + + assert_directory(vim.fs.dirname(root)) + eq(vim.fs.basename(root) .. '/', api.nvim_get_current_line()) end) it('maps - to open the current directory from an unnamed buffer', function()