diff --git a/README.md b/README.md index 1973a0e..5cdda64 100644 --- a/README.md +++ b/README.md @@ -21,10 +21,10 @@ https://user-images.githubusercontent.com/506791/209727111-6b4a11f4-634a-4efa-94 ## Requirements - Neovim 0.10+ -- Optional: - [mini.icons](https://github.com/nvim-mini/mini.nvim/blob/main/readmes/mini-icons.md) - or [nvim-web-devicons](https://github.com/nvim-tree/nvim-web-devicons) for - file icons +- (Optionally) any of the following icon providers: + - [mini.icons](https://github.com/nvim-mini/mini.nvim/blob/main/readmes/mini-icons.md) + - [nvim-web-devicons](https://github.com/nvim-tree/nvim-web-devicons) + - [nonicons.nvim](https://github.com/barrettruth/nonicons.nvim) ## Installation diff --git a/lua/oil/util.lua b/lua/oil/util.lua index d9bca22..cd94729 100644 --- a/lua/oil/util.lua +++ b/lua/oil/util.lua @@ -945,7 +945,32 @@ M.get_icon_provider = function() end end - -- fallback to `nvim-web-devicons` + local has_nonicons, nonicons = pcall(require, 'nonicons') + if has_nonicons and type(nonicons.get) == 'function' then + return function(type, name, conf, ft) + if type == 'directory' then + local icon = nonicons.get('file-directory') + return icon or (conf and conf.directory or ''), 'OilDirIcon' + else + if ft then + local ft_icon = nonicons.get(ft) + if ft_icon then + return ft_icon, 'OilFileIcon' + end + end + local ext = name:match('%.([^%.]+)$') + if ext then + local ext_icon = nonicons.get(ext) + if ext_icon then + return ext_icon, 'OilFileIcon' + end + end + local icon = nonicons.get('file') + return icon or (conf and conf.default_file or ''), 'OilFileIcon' + end + end + end + local has_devicons, devicons = pcall(require, 'nvim-web-devicons') if has_devicons then return function(type, name, conf, ft)