aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZyX <kp-pav@yandex.ru>2016-07-17 15:28:14 +0300
committerZyX <kp-pav@yandex.ru>2017-01-04 16:34:06 +0300
commit81ef9f55aebb9572adac14779369b37a4569a59c (patch)
tree91ef373dd1d6f17ad56094c69d549ede80890e44
parentd8a97d7b7912ae981c3b904ccbd014b2f2da1832 (diff)
downloadrneovim-81ef9f55aebb9572adac14779369b37a4569a59c.tar.gz
rneovim-81ef9f55aebb9572adac14779369b37a4569a59c.tar.bz2
rneovim-81ef9f55aebb9572adac14779369b37a4569a59c.zip
shada: Save current cursor position before saving jumps
-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)