canola.nvim/lua/canola/ringbuf.lua
Barrett Ruth 0d3088f57e
refactor: rename oil to canola across entire codebase (#70)
Problem: the codebase still used the upstream \`oil\` naming everywhere —
URL schemes, the \`:Oil\` command, highlight groups, user events, module
paths, filetypes, buffer/window variables, LuaCATS type annotations,
vimdoc help tags, syntax groups, and internal identifiers.

Solution: mechanical rename of every reference. URL schemes now use
\`canola://\` (plus \`canola-ssh://\`, \`canola-s3://\`, \`canola-sss://\`,
\`canola-trash://\`, \`canola-test://\`). The \`:Canola\` command replaces
\`:Oil\`. All highlight groups, user events, augroups, namespaces,
filetypes, require paths, type annotations, help tags, and identifiers
follow suit. The \`upstream\` remote to \`stevearc/oil.nvim\` has been
removed and the \`vim.g.oil\` deprecation shim dropped.
2026-03-05 14:50:10 -05:00

37 lines
737 B
Lua

---@class canola.Ringbuf
---@field private size integer
---@field private tail integer
---@field private buf string[]
local Ringbuf = {}
function Ringbuf.new(size)
local self = setmetatable({
size = size,
buf = {},
tail = 0,
}, { __index = Ringbuf })
return self
end
---@param val string
function Ringbuf:push(val)
self.tail = self.tail + 1
if self.tail > self.size then
self.tail = 1
end
self.buf[self.tail] = val
end
---@return string
function Ringbuf:as_str()
local postfix = ''
for i = 1, self.tail, 1 do
postfix = postfix .. self.buf[i]
end
local prefix = ''
for i = self.tail + 1, #self.buf, 1 do
prefix = prefix .. self.buf[i]
end
return prefix .. postfix
end
return Ringbuf