Files
nvim-hardline/lua/hardline/parts/git.lua
Olivier Roques 88beb047ea Refactor git part
2021-05-21 20:15:35 +02:00

59 lines
1.4 KiB
Lua

local fn = vim.fn
local g = vim.g
local b = vim.b
local fmt = string.format
local function concat_hunks(hunks)
return vim.tbl_isempty(hunks) and '' or table.concat({
fmt('+%d', hunks[1]),
fmt('~%d', hunks[2]),
fmt('-%d', hunks[3]),
}, ' ')
end
local function get_hunks()
local hunks = {}
if g.loaded_gitgutter then
hunks = fn.GitGutterGetHunkSummary()
elseif g.loaded_signify then
hunks = fn['sy#repo#get_stats']()
hunks = hunks[1] == -1 and {} or hunks
elseif b.gitsigns_status_dict then
hunks = {
b.gitsigns_status_dict.added,
b.gitsigns_status_dict.changed,
b.gitsigns_status_dict.removed,
}
end
return concat_hunks(hunks)
end
local function get_branch()
local branch = ''
if g.loaded_fugitive then
branch = fn.FugitiveHead()
elseif g.loaded_gina then
branch = fn['gina#component#repo#branch']()
elseif g.loaded_gitbranch then
branch = fn['gitbranch#name']()
elseif b.gitsigns_head ~= nil then
branch = b.gitsigns_head
end
return branch ~= '' and fmt('(%s)', branch) or ''
end
local function get_item()
local hunks, branch = get_hunks(), get_branch()
if hunks == concat_hunks({0, 0, 0}) and branch == '' then
hunks = ''
end
if hunks ~= '' and branch ~= '' then
branch = ' ' .. branch
end
return table.concat({hunks, branch})
end
return {
get_item = get_item,
}