refactor(git): minor structural cleanups
This commit is contained in:
+13
-14
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user