diff options
author | Rob Pilling <robpilling@gmail.com> | 2020-04-19 19:24:41 +0100 |
---|---|---|
committer | Rob Pilling <robpilling@gmail.com> | 2020-04-19 20:18:41 +0100 |
commit | ec2d45a8515399e3f23e0a552bcb222ae4836f7a (patch) | |
tree | d1f584fa4df4357d248402a66d8211858feb02b8 | |
parent | ca02db1f9fac9fd91164af2c9e42e57913f08f9a (diff) | |
download | rneovim-ec2d45a8515399e3f23e0a552bcb222ae4836f7a.tar.gz rneovim-ec2d45a8515399e3f23e0a552bcb222ae4836f7a.tar.bz2 rneovim-ec2d45a8515399e3f23e0a552bcb222ae4836f7a.zip |
vim-patch:7.4.1988
Problem: When updating viminfo with file marks there is no time order.
Solution: Remember the time when a buffer was last used, store marks for
the most recently used buffers.
https://github.com/vim/vim/commit/ab9c89b68dcbdb3fbda8c5a50dd90caca64f1bfd
As this is a viminfo fix, most of this is irrelevant - the patch has
just been brought across for the creation and updating of buffer's
`b_last_used` properties.
-rw-r--r-- | src/nvim/buffer.c | 1 | ||||
-rw-r--r-- | src/nvim/buffer_defs.h | 2 | ||||
-rw-r--r-- | src/nvim/ex_cmds.c | 2 | ||||
-rw-r--r-- | src/nvim/normal.c | 2 |
4 files changed, 7 insertions, 0 deletions
diff --git a/src/nvim/buffer.c b/src/nvim/buffer.c index 24ba43676a..ec86663f00 100644 --- a/src/nvim/buffer.c +++ b/src/nvim/buffer.c @@ -1618,6 +1618,7 @@ void enter_buffer(buf_T *buf) if (!curbuf->b_help && curwin->w_p_spell && *curwin->w_s->b_p_spl != NUL) { (void)did_set_spelllang(curwin); } + curbuf->b_last_used = time(NULL); redraw_later(NOT_VALID); } diff --git a/src/nvim/buffer_defs.h b/src/nvim/buffer_defs.h index 2460159fc0..3dbd3ea121 100644 --- a/src/nvim/buffer_defs.h +++ b/src/nvim/buffer_defs.h @@ -543,6 +543,8 @@ struct file_buffer { long b_mtime_read; // last change time when reading uint64_t b_orig_size; // size of original file in bytes int b_orig_mode; // mode of original file + time_t b_last_used; // time when the buffer was last used; used + // for viminfo fmark_T b_namedm[NMARKS]; // current named marks (mark.c) diff --git a/src/nvim/ex_cmds.c b/src/nvim/ex_cmds.c index 1cd95f2ed9..f18395e6cc 100644 --- a/src/nvim/ex_cmds.c +++ b/src/nvim/ex_cmds.c @@ -2670,6 +2670,8 @@ int do_ecmd( msg_scrolled_ign = FALSE; } + curbuf->b_last_used = time(NULL); + if (command != NULL) do_cmdline(command, NULL, NULL, DOCMD_VERBOSE); diff --git a/src/nvim/normal.c b/src/nvim/normal.c index 58993426dd..76de60cf4f 100644 --- a/src/nvim/normal.c +++ b/src/nvim/normal.c @@ -1260,6 +1260,8 @@ static void normal_redraw(NormalState *s) maketitle(); } + curbuf->b_last_used = time(NULL); + // Display message after redraw. If an external message is still visible, // it contains the kept message already. if (keep_msg != NULL && !msg_ext_is_visible()) { |