local ok, lualine = pcall(require, "lualine")
if not ok then
    return
end

local function diff_source()
    local gitsigns = vim.b.gitsigns_status_dict
    if gitsigns then
        return {
            added = gitsigns.added,
            modified = gitsigns.changed,
            removed = gitsigns.removed,
        }
    end
end

lualine.setup {
    options = {
        theme = "auto",
        globalstatus = true,
        section_separators = "",
    },
    sections = {
        lualine_b = {
            { "branch" },
            {
                "diff",
                source = diff_source,
            },
        },
        lualine_c = {
            {
                "filetype",
                colored = true,
                icon_only = true,
                separator = "",
            },
            { "filename" },
            {
                function()
                    return vim.fn.search([[\s\+$]], "nw") ~= 0 and "trailing" or ""
                end,
                color = "WarningMsg",
            },
        },
        lualine_x = {
            { "encoding" },
            { "fileformat" },
            {
                function()
                    if vim.bo.expandtab then
                        return "Space " .. vim.bo.shiftwidth
                    else
                        return "Tab " .. vim.bo.shiftwidth
                    end
                end,
            },
        },
    },
}