From 4d3b997978b3077c977b046a80523997fbf3fbb2 Mon Sep 17 00:00:00 2001 From: hasecilu Date: Thu, 27 Feb 2025 12:22:13 -0600 Subject: [PATCH 1/2] fix: return color as string --- lua/nvim-web-devicons.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lua/nvim-web-devicons.lua b/lua/nvim-web-devicons.lua index 650fe450..8b2706ac 100644 --- a/lua/nvim-web-devicons.lua +++ b/lua/nvim-web-devicons.lua @@ -191,9 +191,9 @@ local function get_highlight_ctermfg(icon_data) if vim.fn.has "nvim-0.9" == 1 then --- @diagnostic disable-next-line: undefined-field vim.api.keyset.hl_info specifies cterm, not ctermfg - return vim.api.nvim_get_hl(0, { name = higroup, link = false }).ctermfg + return tostring(vim.api.nvim_get_hl(0, { name = higroup, link = false }).ctermfg) else - return vim.api.nvim_get_hl_by_name(higroup, false).foreground ---@diagnostic disable-line: deprecated + return tostring(vim.api.nvim_get_hl_by_name(higroup, false).foreground) ---@diagnostic disable-line: deprecated end end From 437e90bb2c6f41557d061b84e4cfda751af0cf3c Mon Sep 17 00:00:00 2001 From: hasecilu Date: Thu, 27 Feb 2025 12:53:40 -0600 Subject: [PATCH 2/2] feat: allow users to override specific icons Previously if you wanted to change one icon across several extensions/filenames you needed to manually override each instance, now you can target specific icons to simplify config file. --- lua/nvim-web-devicons.lua | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/lua/nvim-web-devicons.lua b/lua/nvim-web-devicons.lua index 8b2706ac..7e6e057a 100644 --- a/lua/nvim-web-devicons.lua +++ b/lua/nvim-web-devicons.lua @@ -239,6 +239,7 @@ function M.setup(opts) local user_operating_system_icons = user_icons.override_by_operating_system local user_desktop_environment_icons = user_icons.override_by_desktop_environment local user_window_manager_icons = user_icons.override_by_window_manager + local user_icon_overrides = user_icons.override_by_icon -- filename matches are case insensitive lowercase_keys(icons_by_filename) @@ -253,7 +254,8 @@ function M.setup(opts) user_file_ext_icons or {}, user_operating_system_icons or {}, user_desktop_environment_icons or {}, - user_window_manager_icons or {} + user_window_manager_icons or {}, + user_icon_overrides or {} ) global_opts.override = vim.tbl_extend( "force", @@ -263,7 +265,8 @@ function M.setup(opts) user_file_ext_icons or {}, user_operating_system_icons or {}, user_desktop_environment_icons or {}, - user_window_manager_icons or {} + user_window_manager_icons or {}, + user_icon_overrides or {} ) if user_filename_icons then @@ -356,6 +359,11 @@ local function get_icon_data(name, ext, opts) icon_data = icons[name] or get_icon_by_extension(name, ext, opts) or (has_default and default_icon) end + -- Check for icon override + if icon_data and global_opts.override[icon_data.icon] then + icon_data = vim.tbl_extend("force", icon_data, global_opts.override[icon_data.icon]) + end + return icon_data end