statusline: feline: Use default git provider

now it handles dirs too

092442db0c
This commit is contained in:
Akianonymus 2021-09-09 08:36:25 +05:30 committed by siduck76
parent f73ba68c08
commit 85117ef95e

View File

@ -225,61 +225,12 @@ components.active[3][1] = {
}
components.active[3][2] = {
-- taken from: https://github.com/hoob3rt/lualine.nvim/blob/master/lua/lualine/components/branch.lua
provider = function()
local git_branch = ""
-- first try with gitsigns
local gs_dict = vim.b.gitsigns_status_dict
if gs_dict then
git_branch = (gs_dict.head and #gs_dict.head > 0 and gs_dict.head) or git_branch
else
-- path seperator
local branch_sep = package.config:sub(1, 1)
-- get file dir so we can search from that dir
local file_dir = vim.fn.expand "%:p:h" .. ";"
-- find .git/ folder genaral case
local git_dir = vim.fn.finddir(".git", file_dir)
-- find .git file in case of submodules or any other case git dir is in
-- any other place than .git/
local git_file = vim.fn.findfile(".git", file_dir)
-- for some weird reason findfile gives relative path so expand it to fullpath
if #git_file > 0 then
git_file = vim.fn.fnamemodify(git_file, ":p")
end
if #git_file > #git_dir then
-- separate git-dir or submodule is used
local file = io.open(git_file)
git_dir = file:read()
git_dir = git_dir:match "gitdir: (.+)$"
file:close()
-- submodule / relative file path
if git_dir:sub(1, 1) ~= branch_sep and not git_dir:match "^%a:.*$" then
git_dir = git_file:match "(.*).git" .. git_dir
end
end
if #git_dir > 0 then
local head_file = git_dir .. branch_sep .. "HEAD"
local f_head = io.open(head_file)
if f_head then
local HEAD = f_head:read()
f_head:close()
local branch = HEAD:match "ref: refs/heads/(.+)$"
if branch then
git_branch = branch
else
git_branch = HEAD:sub(1, 6)
end
end
end
end
return (git_branch ~= "" and "" .. git_branch) or git_branch
end,
provider = "git_branch",
hl = {
fg = colors.grey_fg2,
bg = colors.statusline_bg,
},
icon = "",
}
components.active[3][3] = {