require("config.settings")
require("config.lazy")
require("config.mappings")

vim.cmd.colorscheme("pywal16")
local tn_colors = require("tokyonight.colors").setup({ style = "storm" })

local syntax_overrides = {
    { "Comment", tn_colors.comment, true },
    { "Constant", tn_colors.orange },
    { "String", tn_colors.green },
    { "Character", tn_colors.green },
    { "Number", tn_colors.orange },
    { "Boolean", tn_colors.orange },
    { "Float", tn_colors.orange },
    { "Identifier", tn_colors.cyan },
    { "Function", tn_colors.blue, true },
    { "Statement", tn_colors.magenta },
    { "Conditional", tn_colors.magenta },
    { "Repeat", tn_colors.magenta },
    { "Label", tn_colors.blue },
    { "Operator", tn_colors.magenta },
    { "Keyword", tn_colors.magenta },
    { "Exception", tn_colors.magenta },
    { "PreProc", tn_colors.blue },
    { "Include", tn_colors.blue },
    { "Define", tn_colors.blue },
    { "Macro", tn_colors.blue },
    { "Type", tn_colors.yellow },
    { "StorageClass", tn_colors.yellow },
    { "Structure", tn_colors.yellow },
    { "Typedef", tn_colors.yellow },
    { "Special", tn_colors.red },
    { "Delimiter", tn_colors.fg },
    { "SpecialComment", tn_colors.comment },
    { "Debug", tn_colors.red },

    { "DiagnosticError", tn_colors.error, true },
    { "DiagnosticWarn", tn_colors.warning, true },
    { "DiagnosticInfo", tn_colors.blue },
    { "DiagnosticHint", tn_colors.hint },

    { "DiagnosticUnderlineError", tn_colors.error, false, true },
    { "DiagnosticUnderlineWarn", tn_colors.warning, false, true },
    { "DiagnosticUnderlineInfo", tn_colors.blue, false, true },
    { "DiagnosticUnderlineHint", tn_colors.hint, false, true },

    { "DiagnosticVirtualTextError", tn_colors.error, false, false, nil },
    { "DiagnosticVirtualTextWarn", tn_colors.warning, false, false, nil },
    { "DiagnosticVirtualTextInfo", tn_colors.blue, false, false, nil },
    { "DiagnosticVirtualTextHint", tn_colors.hint, false, false, nil }
}

for _, group in ipairs(syntax_overrides) do
    vim.api.nvim_set_hl(0, group[1], { fg = group[2], bold = group[3] or false, italic = group[4] or false, bg = group[5] or nil })
end
