From 4c1ed8a38a4753a36a384adb7c17ef9caa13510c Mon Sep 17 00:00:00 2001 From: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Wed, 27 May 2026 01:36:48 +0000 Subject: [PATCH] feat: add Nerd Font icons to netrw using mini.icons Add a FileType autocmd for netrw that prepends inline virtual text icons to each file/directory entry using mini.icons. Handles thin, tree, and long listing styles. Icons refresh on TextChanged. Note: requires replace_netrw = false in snacks.explorer config (or snacks not loaded) for netrw to be used. Co-Authored-By: Yeff Yucra <37911404+YeferYV@users.noreply.github.com> --- nvim/init.lua | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/nvim/init.lua b/nvim/init.lua index e643621..6cb7661 100644 --- a/nvim/init.lua +++ b/nvim/init.lua @@ -613,6 +613,45 @@ if not vim.g.vscode then require('mini.icons').setup() require('mini.icons').mock_nvim_web_devicons() require('mini.icons').tweak_lsp_kind( --[[ "replace" ]]) + + --- netrw icons (using mini.icons) + autocmd("FileType", { + pattern = "netrw", + callback = function(ev) + local ns = vim.api.nvim_create_namespace("netrw_icons") + local icons_ok, mini_icons = pcall(require, 'mini.icons') + if not icons_ok then return end + + local function add_icons() + vim.api.nvim_buf_clear_namespace(ev.buf, ns, 0, -1) + local lines = vim.api.nvim_buf_get_lines(ev.buf, 0, -1, false) + for i, line in ipairs(lines) do + if not line:match('^"') and line ~= "" then + local name = line:gsub("^[│├└─| ]+", ""):match("^(%S+)") + if name then + name = name:gsub("[*@]$", "") + local icon, hl + if name:match("/$") then + icon, hl = mini_icons.get('directory', name:gsub("/$", "")) + else + icon, hl = mini_icons.get('file', name) + end + if icon then + vim.api.nvim_buf_set_extmark(ev.buf, ns, i - 1, 0, { + virt_text = {{ icon .. " ", hl }}, + virt_text_pos = "inline", + }) + end + end + end + end + end + + add_icons() + autocmd("TextChanged", { buffer = ev.buf, callback = add_icons }) + end, + }) + require('mini.misc').setup_auto_root() require('mini.misc').setup_restore_cursor() require('mini.notify').setup({ window = { winblend = 0 } --[[ ,lsp_progress = { enable = false } ]] })