mirror of
https://github.com/SpaceVim/SpaceVim.git
synced 2025-01-24 06:30:03 +08:00
85 lines
2.4 KiB
Lua
85 lines
2.4 KiB
Lua
--=============================================================================
|
|
-- buffer.lua --- public buffer apis
|
|
-- Copyright (c) 2016-2023 Wang Shidong & Contributors
|
|
-- Author: Wang Shidong < wsdjeg@outlook.com >
|
|
-- URL: https://spacevim.org
|
|
-- License: GPLv3
|
|
--=============================================================================
|
|
|
|
local M = {}
|
|
|
|
function M.create_buf(listed, scratch)
|
|
return vim.api.nvim_create_buf(listed, scratch)
|
|
end
|
|
|
|
function M.set_lines(bufnr, startindex, endindex, replacement)
|
|
if startindex < 0 then
|
|
startindex = #vim.buffer(bufnr) + 1 + startindex
|
|
end
|
|
if endindex < 0 then
|
|
endindex = #vim.buffer(bufnr) + 1 + endindex
|
|
end
|
|
if #replacement == endindex - startindex then
|
|
for i = startindex, endindex - 1, 1 do
|
|
vim.buffer(bufnr)[i + 1] = replacement[i - startindex]
|
|
end
|
|
else
|
|
if endindex < #vim.buffer(bufnr) then
|
|
for i = endindex + 1, #vim.buffer(bufnr), 1 do
|
|
replacement:add(vim.buffer(bufnr)[i])
|
|
end
|
|
end
|
|
for i = startindex, #replacement + startindex - 1, 1 do
|
|
if i + 1 > #vim.buffer(bufnr) then
|
|
vim.buffer(bufnr):insert(replacement[i - startindex])
|
|
else
|
|
vim.buffer(bufnr)[i + 1] = replacement[i - startindex]
|
|
end
|
|
end
|
|
for i = #replacement + startindex + 1, #vim.buffer(bufnr), 1 do
|
|
vim.buffer(bufnr)[#replacement + startindex + 1] = nil
|
|
end
|
|
end
|
|
end
|
|
|
|
function M.listed_buffers() -- {{{
|
|
return vim.fn.filter(vim.fn.range(1, vim.fn.bufnr('$')), 'buflisted(v:val)')
|
|
end
|
|
-- }}}
|
|
|
|
function M.resize(size, ...)
|
|
local arg = { ... }
|
|
local cmd = arg[1] or 'vertical'
|
|
vim.cmd(cmd .. ' resize ' .. size)
|
|
end
|
|
|
|
function M.open_pos(cmd, filename, line, col)
|
|
vim.cmd('silent ' .. cmd .. ' ' .. filename)
|
|
vim.fn.cursor(line, col)
|
|
end
|
|
|
|
---@param bufnr number the buffer number
|
|
---@param opt string option name
|
|
---@param value any option value
|
|
function M.set_option(bufnr, opt, value)
|
|
if vim.api.nvim_set_option_value then
|
|
return vim.api.nvim_set_option_value(opt, value, {
|
|
buf = bufnr
|
|
})
|
|
end
|
|
if vim.api.nvim_buf_set_option then
|
|
return vim.api.nvim_buf_set_option(bufnr, opt, value)
|
|
end
|
|
end
|
|
|
|
function M.get_option(bufnr, name)
|
|
if vim.api.nvim_get_option_value then
|
|
return vim.api.nvim_get_option_value(name, { buf = bufnr })
|
|
end
|
|
if vim.api.nvim_buf_get_option then
|
|
return vim.api.nvim_buf_get_option(bufnr, name)
|
|
end
|
|
end
|
|
|
|
return M
|