From 25352b81a091861c9dfe14d90c4b541604e46dac Mon Sep 17 00:00:00 2001 From: rootiest Date: Wed, 7 Aug 2024 08:19:21 -0400 Subject: [PATCH] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20=20refactor(rooticolor):?= =?UTF-8?q?=20move=20color=20utilities=20to=20module?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Create a rooticolor module for color utilities that are used in multiple locations in config --- lua/config/highlight.lua | 49 ++++++++-------------------------------- lua/config/rootiest.lua | 30 +++++++----------------- lua/plugins/lualine.lua | 34 ++++------------------------ lua/plugins/util.lua | 19 ++-------------- lua/utils/rooticolor.lua | 37 ++++++++++++++++++++++++++++++ 5 files changed, 61 insertions(+), 108 deletions(-) create mode 100644 lua/utils/rooticolor.lua diff --git a/lua/config/highlight.lua b/lua/config/highlight.lua index 7e90062..cfb64f9 100644 --- a/lua/config/highlight.lua +++ b/lua/config/highlight.lua @@ -3,44 +3,15 @@ -- ╰─────────────────────────────────────────────────────────╯ local M = {} --- Function to convert RGB to hexadecimal -local function rgb_to_hex(rgb) - return string.format("#%02x%02x%02x", rgb[1], rgb[2], rgb[3]) -end - -local function get_bg_color(hlgroup) - local hl = vim.api.nvim_get_hl(0, { name = hlgroup, link = false }) - local bg = hl.bg - if bg then - return rgb_to_hex({ - bit.rshift(bit.band(bg, 0xFF0000), 16), - bit.rshift(bit.band(bg, 0x00FF00), 8), - bit.band(bg, 0x0000FF), - }) - end - return nil -end - -local function get_fg_color(hlgroup) - local hl = vim.api.nvim_get_hl(0, { name = hlgroup, link = false }) - local fg = hl.fg - if fg then - return rgb_to_hex({ - bit.rshift(bit.band(fg, 0xFF0000), 16), - bit.rshift(bit.band(fg, 0x00FF00), 8), - bit.band(fg, 0x0000FF), - }) - end - return nil -end +local rooticolor = require("utils.rooticolor") -- Function to set up indent highlights function M.setup_indent_highlight() -- Get the background color of CursorLine - local cursorline_bg_hex = get_bg_color("CursorLine") + local cursorline_bg_hex = rooticolor.get_bg_color("CursorLine") -- Get the foreground color of Error - local miniiconsred_fg_hex = get_fg_color("Error") + local miniiconsred_fg_hex = rooticolor.get_fg_color("Error") local hooks = require("ibl.hooks") -- create the highlight groups in the highlight setup hook, so they are reset @@ -139,27 +110,27 @@ function M.setup_mode_highlight() local bg_color if current_mode == "n" then - bg_color = get_bg_color("MiniStatuslineModeNormal") + bg_color = rooticolor.get_bg_color("MiniStatuslineModeNormal") vim.api.nvim_set_hl(0, "SmoothCursor", { fg = bg_color }) vim.fn.sign_define("smoothcursor", { text = "" }) elseif current_mode == "v" then - bg_color = get_bg_color("MiniStatuslineModeVisual") + bg_color = rooticolor.get_bg_color("MiniStatuslineModeVisual") vim.api.nvim_set_hl(0, "SmoothCursor", { fg = bg_color }) vim.fn.sign_define("smoothcursor", { text = "" }) elseif current_mode == "V" then - bg_color = get_bg_color("MiniStatuslineModeVisual") + bg_color = rooticolor.get_bg_color("MiniStatuslineModeVisual") vim.api.nvim_set_hl(0, "SmoothCursor", { fg = bg_color }) vim.fn.sign_define("smoothcursor", { text = "" }) elseif current_mode == "R" or current_mode == "r" then - bg_color = get_bg_color("MiniStatuslineModeReplace") + bg_color = rooticolor.get_bg_color("MiniStatuslineModeReplace") vim.api.nvim_set_hl(0, "SmoothCursor", { fg = bg_color }) vim.fn.sign_define("smoothcursor", { text = "" }) elseif current_mode == "i" then - bg_color = get_bg_color("MiniStatuslineModeInsert") + bg_color = rooticolor.get_bg_color("MiniStatuslineModeInsert") vim.api.nvim_set_hl(0, "SmoothCursor", { fg = bg_color }) vim.fn.sign_define("smoothcursor", { text = "" }) else - bg_color = get_bg_color("MiniStatuslineModeNormal") + bg_color = rooticolor.get_bg_color("MiniStatuslineModeNormal") vim.api.nvim_set_hl(0, "SmoothCursor", { fg = bg_color }) vim.fn.sign_define("smoothcursor", { text = "" }) end @@ -167,7 +138,7 @@ end function M.setup_dashboard_highlight() if not vim.g.DashboardHeaderColor then - local dash_color = get_fg_color("Error") + local dash_color = rooticolor.get_fg_color("Error") vim.api.nvim_set_hl(0, "DashboardHeader", { fg = dash_color }) else vim.api.nvim_set_hl( diff --git a/lua/config/rootiest.lua b/lua/config/rootiest.lua index 4176740..793facc 100644 --- a/lua/config/rootiest.lua +++ b/lua/config/rootiest.lua @@ -3,6 +3,8 @@ -- ╰─────────────────────────────────────────────────────────╯ local M = {} +local rooticolor = require("utils.rooticolor") + local precog_first_time = true -- Yank line without leading/trailing whitespace @@ -67,47 +69,31 @@ end -- Set cursor icons function M.set_cursor_icons() - local function rgb_to_hex(rgb) - return string.format("#%02x%02x%02x", rgb[1], rgb[2], rgb[3]) - end - - local function get_bg_color(hlgroup) - local hl = vim.api.nvim_get_hl(0, { name = hlgroup, link = false }) - local bg = hl.bg - if bg then - return rgb_to_hex({ - bit.rshift(bit.band(bg, 0xFF0000), 16), - bit.rshift(bit.band(bg, 0x00FF00), 8), - bit.band(bg, 0x0000FF), - }) - end - return nil - end local current_mode = vim.fn.mode() local bg_color if current_mode == "n" then - bg_color = get_bg_color("MiniStatuslineModeNormal") + bg_color = rooticolor.get_bg_color("MiniStatuslineModeNormal") vim.api.nvim_set_hl(0, "SmoothCursor", { fg = bg_color }) vim.fn.sign_define("smoothcursor", { text = "" }) elseif current_mode == "v" then - bg_color = get_bg_color("MiniStatuslineModeVisual") + bg_color = rooticolor.get_bg_color("MiniStatuslineModeVisual") vim.api.nvim_set_hl(0, "SmoothCursor", { fg = bg_color }) vim.fn.sign_define("smoothcursor", { text = "" }) elseif current_mode == "V" then - bg_color = get_bg_color("MiniStatuslineModeVisual") + bg_color = rooticolor.get_bg_color("MiniStatuslineModeVisual") vim.api.nvim_set_hl(0, "SmoothCursor", { fg = bg_color }) vim.fn.sign_define("smoothcursor", { text = "" }) elseif current_mode == "R" or current_mode == "r" then - bg_color = get_bg_color("MiniStatuslineModeReplace") + bg_color = rooticolor.get_bg_color("MiniStatuslineModeReplace") vim.api.nvim_set_hl(0, "SmoothCursor", { fg = bg_color }) vim.fn.sign_define("smoothcursor", { text = "" }) elseif current_mode == "i" then - bg_color = get_bg_color("MiniStatuslineModeInsert") + bg_color = rooticolor.get_bg_color("MiniStatuslineModeInsert") vim.api.nvim_set_hl(0, "SmoothCursor", { fg = bg_color }) vim.fn.sign_define("smoothcursor", { text = "" }) else - bg_color = get_bg_color("MiniStatuslineModeNormal") + bg_color = rooticolor.get_bg_color("MiniStatuslineModeNormal") vim.api.nvim_set_hl(0, "SmoothCursor", { fg = bg_color }) vim.fn.sign_define("smoothcursor", { text = "" }) end diff --git a/lua/plugins/lualine.lua b/lua/plugins/lualine.lua index 471ddf4..92fa3a7 100644 --- a/lua/plugins/lualine.lua +++ b/lua/plugins/lualine.lua @@ -1,23 +1,6 @@ -- ╭─────────────────────────────────────────────────────────╮ -- │ Lualine │ -- ╰─────────────────────────────────────────────────────────╯ --- Function to convert RGB to hexadecimal -local function rgb_to_hex(rgb) - return string.format("#%02x%02x%02x", rgb[1], rgb[2], rgb[3]) -end - -local function get_fg_color(hlgroup) - local hl = vim.api.nvim_get_hl(0, { name = hlgroup, link = false }) - local fg = hl.fg - if fg then - return rgb_to_hex({ - bit.rshift(bit.band(fg, 0xFF0000), 16), - bit.rshift(bit.band(fg, 0x00FF00), 8), - bit.band(fg, 0x0000FF), - }) - end - return nil -end return { "nvim-lualine/lualine.nvim", @@ -35,10 +18,6 @@ return { opts = function() local icons = LazyVim.config.icons - -- Require the dependencies - local wakatime_stats = require("config.wakatime_stats") - local music_stats = require("config.music_stats") - vim.o.laststatus = vim.g.lualine_laststatus local opts = { @@ -115,16 +94,11 @@ return { }, { function() - return wakatime_stats.get_icon_with_text() + return require("utils.wakatime_stats").get_icon_with_text() end, color = function() - if wakatime_stats.get_total_minutes() >= 60 then - return { fg = get_fg_color("diffAdded") } - elseif wakatime_stats.get_total_minutes() >= 30 then - return { fg = get_fg_color("diffOldFile") } - else - return { fg = get_fg_color("diffRemoved") } - end + local wakatime_stats = require("utils.wakatime_stats") + return wakatime_stats.get_color() end, on_click = function(button) if button == "left" then @@ -136,7 +110,7 @@ return { lualine_y = { { function() - return music_stats.get_icon_with_text() + return require("utils.music_stats").get_icon_with_text() end, }, diff --git a/lua/plugins/util.lua b/lua/plugins/util.lua index b116c84..15a1d7b 100644 --- a/lua/plugins/util.lua +++ b/lua/plugins/util.lua @@ -1,23 +1,8 @@ -- ╭─────────────────────────────────────────────────────────╮ -- │ Utilities │ -- ╰─────────────────────────────────────────────────────────╯ --- Function to convert RGB to hexadecimal -local function rgb_to_hex(rgb) - return string.format("#%02x%02x%02x", rgb[1], rgb[2], rgb[3]) -end -local function get_fg_color(hlgroup) - local hl = vim.api.nvim_get_hl(0, { name = hlgroup, link = false }) - local fg = hl.fg - if fg then - return rgb_to_hex({ - bit.rshift(bit.band(fg, 0xFF0000), 16), - bit.rshift(bit.band(fg, 0x00FF00), 8), - bit.band(fg, 0x0000FF), - }) - end - return nil -end +local rooticolor = require("utils.rooticolor") return { { -- Chezmoi @@ -280,7 +265,7 @@ return { table.insert(config.sections.lualine_c, { git_blame.get_current_blame_text, cond = git_blame.is_blame_text_available, - color = { fg = get_fg_color("GitSignsCurrentLineBlame") }, + color = { fg = rooticolor.get_fg_color("GitSignsCurrentLineBlame") }, }) -- Apply the new configuration diff --git a/lua/utils/rooticolor.lua b/lua/utils/rooticolor.lua new file mode 100644 index 0000000..882fea8 --- /dev/null +++ b/lua/utils/rooticolor.lua @@ -0,0 +1,37 @@ +local bit = require("bit") + +local M = {} + +-- Function to convert RGB to hexadecimal +function M.rgb_to_hex(rgb) + return string.format("#%02x%02x%02x", rgb[1], rgb[2], rgb[3]) +end + +-- Function to get the foreground color of a highlight group +function M.get_fg_color(hlgroup) + local hl = vim.api.nvim_get_hl(0, { name = hlgroup, link = false }) + local fg = hl.fg + if fg then + return M.rgb_to_hex({ + bit.rshift(bit.band(fg, 0xFF0000), 16), + bit.rshift(bit.band(fg, 0x00FF00), 8), + bit.band(fg, 0x0000FF), + }) + end + return nil +end + +function M.get_bg_color(hlgroup) + local hl = vim.api.nvim_get_hl(0, { name = hlgroup, link = false }) + local bg = hl.bg + if bg then + return M.rgb_to_hex({ + bit.rshift(bit.band(bg, 0xFF0000), 16), + bit.rshift(bit.band(bg, 0x00FF00), 8), + bit.band(bg, 0x0000FF), + }) + end + return nil +end + +return M