aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/nvim/shada.c5
-rw-r--r--test/functional/shada/marks_spec.lua13
2 files changed, 17 insertions, 1 deletions
diff --git a/src/nvim/shada.c b/src/nvim/shada.c
index 867c697a9a..0c710b3903 100644
--- a/src/nvim/shada.c
+++ b/src/nvim/shada.c
@@ -2591,9 +2591,12 @@ static ShaDaWriteResult shada_write(ShaDaWriteDef *const sd_writer,
// Initialize jump list
const void *jump_iter = NULL;
do {
- xfmark_T fm;
+ setpcmark();
cleanup_jumplist();
+
+ xfmark_T fm;
jump_iter = mark_jumplist_iter(jump_iter, curwin, &fm);
+
const buf_T *const buf = (fm.fmark.fnum == 0
? NULL
: buflist_findnr(fm.fmark.fnum));
diff --git a/test/functional/shada/marks_spec.lua b/test/functional/shada/marks_spec.lua
index b7c0f61f57..36d2c665d7 100644
--- a/test/functional/shada/marks_spec.lua
+++ b/test/functional/shada/marks_spec.lua
@@ -153,6 +153,19 @@ describe('ShaDa support code', function()
eq(saved, redir_exec('jumps'))
end)
+ it('when dumping jump list also dumps current position', function()
+ nvim_command('edit ' .. testfilename)
+ nvim_command('normal! G')
+ nvim_command('split ' .. testfilename_2)
+ nvim_command('normal! G')
+ nvim_command('wshada')
+ nvim_command('quit')
+ nvim_command('rshada')
+ nvim_command('normal! \15') -- <C-o>
+ eq(testfilename_2, funcs.bufname('%'))
+ eq({2, 0}, curwinmeths.get_cursor())
+ end)
+
it('is able to dump and restore jump list with different times (slow!)',
function()
nvim_command('edit ' .. testfilename_2)