shada: Run set_last_cursor before writing shada file

This commit is contained in:
ZyX 2015-10-23 13:58:02 +03:00
parent ea2fe52552
commit 7a1090eef5
3 changed files with 13 additions and 1 deletions

View File

@ -877,7 +877,8 @@ was made yet in the current file.
for each opened file.
Only one position is remembered per buffer, not one
for each window. As long as the buffer is visible in
a window the position won't be changed.
a window the position won't be changed. Mark is also
reset when |:wshada| is run.
*'^* *`^*
'^ `^ To the position where the cursor was the last time

View File

@ -1169,6 +1169,8 @@ running) you have additional options:
cannot write ShaDa file!" check that no old temp files
were left behind (e.g. ~/.nvim/shada/main.shada.tmp*).
Note: Executing :wshada will reset all |'quote| marks.
*:wv* *:wviminfo*
:wv[iminfo][!] [file] Deprecated alias to |:wshada| command.

View File

@ -2433,6 +2433,15 @@ static ShaDaWriteResult shada_write(ShaDaWriteDef *const sd_writer,
msgpack_packer *const packer = msgpack_packer_new(sd_writer,
&msgpack_sd_writer_write);
// Set b_last_cursor for all the buffers that have a window.
//
// It is needed to correctly save '"' mark on exit. Has a side effect of
// setting '"' mark in all windows on :wshada to the current cursor
// position (basically what :wviminfo used to do).
FOR_ALL_TAB_WINDOWS(tp, wp) {
set_last_cursor(wp);
}
FOR_ALL_BUFFERS(buf) {
if (buf->b_ffname != NULL && shada_removable((char *) buf->b_ffname)) {
int kh_ret;