mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
parent
321db59ca1
commit
ec8e60a055
@ -5315,9 +5315,9 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
% When included, save and restore the buffer list. If Vim is
|
||||
started with a file name argument, the buffer list is not
|
||||
restored. If Vim is started without a file name argument, the
|
||||
buffer list is restored from the shada file. Buffers
|
||||
without a file name and buffers for help files are not written
|
||||
to the shada file.
|
||||
buffer list is restored from the shada file. Quickfix
|
||||
('buftype'), unlisted ('buflisted'), unnamed and buffers on
|
||||
removable media (|shada-r|) are not saved.
|
||||
When followed by a number, the number specifies the maximum
|
||||
number of buffers that are stored. Without a number all
|
||||
buffers are stored.
|
||||
|
@ -43,6 +43,7 @@
|
||||
#include "nvim/path.h"
|
||||
#include "nvim/fileio.h"
|
||||
#include "nvim/strings.h"
|
||||
#include "nvim/quickfix.h"
|
||||
#include "nvim/lib/khash.h"
|
||||
#include "nvim/lib/kvec.h"
|
||||
|
||||
@ -2478,8 +2479,11 @@ static ShaDaWriteResult shada_write(ShaDaWriteDef *const sd_writer,
|
||||
// Write buffer list
|
||||
if (find_shada_parameter('%') != NULL) {
|
||||
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 (buf->b_ffname != NULL && !in_bufset(&removable_bufs, buf)) {
|
||||
if (!IGNORE_BUF(buf)) {
|
||||
buf_count++;
|
||||
}
|
||||
}
|
||||
@ -2497,7 +2501,7 @@ static ShaDaWriteResult shada_write(ShaDaWriteDef *const sd_writer,
|
||||
};
|
||||
size_t i = 0;
|
||||
FOR_ALL_BUFFERS(buf) {
|
||||
if (buf->b_ffname == NULL || in_bufset(&removable_bufs, buf)) {
|
||||
if (IGNORE_BUF(buf)) {
|
||||
continue;
|
||||
}
|
||||
buflist_entry.data.buffer_list.buffers[i] = (struct buffer_list_buffer) {
|
||||
@ -2513,6 +2517,7 @@ static ShaDaWriteResult shada_write(ShaDaWriteDef *const sd_writer,
|
||||
goto shada_write_exit;
|
||||
}
|
||||
xfree(buflist_entry.data.buffer_list.buffers);
|
||||
#undef IGNORE_BUF
|
||||
}
|
||||
|
||||
// Write some of the variables
|
||||
|
@ -1,7 +1,7 @@
|
||||
-- ShaDa buffer list saving/reading support
|
||||
local helpers = require('test.functional.helpers')
|
||||
local nvim_command, funcs, eq =
|
||||
helpers.command, helpers.funcs, helpers.eq
|
||||
local nvim_command, funcs, eq, curbufmeths =
|
||||
helpers.command, helpers.funcs, helpers.eq, helpers.curbufmeths
|
||||
|
||||
local shada_helpers = require('test.functional.shada.helpers')
|
||||
local reset, set_additional_cmd, clear =
|
||||
@ -48,4 +48,43 @@ describe('ShaDa support code', function()
|
||||
eq(1, funcs.bufnr('$'))
|
||||
eq('', funcs.bufname(1))
|
||||
end)
|
||||
|
||||
it('does not dump unlisted buffer', function()
|
||||
set_additional_cmd('set shada+=%')
|
||||
reset()
|
||||
nvim_command('edit ' .. testfilename)
|
||||
nvim_command('edit ' .. testfilename_2)
|
||||
curbufmeths.set_option('buflisted', false)
|
||||
nvim_command('qall')
|
||||
reset()
|
||||
eq(2, funcs.bufnr('$'))
|
||||
eq('', funcs.bufname(1))
|
||||
eq(testfilename, funcs.bufname(2))
|
||||
end)
|
||||
|
||||
it('does not dump quickfix buffer', function()
|
||||
set_additional_cmd('set shada+=%')
|
||||
reset()
|
||||
nvim_command('edit ' .. testfilename)
|
||||
nvim_command('edit ' .. testfilename_2)
|
||||
curbufmeths.set_option('buftype', 'quickfix')
|
||||
nvim_command('qall')
|
||||
reset()
|
||||
eq(2, funcs.bufnr('$'))
|
||||
eq('', funcs.bufname(1))
|
||||
eq(testfilename, funcs.bufname(2))
|
||||
end)
|
||||
|
||||
it('does not dump unnamed buffers', function()
|
||||
set_additional_cmd('set shada+=% hidden')
|
||||
reset()
|
||||
curbufmeths.set_line(0, 'foo')
|
||||
nvim_command('enew')
|
||||
curbufmeths.set_line(0, 'bar')
|
||||
eq(2, funcs.bufnr('$'))
|
||||
nvim_command('qall!')
|
||||
reset()
|
||||
eq(1, funcs.bufnr('$'))
|
||||
eq('', funcs.bufname(1))
|
||||
end)
|
||||
end)
|
||||
|
Loading…
Reference in New Issue
Block a user