diff options
author | James McCoy <jamessan@jamessan.com> | 2016-12-13 22:35:25 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-12-13 22:35:25 -0500 |
commit | 8c9cccbcb6bb5ee803f308916d5de1b949e0b13c (patch) | |
tree | dcb2003af3f9b761f86e2c86a6bb8a69a3243d30 | |
parent | 5855f30cb1a1bd6b4eee7ea8e2e80eb7eec8f3ec (diff) | |
parent | 7eb91c781b2a464c21c09c3919a74778936a33b3 (diff) | |
download | rneovim-8c9cccbcb6bb5ee803f308916d5de1b949e0b13c.tar.gz rneovim-8c9cccbcb6bb5ee803f308916d5de1b949e0b13c.tar.bz2 rneovim-8c9cccbcb6bb5ee803f308916d5de1b949e0b13c.zip |
Merge pull request #5760 from jamessan/shada-percent-count
shada: Respect the optional buffer count for shada-%
-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) |