diff options
author | James McCoy <jamessan@jamessan.com> | 2016-12-12 14:34:18 -0500 |
---|---|---|
committer | James McCoy <jamessan@jamessan.com> | 2016-12-12 14:35:09 -0500 |
commit | 7eb91c781b2a464c21c09c3919a74778936a33b3 (patch) | |
tree | 251cafc1cea0e50a8e20e643292305adea76c6de | |
parent | 988ab5804a16beafff26b487b0612cb7cf97ea09 (diff) | |
download | rneovim-7eb91c781b2a464c21c09c3919a74778936a33b3.tar.gz rneovim-7eb91c781b2a464c21c09c3919a74778936a33b3.tar.bz2 rneovim-7eb91c781b2a464c21c09c3919a74778936a33b3.zip |
shada: Respect the optional buffer count for shada-%
Closes #5759
-rw-r--r-- | src/nvim/shada.c | 6 | ||||
-rw-r--r-- | test/functional/shada/buffers_spec.lua | 12 |
2 files changed, 17 insertions, 1 deletions
diff --git a/src/nvim/shada.c b/src/nvim/shada.c index d902079739..34524580d7 100644 --- a/src/nvim/shada.c +++ b/src/nvim/shada.c @@ -2424,12 +2424,13 @@ static ShaDaWriteResult shada_write(ShaDaWriteDef *const sd_writer, // Write buffer list if (find_shada_parameter('%') != NULL) { + int max_bufs = get_shada_parameter('%'); size_t buf_count = 0; #define IGNORE_BUF(buf)\ (buf->b_ffname == NULL || !buf->b_p_bl || bt_quickfix(buf) \ || in_bufset(&removable_bufs, buf)) FOR_ALL_BUFFERS(buf) { - if (!IGNORE_BUF(buf)) { + if (!IGNORE_BUF(buf) && (max_bufs < 0 || buf_count < (size_t)max_bufs)) { buf_count++; } } @@ -2450,6 +2451,9 @@ static ShaDaWriteResult shada_write(ShaDaWriteDef *const sd_writer, if (IGNORE_BUF(buf)) { continue; } + if (i >= buf_count) { + break; + } buflist_entry.data.buffer_list.buffers[i] = (struct buffer_list_buffer) { .pos = buf->b_last_cursor.mark, .fname = (char *) buf->b_ffname, diff --git a/test/functional/shada/buffers_spec.lua b/test/functional/shada/buffers_spec.lua index 01952560d6..7e6338897a 100644 --- a/test/functional/shada/buffers_spec.lua +++ b/test/functional/shada/buffers_spec.lua @@ -89,4 +89,16 @@ describe('ShaDa support code', function() eq(1, funcs.bufnr('$')) eq('', funcs.bufname(1)) end) + + it('restores 1 buffer with %1 in &shada, #5759', function() + set_additional_cmd('set shada+=%1') + reset() + nvim_command('edit ' .. testfilename) + nvim_command('edit ' .. testfilename_2) + nvim_command('qall') + reset() + eq(2, funcs.bufnr('$')) + eq('', funcs.bufname(1)) + eq(testfilename, funcs.bufname(2)) + end) end) |