Some checks failed
Detach Plugins / check (FlyGrep.vim) (push) Has been cancelled
Detach Plugins / check (GitHub.vim) (push) Has been cancelled
Detach Plugins / check (JavaUnit.vim) (push) Has been cancelled
Detach Plugins / check (SourceCounter.vim) (push) Has been cancelled
Detach Plugins / check (cpicker.nvim) (push) Has been cancelled
Detach Plugins / check (dein-ui.vim) (push) Has been cancelled
Detach Plugins / check (git.vim) (push) Has been cancelled
Detach Plugins / check (iedit.vim) (push) Has been cancelled
Detach Plugins / check (scrollbar.vim) (push) Has been cancelled
Detach Plugins / check (vim-chat) (push) Has been cancelled
Detach Plugins / check (vim-cheat) (push) Has been cancelled
Detach Plugins / check (vim-todo) (push) Has been cancelled
Detach Plugins / check (xmake.vim) (push) Has been cancelled
test / Linux (nvim, nightly) (push) Has been cancelled
test / Linux (nvim, v0.3.8) (push) Has been cancelled
test / Linux (nvim, v0.4.0) (push) Has been cancelled
test / Linux (nvim, v0.4.2) (push) Has been cancelled
test / Linux (nvim, v0.4.3) (push) Has been cancelled
test / Linux (nvim, v0.4.4) (push) Has been cancelled
test / Linux (nvim, v0.5.0) (push) Has been cancelled
test / Linux (nvim, v0.5.1) (push) Has been cancelled
test / Linux (nvim, v0.6.0) (push) Has been cancelled
test / Linux (nvim, v0.6.1) (push) Has been cancelled
test / Linux (nvim, v0.7.0) (push) Has been cancelled
test / Linux (nvim, v0.7.2) (push) Has been cancelled
test / Linux (nvim, v0.8.0) (push) Has been cancelled
test / Linux (nvim, v0.8.1) (push) Has been cancelled
test / Linux (nvim, v0.8.2) (push) Has been cancelled
test / Linux (nvim, v0.8.3) (push) Has been cancelled
test / Linux (nvim, v0.9.0) (push) Has been cancelled
test / Linux (nvim, v0.9.1) (push) Has been cancelled
test / Linux (true, vim, v7.4.052) (push) Has been cancelled
test / Linux (true, vim, v7.4.1689) (push) Has been cancelled
test / Linux (true, vim, v7.4.629) (push) Has been cancelled
test / Linux (true, vim, v8.0.0027) (push) Has been cancelled
test / Linux (true, vim, v8.0.0183) (push) Has been cancelled
test / Linux (vim, nightly) (push) Has been cancelled
test / Linux (vim, v8.0.0184) (push) Has been cancelled
test / Linux (vim, v8.0.1453) (push) Has been cancelled
test / Linux (vim, v8.1.2269) (push) Has been cancelled
test / Linux (vim, v8.2.2434) (push) Has been cancelled
test / Linux (vim, v8.2.3995) (push) Has been cancelled
test / Windows (nvim, nightly) (push) Has been cancelled
test / Windows (nvim, v0.3.8) (push) Has been cancelled
test / Windows (nvim, v0.4.2) (push) Has been cancelled
test / Windows (nvim, v0.4.3) (push) Has been cancelled
test / Windows (nvim, v0.4.4) (push) Has been cancelled
test / Windows (nvim, v0.5.0) (push) Has been cancelled
test / Windows (nvim, v0.5.1) (push) Has been cancelled
test / Windows (nvim, v0.6.0) (push) Has been cancelled
test / Windows (nvim, v0.6.1) (push) Has been cancelled
test / Windows (nvim, v0.7.0) (push) Has been cancelled
test / Windows (nvim, v0.7.2) (push) Has been cancelled
test / Windows (nvim, v0.8.0) (push) Has been cancelled
test / Windows (nvim, v0.8.1) (push) Has been cancelled
test / Windows (nvim, v0.8.2) (push) Has been cancelled
test / Windows (nvim, v0.8.3) (push) Has been cancelled
test / Windows (nvim, v0.9.0) (push) Has been cancelled
test / Windows (nvim, v0.9.1) (push) Has been cancelled
test / Windows (vim, nightly) (push) Has been cancelled
test / Windows (vim, v7.4.1185) (push) Has been cancelled
test / Windows (vim, v7.4.1689) (push) Has been cancelled
test / Windows (vim, v8.0.0027) (push) Has been cancelled
test / Windows (vim, v8.0.1453) (push) Has been cancelled
test / Windows (vim, v8.1.2269) (push) Has been cancelled
test / Windows (vim, v8.2.2434) (push) Has been cancelled
test / Windows (vim, v8.2.3995) (push) Has been cancelled
docker / docker (push) Has been cancelled
mirror / check (coding) (push) Has been cancelled
mirror / check (gitee) (push) Has been cancelled
mirror / check (gitlab) (push) Has been cancelled
116 lines
2.8 KiB
Lua
116 lines
2.8 KiB
Lua
local api = vim.api
|
|
local fn = vim.fn
|
|
|
|
--- Wrapper to interact with buffers
|
|
--- @class Buffer
|
|
|
|
local Buffer
|
|
|
|
local buf_methods = {
|
|
--- @param self Buffer
|
|
--- @param newline string
|
|
--- @param pos number
|
|
insert = function(self, newline, pos)
|
|
api.nvim_buf_set_lines(self._bufnr, pos or -1, pos or -1, false, {newline})
|
|
end,
|
|
|
|
--- @param self Buffer
|
|
--- @return boolean
|
|
isvalid = function(self)
|
|
return api.nvim_buf_is_valid(self._bufnr)
|
|
end,
|
|
|
|
--- @param self Buffer
|
|
--- @return Buffer|nil
|
|
next = function(self)
|
|
local bufnr = self._bufnr
|
|
local buffers = api.nvim_list_bufs()
|
|
local next_buf
|
|
for k, v in ipairs(buffers) do
|
|
if v == bufnr then
|
|
next_buf = k + 1
|
|
break
|
|
end
|
|
end
|
|
if next_buf and buffers[next_buf] then
|
|
return Buffer(buffers[next_buf])
|
|
end
|
|
return nil
|
|
end,
|
|
|
|
--- @param self Buffer
|
|
--- @return Buffer|nil
|
|
previous = function(self)
|
|
local bufnr = self._bufnr
|
|
local buffers = api.nvim_list_bufs()
|
|
local prev_buf
|
|
for k, v in ipairs(buffers) do
|
|
if v == bufnr then
|
|
prev_buf = k - 1
|
|
break
|
|
end
|
|
end
|
|
if prev_buf and buffers[prev_buf] then
|
|
return Buffer(buffers[prev_buf])
|
|
end
|
|
return nil
|
|
end,
|
|
}
|
|
|
|
local buf_getters = {
|
|
--- @param bufnr number
|
|
--- @return number
|
|
number = function(bufnr)
|
|
return bufnr
|
|
end,
|
|
|
|
--- @param bufnr number
|
|
--- @return string
|
|
fname = api.nvim_buf_get_name,
|
|
|
|
--- @param bufnr number
|
|
--- @return string
|
|
name = fn.bufname,
|
|
}
|
|
|
|
local buf_mt = {
|
|
_vim_type = 'buffer',
|
|
__index = function(tbl, key)
|
|
if type(key) == 'number' then
|
|
return api.nvim_buf_get_lines(tbl._bufnr, key - 1, key, false)[1]
|
|
end
|
|
if buf_methods[key] then return buf_methods[key] end
|
|
if buf_getters[key] then return buf_getters[key](tbl._bufnr) end
|
|
end,
|
|
__newindex = function() return end,
|
|
__call = function(tbl)
|
|
api.nvim_set_current_buf(tbl._bufnr)
|
|
end,
|
|
-- Only works with Lua 5.2+ or LuaJIT built with 5.2 extensions
|
|
__len = function(tbl)
|
|
return api.nvim_buf_line_count(tbl._bufnr)
|
|
end,
|
|
}
|
|
|
|
--- @param arg ?any
|
|
--- @return Buffer|nil
|
|
function Buffer(arg)
|
|
local bufnr
|
|
|
|
if not arg then
|
|
bufnr = api.nvim_get_current_buf()
|
|
elseif type(arg) == 'string' then
|
|
bufnr = fn.bufnr(arg)
|
|
if bufnr == -1 then return nil end
|
|
elseif type(arg) == 'number' then
|
|
if not api.nvim_buf_is_valid(arg) then return nil end
|
|
bufnr = arg
|
|
else
|
|
bufnr = api.nvim_list_bufs()[1]
|
|
end
|
|
|
|
return setmetatable({_bufnr = bufnr}, buf_mt)
|
|
end
|
|
|
|
return Buffer
|