mirror of
https://github.com/neovim/neovim.git
synced 2025-10-02 16:08:36 +00:00
@@ -2424,12 +2424,13 @@ static ShaDaWriteResult shada_write(ShaDaWriteDef *const sd_writer,
|
|||||||
|
|
||||||
// Write buffer list
|
// Write buffer list
|
||||||
if (find_shada_parameter('%') != NULL) {
|
if (find_shada_parameter('%') != NULL) {
|
||||||
|
int max_bufs = get_shada_parameter('%');
|
||||||
size_t buf_count = 0;
|
size_t buf_count = 0;
|
||||||
#define IGNORE_BUF(buf)\
|
#define IGNORE_BUF(buf)\
|
||||||
(buf->b_ffname == NULL || !buf->b_p_bl || bt_quickfix(buf) \
|
(buf->b_ffname == NULL || !buf->b_p_bl || bt_quickfix(buf) \
|
||||||
|| in_bufset(&removable_bufs, buf))
|
|| in_bufset(&removable_bufs, buf))
|
||||||
FOR_ALL_BUFFERS(buf) {
|
FOR_ALL_BUFFERS(buf) {
|
||||||
if (!IGNORE_BUF(buf)) {
|
if (!IGNORE_BUF(buf) && (max_bufs < 0 || buf_count < (size_t)max_bufs)) {
|
||||||
buf_count++;
|
buf_count++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2450,6 +2451,9 @@ static ShaDaWriteResult shada_write(ShaDaWriteDef *const sd_writer,
|
|||||||
if (IGNORE_BUF(buf)) {
|
if (IGNORE_BUF(buf)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
if (i >= buf_count) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
buflist_entry.data.buffer_list.buffers[i] = (struct buffer_list_buffer) {
|
buflist_entry.data.buffer_list.buffers[i] = (struct buffer_list_buffer) {
|
||||||
.pos = buf->b_last_cursor.mark,
|
.pos = buf->b_last_cursor.mark,
|
||||||
.fname = (char *) buf->b_ffname,
|
.fname = (char *) buf->b_ffname,
|
||||||
|
@@ -89,4 +89,16 @@ describe('ShaDa support code', function()
|
|||||||
eq(1, funcs.bufnr('$'))
|
eq(1, funcs.bufnr('$'))
|
||||||
eq('', funcs.bufname(1))
|
eq('', funcs.bufname(1))
|
||||||
end)
|
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)
|
end)
|
||||||
|
Reference in New Issue
Block a user