Squashed 'users/configs/system/nvim/nvim/' content from commit e088bce2
git-subtree-dir: users/configs/system/nvim/nvim git-subtree-split: e088bce2bd90c0b5c35d13a8615a55455b96294d
This commit is contained in:
76
lua/astronvim/utils/status/hl.lua
Normal file
76
lua/astronvim/utils/status/hl.lua
Normal file
@@ -0,0 +1,76 @@
|
||||
--- ### AstroNvim Status Highlighting
|
||||
--
|
||||
-- Statusline related highlighting utilities
|
||||
--
|
||||
-- This module can be loaded with `local hl = require "astronvim.utils.status.hl"`
|
||||
--
|
||||
-- @module astronvim.utils.status.hl
|
||||
-- @copyright 2023
|
||||
-- @license GNU General Public License v3.0
|
||||
|
||||
local M = {}
|
||||
|
||||
local env = require "astronvim.utils.status.env"
|
||||
|
||||
--- Get the highlight background color of the lualine theme for the current colorscheme
|
||||
---@param mode string the neovim mode to get the color of
|
||||
---@param fallback string the color to fallback on if a lualine theme is not present
|
||||
---@return string # The background color of the lualine theme or the fallback parameter if one doesn't exist
|
||||
function M.lualine_mode(mode, fallback)
|
||||
if not vim.g.colors_name then return fallback end
|
||||
local lualine_avail, lualine = pcall(require, "lualine.themes." .. vim.g.colors_name)
|
||||
local lualine_opts = lualine_avail and lualine[mode]
|
||||
return lualine_opts and type(lualine_opts.a) == "table" and lualine_opts.a.bg or fallback
|
||||
end
|
||||
|
||||
--- Get the highlight for the current mode
|
||||
---@return table # the highlight group for the current mode
|
||||
-- @usage local heirline_component = { provider = "Example Provider", hl = require("astronvim.utils.status").hl.mode },
|
||||
function M.mode() return { bg = M.mode_bg() } end
|
||||
|
||||
--- Get the foreground color group for the current mode, good for usage with Heirline surround utility
|
||||
---@return string # the highlight group for the current mode foreground
|
||||
-- @usage local heirline_component = require("heirline.utils").surround({ "|", "|" }, require("astronvim.utils.status").hl.mode_bg, heirline_component),
|
||||
|
||||
function M.mode_bg() return env.modes[vim.fn.mode()][2] end
|
||||
|
||||
--- Get the foreground color group for the current filetype
|
||||
---@return table # the highlight group for the current filetype foreground
|
||||
-- @usage local heirline_component = { provider = require("astronvim.utils.status").provider.fileicon(), hl = require("astronvim.utils.status").hl.filetype_color },
|
||||
function M.filetype_color(self)
|
||||
local devicons_avail, devicons = pcall(require, "nvim-web-devicons")
|
||||
if not devicons_avail then return {} end
|
||||
local _, color = devicons.get_icon_color(
|
||||
vim.fn.fnamemodify(vim.api.nvim_buf_get_name(self and self.bufnr or 0), ":t"),
|
||||
nil,
|
||||
{ default = true }
|
||||
)
|
||||
return { fg = color }
|
||||
end
|
||||
|
||||
--- Merge the color and attributes from user settings for a given name
|
||||
---@param name string, the name of the element to get the attributes and colors for
|
||||
---@param include_bg? boolean whether or not to include background color (Default: false)
|
||||
---@return table # a table of highlight information
|
||||
-- @usage local heirline_component = { provider = "Example Provider", hl = require("astronvim.utils.status").hl.get_attributes("treesitter") },
|
||||
function M.get_attributes(name, include_bg)
|
||||
local hl = env.attributes[name] or {}
|
||||
hl.fg = name .. "_fg"
|
||||
if include_bg then hl.bg = name .. "_bg" end
|
||||
return hl
|
||||
end
|
||||
|
||||
--- Enable filetype color highlight if enabled in icon_highlights.file_icon options
|
||||
---@param name string the icon_highlights.file_icon table element
|
||||
---@return function # for setting hl property in a component
|
||||
-- @usage local heirline_component = { provider = "Example Provider", hl = require("astronvim.utils.status").hl.file_icon("winbar") },
|
||||
function M.file_icon(name)
|
||||
local hl_enabled = env.icon_highlights.file_icon[name]
|
||||
return function(self)
|
||||
if hl_enabled == true or (type(hl_enabled) == "function" and hl_enabled(self)) then
|
||||
return M.filetype_color(self)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
return M
|
||||
Reference in New Issue
Block a user