refactor(git): minor structural cleanups

This commit is contained in:
2026-04-27 13:10:10 +02:00
parent f55d7ac11d
commit 5966454462
4 changed files with 36 additions and 40 deletions
+13 -14
View File
@@ -36,9 +36,6 @@ local function indicator(code)
if y == "D" then
return "D", "GitDeleted"
end
if y == "M" or y == "T" then
return "M", "GitUnstaged"
end
return "M", "GitUnstaged"
end
@@ -87,7 +84,7 @@ end
---@class ow.Git.Repo
---@field gitdir string
---@field worktree string
---@field buffers integer[]
---@field buffers table<integer, true> set of registered buffer numbers
---@field watcher? uv.uv_fs_event_t
---@field refresh fun(self: ow.Git.Repo)
---@field refresh_handle ow.Util.DebounceHandle
@@ -116,17 +113,17 @@ end
---@param buf integer
function Repo:add_buffer(buf)
table.insert(self.buffers, buf)
self.buffers[buf] = true
end
---@param buf integer
function Repo:remove_buffer(buf)
for i, b in ipairs(self.buffers) do
if b == buf then
table.remove(self.buffers, i)
break
end
end
self.buffers[buf] = nil
end
---@return boolean
function Repo:has_buffers()
return next(self.buffers) ~= nil
end
---@param repo ow.Git.Repo
@@ -152,8 +149,10 @@ local function do_refresh(repo)
format(code)
end
end
for _, buf in ipairs(repo.buffers) do
if vim.api.nvim_buf_is_valid(buf) then
for buf in pairs(repo.buffers) do
if not vim.api.nvim_buf_is_valid(buf) then
repo.buffers[buf] = nil
else
local status = statuses[vim.api.nvim_buf_get_name(buf)]
if vim.b[buf].git_status ~= status then
vim.b[buf].git_status = status
@@ -222,7 +221,7 @@ local function unregister(buf)
end
repo_by_buf[buf] = nil
repo:remove_buffer(buf)
if #repo.buffers == 0 then
if not repo:has_buffers() then
repo:stop_watcher()
repo_by_gitdir[repo.gitdir] = nil
end