aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/nvim/shada.c6
1 files changed, 5 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,