30 lines
1.1 KiB
Lua
30 lines
1.1 KiB
Lua
-- Функция для правильного и более удобного (функционального) закрытия буфера
|
|
_G.close_and_go_right = function()
|
|
local current_buf = vim.api.nvim_get_current_buf()
|
|
local buf_list = vim.fn.getbufinfo({ buflisted = 1 })
|
|
|
|
-- Если только один буфер, ничего не делаем
|
|
if #buf_list == 1 then
|
|
return
|
|
end
|
|
|
|
-- Находим следующий или предыдущий буфер
|
|
local next_bufnr
|
|
for i, buf in ipairs(buf_list) do
|
|
if buf.bufnr == current_buf then
|
|
if i == #buf_list then
|
|
-- Если текущий буфер последний, идем к предыдущему
|
|
next_bufnr = buf_list[i - 1].bufnr
|
|
else
|
|
-- Иначе идем к следующему
|
|
next_bufnr = buf_list[i % #buf_list + 1].bufnr
|
|
end
|
|
break
|
|
end
|
|
end
|
|
|
|
-- Переходим к выбранному буферу и закрываем текущий
|
|
vim.cmd("buffer " .. next_bufnr)
|
|
vim.cmd("bdelete! " .. current_buf)
|
|
end
|