diff --git a/lua/base46.lua b/lua/base46.lua new file mode 100644 index 0000000..98240f6 --- /dev/null +++ b/lua/base46.lua @@ -0,0 +1,87 @@ +local M = {} + +M.get_colors = function(type) + local name + + if vim.g.nvchad_theme then + name = vim.g.nvchad_theme + else + name = require("core.utils").load_config().ui.theme + vim.g.nvchad_theme = name + end + + -- theme paths + local default_path = "hl_themes." .. name + local user_path = "custom.themes." .. name + + local present1, default_theme = pcall(require, default_path) + local present2, user_theme = pcall(require, user_path) + + if present1 then + return default_theme[type] + elseif present2 then + return user_theme[type] + else + error "No such theme bruh >_< " + end +end + +M.merge_tb = function(table1, table2) + return vim.tbl_deep_extend("force", table1, table2) +end + +M.load_theme = function() + -- clear highlights of bufferline (cuz of dynamic devicons hl group on the buffer) + local highlights_raw = vim.split(vim.api.nvim_exec("filter BufferLine hi", true), "\n") + local highlight_groups = {} + + for _, raw_hi in ipairs(highlights_raw) do + table.insert(highlight_groups, string.match(raw_hi, "BufferLine%a+")) + end + + for _, highlight in ipairs(highlight_groups) do + vim.cmd([[hi clear ]] .. highlight) + end + -- above highlights clear code by https://github.com/max397574 + + -- reload highlights for theme switcher + require("plenary.reload").reload_module "integrations" + require("plenary.reload").reload_module "chadlights" + + require "chadlights" +end + +M.override_theme = function(default_theme, theme_name) + local changed_themes = require("core.utils").load_config().ui.changed_themes + + if changed_themes[theme_name] then + return M.merge_tb(default_theme, changed_themes[theme_name]) + else + return default_theme + end +end + +M.toggle_theme = function() + local themes = require("core.utils").load_config().ui.theme_toggle + + local theme1 = themes[1] + local theme2 = themes[2] + + if vim.g.nvchad_theme == theme1 then + vim.g.toggle_theme_icon = "  " + vim.g.nvchad_theme = theme2 + + require("nvchad").reload_theme() + require("nvchad").change_theme(theme1, theme2) + elseif vim.g.nvchad_theme == theme2 then + vim.g.toggle_theme_icon = "  " + vim.g.nvchad_theme = theme1 + + require("nvchad").reload_theme() + require("nvchad").change_theme(theme2, theme1) + else + vim.notify "Set your current theme to one of those mentioned in the theme_toggle table (chadrc)" + end +end + +return M diff --git a/lua/chadlights.lua b/lua/chadlights.lua index b0c956b..7ccce0c 100644 --- a/lua/chadlights.lua +++ b/lua/chadlights.lua @@ -1,6 +1,6 @@ -- returns a huge table of all highlight groups & their colors -local merge_tb = require("base16").merge_tb +local merge_tb = require("base46").merge_tb local highlights = {} local hl_dir = vim.fn.stdpath "data" .. "/site/pack/packer/opt/base46/lua/integrations" diff --git a/lua/hl_themes/aquarium.lua b/lua/hl_themes/aquarium.lua index 94f59f4..c7b483c 100644 --- a/lua/hl_themes/aquarium.lua +++ b/lua/hl_themes/aquarium.lua @@ -53,6 +53,6 @@ M.base_16 = { base0F = "#eAc1c1", } -M = require("base16").override_theme(M, "aquarium") +M = require("base46").override_theme(M, "aquarium") return M diff --git a/lua/hl_themes/blossom.lua b/lua/hl_themes/blossom.lua index f6f1e79..bab400f 100644 --- a/lua/hl_themes/blossom.lua +++ b/lua/hl_themes/blossom.lua @@ -53,6 +53,6 @@ M.base_16 = { base0F = "#887c76", } -M = require("base16").override_theme(M, "blossom") +M = require("base46").override_theme(M, "blossom") return M diff --git a/lua/hl_themes/catppuccin.lua b/lua/hl_themes/catppuccin.lua index fe1825d..5fe2281 100644 --- a/lua/hl_themes/catppuccin.lua +++ b/lua/hl_themes/catppuccin.lua @@ -53,6 +53,6 @@ M.base_16 = { base0F = "#E8A2AF", } -M = require("base16").override_theme(M, "catppuccin") +M = require("base46").override_theme(M, "catppuccin") return M diff --git a/lua/hl_themes/chadracula.lua b/lua/hl_themes/chadracula.lua index 977af77..7f67486 100644 --- a/lua/hl_themes/chadracula.lua +++ b/lua/hl_themes/chadracula.lua @@ -53,6 +53,6 @@ M.base_16 = { base0F = "#f7f7fb", } -M = require("base16").override_theme(M, "chadracula") +M = require("base46").override_theme(M, "chadracula") return M diff --git a/lua/hl_themes/chadtain.lua b/lua/hl_themes/chadtain.lua index 460f7a2..a7ca282 100644 --- a/lua/hl_themes/chadtain.lua +++ b/lua/hl_themes/chadtain.lua @@ -53,6 +53,6 @@ M.base_16 = { base0F = "#8b6567", } -M = require("base16").override_theme(M, "chadtain") +M = require("base46").override_theme(M, "chadtain") return M diff --git a/lua/hl_themes/doomchad.lua b/lua/hl_themes/doomchad.lua index 8f2f789..912f557 100644 --- a/lua/hl_themes/doomchad.lua +++ b/lua/hl_themes/doomchad.lua @@ -53,6 +53,6 @@ M.base_16 = { base0F = "#c85a50", } -M = require("base16").override_theme(M, "doomchad") +M = require("base46").override_theme(M, "doomchad") return M diff --git a/lua/hl_themes/everforest.lua b/lua/hl_themes/everforest.lua index e15046a..e11df5f 100644 --- a/lua/hl_themes/everforest.lua +++ b/lua/hl_themes/everforest.lua @@ -53,6 +53,6 @@ M.base_16 = { base0F = "#d699b6", } -M = require("base16").override_theme(M, "everforest") +M = require("base46").override_theme(M, "everforest") return M diff --git a/lua/hl_themes/gruvbox.lua b/lua/hl_themes/gruvbox.lua index 951e295..64f59e5 100644 --- a/lua/hl_themes/gruvbox.lua +++ b/lua/hl_themes/gruvbox.lua @@ -53,6 +53,6 @@ M.base_16 = { base0F = "#d65d0e", } -M = require("base16").override_theme(M, "gruvbox") +M = require("base46").override_theme(M, "gruvbox") return M diff --git a/lua/hl_themes/gruvchad.lua b/lua/hl_themes/gruvchad.lua index ad898bd..44bc7ae 100644 --- a/lua/hl_themes/gruvchad.lua +++ b/lua/hl_themes/gruvchad.lua @@ -53,6 +53,6 @@ M.base_16 = { base06 = "#c3b499", } -M = require("base16").override_theme(M, "gruvchad") +M = require("base46").override_theme(M, "gruvchad") return M diff --git a/lua/hl_themes/javacafe.lua b/lua/hl_themes/javacafe.lua index 733438c..f8916f0 100644 --- a/lua/hl_themes/javacafe.lua +++ b/lua/hl_themes/javacafe.lua @@ -53,6 +53,6 @@ M.base_16 = { base06 = "#d3d9e4", } -M = require("base16").override_theme(M, "javacafe") +M = require("base46").override_theme(M, "javacafe") return M diff --git a/lua/hl_themes/jellybeans.lua b/lua/hl_themes/jellybeans.lua index 84b51d3..7bdef81 100644 --- a/lua/hl_themes/jellybeans.lua +++ b/lua/hl_themes/jellybeans.lua @@ -53,6 +53,6 @@ M.base_16 = { base0F = "#cf6a4c", } -M = require("base16").override_theme(M, "jellybeans") +M = require("base46").override_theme(M, "jellybeans") return M diff --git a/lua/hl_themes/kanagawa.lua b/lua/hl_themes/kanagawa.lua index cbe140c..9c3b45a 100644 --- a/lua/hl_themes/kanagawa.lua +++ b/lua/hl_themes/kanagawa.lua @@ -53,6 +53,6 @@ M.base_16 = { base0F = "#d27e99", } -M = require("base16").override_theme(M, "kanagawa") +M = require("base46").override_theme(M, "kanagawa") return M diff --git a/lua/hl_themes/monekai.lua b/lua/hl_themes/monekai.lua index c9f1445..336ec9f 100644 --- a/lua/hl_themes/monekai.lua +++ b/lua/hl_themes/monekai.lua @@ -53,6 +53,6 @@ M.base_16 = { base0F = "#bbc2cf", } -M = require("base16").override_theme(M, "monekai") +M = require("base46").override_theme(M, "monekai") return M diff --git a/lua/hl_themes/mountain.lua b/lua/hl_themes/mountain.lua index e914913..03beda9 100644 --- a/lua/hl_themes/mountain.lua +++ b/lua/hl_themes/mountain.lua @@ -53,6 +53,6 @@ M.base_16 = { base0F = "#9d9a7b", } -M = require("base16").override_theme(M, "mountain") +M = require("base46").override_theme(M, "mountain") return M diff --git a/lua/hl_themes/nightlamp.lua b/lua/hl_themes/nightlamp.lua index c7281e2..0c9a1d4 100644 --- a/lua/hl_themes/nightlamp.lua +++ b/lua/hl_themes/nightlamp.lua @@ -53,6 +53,6 @@ M.base_16 = { base0F = "#d0d0c7", } -M = require("base16").override_theme(M, "nightlamp") +M = require("base46").override_theme(M, "nightlamp") return M diff --git a/lua/hl_themes/nightowl.lua b/lua/hl_themes/nightowl.lua index ad5a8af..e885209 100644 --- a/lua/hl_themes/nightowl.lua +++ b/lua/hl_themes/nightowl.lua @@ -53,6 +53,6 @@ M.base_16 = { base0F = "#d6deeb", -- Deprecated, Opening/Closing Embedded Language Tags, e.g. } -M = require("base16").override_theme(M, "nightowl") +M = require("base46").override_theme(M, "nightowl") return M diff --git a/lua/hl_themes/nord.lua b/lua/hl_themes/nord.lua index 0e1d6af..90af54b 100644 --- a/lua/hl_themes/nord.lua +++ b/lua/hl_themes/nord.lua @@ -53,6 +53,6 @@ M.base_16 = { base0F = "#B48EAD", } -M = require("base16").override_theme(M, "nord") +M = require("base46").override_theme(M, "nord") return M diff --git a/lua/hl_themes/one_light.lua b/lua/hl_themes/one_light.lua index 66894d2..4e3386d 100644 --- a/lua/hl_themes/one_light.lua +++ b/lua/hl_themes/one_light.lua @@ -53,6 +53,6 @@ M.base_16 = { base0F = "#986801", } -M = require("base16").override_theme(M, "one_light") +M = require("base46").override_theme(M, "one_light") return M diff --git a/lua/hl_themes/onedark.lua b/lua/hl_themes/onedark.lua index d83c780..370fbd2 100644 --- a/lua/hl_themes/onedark.lua +++ b/lua/hl_themes/onedark.lua @@ -53,6 +53,6 @@ M.base_16 = { base0F = "#be5046", } -M = require("base16").override_theme(M, "onedark") +M = require("base46").override_theme(M, "onedark") return M diff --git a/lua/hl_themes/onenord.lua b/lua/hl_themes/onenord.lua index 091844f..4e994b0 100644 --- a/lua/hl_themes/onenord.lua +++ b/lua/hl_themes/onenord.lua @@ -53,6 +53,6 @@ M.base_16 = { base06 = "#c7cdd8", } -M = require("base16").override_theme(M, "onenord") +M = require("base46").override_theme(M, "onenord") return M diff --git a/lua/hl_themes/palenight.lua b/lua/hl_themes/palenight.lua index 3fef12e..cf90578 100644 --- a/lua/hl_themes/palenight.lua +++ b/lua/hl_themes/palenight.lua @@ -53,6 +53,6 @@ M.base_16 = { base0F = "#ff5370", } -M = require("base16").override_theme(M, "palenight") +M = require("base46").override_theme(M, "palenight") return M diff --git a/lua/hl_themes/solarized.lua b/lua/hl_themes/solarized.lua index e81aaf3..f7a1664 100644 --- a/lua/hl_themes/solarized.lua +++ b/lua/hl_themes/solarized.lua @@ -53,6 +53,6 @@ M.base_16 = { base0F = "#d33682", } -M = require("base16").override_theme(M, "solarized") +M = require("base46").override_theme(M, "solarized") return M diff --git a/lua/hl_themes/tokyodark.lua b/lua/hl_themes/tokyodark.lua index 3a3e2be..659fdca 100644 --- a/lua/hl_themes/tokyodark.lua +++ b/lua/hl_themes/tokyodark.lua @@ -53,6 +53,6 @@ M.base_16 = { base0F = "#f3627a", } -M = require("base16").override_theme(M, "tokyodark") +M = require("base46").override_theme(M, "tokyodark") return M diff --git a/lua/hl_themes/tomorrow_night.lua b/lua/hl_themes/tomorrow_night.lua index 38428af..14b4e02 100644 --- a/lua/hl_themes/tomorrow_night.lua +++ b/lua/hl_themes/tomorrow_night.lua @@ -53,6 +53,6 @@ M.base_16 = { base06 = "#e0e0e0", } -M = require("base16").override_theme(M, "tomorrow_night") +M = require("base46").override_theme(M, "tomorrow_night") return M diff --git a/lua/hl_themes/wombat.lua b/lua/hl_themes/wombat.lua index 21cb0e1..1f315c9 100644 --- a/lua/hl_themes/wombat.lua +++ b/lua/hl_themes/wombat.lua @@ -53,6 +53,6 @@ M.base_16 = { base0F = "#dc8c64", } -M = require("base16").override_theme(M, "wombat") +M = require("base46").override_theme(M, "wombat") return M diff --git a/lua/integrations/bufferline.lua b/lua/integrations/bufferline.lua index 7258994..cd4aa85 100644 --- a/lua/integrations/bufferline.lua +++ b/lua/integrations/bufferline.lua @@ -1,4 +1,4 @@ -local colors = require("base16").get_colors "base_30" +local colors = require("base46").get_colors "base_30" return { @@ -100,4 +100,26 @@ return { BufferLineDevIconDefaultSelected = { bg = "NONE", }, + + BufferLineDuplicate = { + fg = "NONE", + bg = colors.black2, + }, + BufferLineDuplicateSelected = { + fg = colors.red, + bg = colors.black, + }, + BufferLineDuplicateVisible = { + fg = colors.blue, + bg = colors.black2, + }, + + -- custom area + BufferLineRightCustomAreaText1 = { + bg = colors.grey, + fg = colors.white, + }, + BufferLineRightCustomAreaText2 = { + fg = colors.red, + }, } diff --git a/lua/integrations/cmp.lua b/lua/integrations/cmp.lua index 76ed5f2..4cdfa6d 100644 --- a/lua/integrations/cmp.lua +++ b/lua/integrations/cmp.lua @@ -1,5 +1,5 @@ -local theme = require("base16").get_colors "base_16" -local base_30 = require("base16").get_colors "base_30" +local theme = require("base46").get_colors "base_16" +local base_30 = require("base46").get_colors "base_30" return { CmpItemKindConstant = { fg = theme.base09 }, diff --git a/lua/integrations/devicons.lua b/lua/integrations/devicons.lua index 277c6b3..35e0a10 100644 --- a/lua/integrations/devicons.lua +++ b/lua/integrations/devicons.lua @@ -1,4 +1,4 @@ -local colors = require("base16").get_colors "base_30" +local colors = require("base46").get_colors "base_30" return { DevIconc = { bg = "NONE", fg = colors.blue }, diff --git a/lua/integrations/git.lua b/lua/integrations/git.lua index 6f81579..7c947bd 100644 --- a/lua/integrations/git.lua +++ b/lua/integrations/git.lua @@ -1,4 +1,4 @@ -local theme = require("base16").get_colors "base_16" +local theme = require("base46").get_colors "base_16" return { diff --git a/lua/integrations/mail.lua b/lua/integrations/mail.lua index 3469181..77b3022 100644 --- a/lua/integrations/mail.lua +++ b/lua/integrations/mail.lua @@ -1,4 +1,4 @@ -local theme = require("base16").get_colors "base_16" +local theme = require("base46").get_colors "base_16" return { mailQuoted1 = { diff --git a/lua/integrations/misc.lua b/lua/integrations/misc.lua index cde7420..8d2673f 100644 --- a/lua/integrations/misc.lua +++ b/lua/integrations/misc.lua @@ -1,4 +1,4 @@ -local theme = require("base16").get_colors "base_16" +local theme = require("base46").get_colors "base_16" return { Normal = { diff --git a/lua/integrations/nvchad.lua b/lua/integrations/nvchad.lua index 3f66fb1..e5f25e8 100644 --- a/lua/integrations/nvchad.lua +++ b/lua/integrations/nvchad.lua @@ -1,4 +1,4 @@ -local colors = require("base16").get_colors "base_30" +local colors = require("base46").get_colors "base_30" local ui = require("core.utils").load_config().ui local black = colors.black diff --git a/lua/integrations/syntax.lua b/lua/integrations/syntax.lua index 99d652b..356fff5 100644 --- a/lua/integrations/syntax.lua +++ b/lua/integrations/syntax.lua @@ -1,4 +1,4 @@ -local theme = require("base16").get_colors "base_16" +local theme = require("base46").get_colors "base_16" -- Standard syntax highlighting diff --git a/lua/integrations/treesitter.lua b/lua/integrations/treesitter.lua index c30ddb2..b95872a 100644 --- a/lua/integrations/treesitter.lua +++ b/lua/integrations/treesitter.lua @@ -1,4 +1,4 @@ -local theme = require("base16").get_colors "base_16" +local theme = require("base46").get_colors "base_16" return { TSAnnotation = {