retrovim 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (218) hide show
  1. package/.conda/retrovim.yaml +259 -0
  2. package/.conda/terax.icns +0 -0
  3. package/.conda/terax.ico +0 -0
  4. package/.conda/terax.png +0 -0
  5. package/.github/workflows/release.yml +95 -0
  6. package/.gitmodules +3 -0
  7. package/.npm/kanata_touchcursor.js +28 -0
  8. package/.npm/nvim.js +26 -0
  9. package/.npm/yazi.js +26 -0
  10. package/.npm/zsh.js +17 -0
  11. package/.pip/kanata_touchcursor/__init__.py +28 -0
  12. package/.pip/nvim/__init__.py +31 -0
  13. package/.pip/yazi/__init__.py +31 -0
  14. package/.pip/zsh/__init__.py +22 -0
  15. package/CHANGELOG.md +26 -0
  16. package/LICENSE +674 -0
  17. package/README.md +336 -0
  18. package/kanata/touchcursor.kbd +164 -0
  19. package/nvim/init.lua +813 -0
  20. package/nvim/plugins/mini.nvim/.github/DISCUSSION_TEMPLATE/q-a.yml +72 -0
  21. package/nvim/plugins/mini.nvim/.github/ISSUE_TEMPLATE/bug-report.yml +136 -0
  22. package/nvim/plugins/mini.nvim/.github/ISSUE_TEMPLATE/config.yml +5 -0
  23. package/nvim/plugins/mini.nvim/.github/ISSUE_TEMPLATE/feature-request.yml +75 -0
  24. package/nvim/plugins/mini.nvim/.github/PULL_REQUEST_TEMPLATE.md +2 -0
  25. package/nvim/plugins/mini.nvim/.github/workflows/quality-control.yml +150 -0
  26. package/nvim/plugins/mini.nvim/.pre-commit-config.yaml +20 -0
  27. package/nvim/plugins/mini.nvim/.stylua.toml +7 -0
  28. package/nvim/plugins/mini.nvim/.styluaignore +1 -0
  29. package/nvim/plugins/mini.nvim/CHANGELOG.md +1894 -0
  30. package/nvim/plugins/mini.nvim/CODE_OF_CONDUCT.md +132 -0
  31. package/nvim/plugins/mini.nvim/CONTRIBUTING.md +331 -0
  32. package/nvim/plugins/mini.nvim/LICENSE +21 -0
  33. package/nvim/plugins/mini.nvim/MAINTAINING.md +330 -0
  34. package/nvim/plugins/mini.nvim/Makefile +51 -0
  35. package/nvim/plugins/mini.nvim/README.md +261 -0
  36. package/nvim/plugins/mini.nvim/TESTING.md +1011 -0
  37. package/nvim/plugins/mini.nvim/benchmarks/starter/README.md +35 -0
  38. package/nvim/plugins/mini.nvim/benchmarks/starter/benchmark.sh +56 -0
  39. package/nvim/plugins/mini.nvim/benchmarks/starter/init-files/init_dashboard-alpha.lua +21 -0
  40. package/nvim/plugins/mini.nvim/benchmarks/starter/init-files/init_dashboard-original.lua +17 -0
  41. package/nvim/plugins/mini.nvim/benchmarks/starter/init-files/init_dashboard-starter.lua +18 -0
  42. package/nvim/plugins/mini.nvim/benchmarks/starter/init-files/init_empty.lua +4 -0
  43. package/nvim/plugins/mini.nvim/benchmarks/starter/init-files/init_starter-default.lua +7 -0
  44. package/nvim/plugins/mini.nvim/benchmarks/starter/init-files/init_startify-alpha.lua +10 -0
  45. package/nvim/plugins/mini.nvim/benchmarks/starter/init-files/init_startify-original.lua +7 -0
  46. package/nvim/plugins/mini.nvim/benchmarks/starter/init-files/init_startify-starter.lua +20 -0
  47. package/nvim/plugins/mini.nvim/benchmarks/starter/install.sh +10 -0
  48. package/nvim/plugins/mini.nvim/benchmarks/starter/make_summary.py +68 -0
  49. package/nvim/plugins/mini.nvim/benchmarks/starter/startup-summary.md +10 -0
  50. package/nvim/plugins/mini.nvim/colors/miniautumn.lua +55 -0
  51. package/nvim/plugins/mini.nvim/colors/minicyan.lua +95 -0
  52. package/nvim/plugins/mini.nvim/colors/minischeme.lua +95 -0
  53. package/nvim/plugins/mini.nvim/colors/minispring.lua +53 -0
  54. package/nvim/plugins/mini.nvim/colors/minisummer.lua +49 -0
  55. package/nvim/plugins/mini.nvim/colors/miniwinter.lua +51 -0
  56. package/nvim/plugins/mini.nvim/colors/randomhue.lua +16 -0
  57. package/nvim/plugins/mini.nvim/doc/mini-ai.txt +889 -0
  58. package/nvim/plugins/mini.nvim/doc/mini-align.txt +923 -0
  59. package/nvim/plugins/mini.nvim/doc/mini-animate.txt +937 -0
  60. package/nvim/plugins/mini.nvim/doc/mini-base16.txt +285 -0
  61. package/nvim/plugins/mini.nvim/doc/mini-basics.txt +359 -0
  62. package/nvim/plugins/mini.nvim/doc/mini-bracketed.txt +622 -0
  63. package/nvim/plugins/mini.nvim/doc/mini-bufremove.txt +123 -0
  64. package/nvim/plugins/mini.nvim/doc/mini-clue.txt +760 -0
  65. package/nvim/plugins/mini.nvim/doc/mini-cmdline.txt +392 -0
  66. package/nvim/plugins/mini.nvim/doc/mini-colors.txt +880 -0
  67. package/nvim/plugins/mini.nvim/doc/mini-comment.txt +230 -0
  68. package/nvim/plugins/mini.nvim/doc/mini-completion.txt +477 -0
  69. package/nvim/plugins/mini.nvim/doc/mini-cursorword.txt +105 -0
  70. package/nvim/plugins/mini.nvim/doc/mini-deps.txt +590 -0
  71. package/nvim/plugins/mini.nvim/doc/mini-diff.txt +661 -0
  72. package/nvim/plugins/mini.nvim/doc/mini-doc.txt +434 -0
  73. package/nvim/plugins/mini.nvim/doc/mini-extra.txt +856 -0
  74. package/nvim/plugins/mini.nvim/doc/mini-files.txt +1018 -0
  75. package/nvim/plugins/mini.nvim/doc/mini-fuzzy.txt +160 -0
  76. package/nvim/plugins/mini.nvim/doc/mini-git.txt +425 -0
  77. package/nvim/plugins/mini.nvim/doc/mini-hipatterns.txt +489 -0
  78. package/nvim/plugins/mini.nvim/doc/mini-hues.txt +420 -0
  79. package/nvim/plugins/mini.nvim/doc/mini-icons.txt +508 -0
  80. package/nvim/plugins/mini.nvim/doc/mini-indentscope.txt +485 -0
  81. package/nvim/plugins/mini.nvim/doc/mini-input.txt +932 -0
  82. package/nvim/plugins/mini.nvim/doc/mini-jump.txt +202 -0
  83. package/nvim/plugins/mini.nvim/doc/mini-jump2d.txt +525 -0
  84. package/nvim/plugins/mini.nvim/doc/mini-keymap.txt +449 -0
  85. package/nvim/plugins/mini.nvim/doc/mini-map.txt +717 -0
  86. package/nvim/plugins/mini.nvim/doc/mini-misc.txt +431 -0
  87. package/nvim/plugins/mini.nvim/doc/mini-move.txt +181 -0
  88. package/nvim/plugins/mini.nvim/doc/mini-notify.txt +434 -0
  89. package/nvim/plugins/mini.nvim/doc/mini-nvim.txt +431 -0
  90. package/nvim/plugins/mini.nvim/doc/mini-operators.txt +472 -0
  91. package/nvim/plugins/mini.nvim/doc/mini-pairs.txt +346 -0
  92. package/nvim/plugins/mini.nvim/doc/mini-pick.txt +1535 -0
  93. package/nvim/plugins/mini.nvim/doc/mini-sessions.txt +239 -0
  94. package/nvim/plugins/mini.nvim/doc/mini-snippets.txt +1291 -0
  95. package/nvim/plugins/mini.nvim/doc/mini-splitjoin.txt +536 -0
  96. package/nvim/plugins/mini.nvim/doc/mini-starter.txt +618 -0
  97. package/nvim/plugins/mini.nvim/doc/mini-statusline.txt +361 -0
  98. package/nvim/plugins/mini.nvim/doc/mini-surround.txt +863 -0
  99. package/nvim/plugins/mini.nvim/doc/mini-tabline.txt +151 -0
  100. package/nvim/plugins/mini.nvim/doc/mini-test.txt +966 -0
  101. package/nvim/plugins/mini.nvim/doc/mini-trailspace.txt +91 -0
  102. package/nvim/plugins/mini.nvim/doc/mini-visits.txt +937 -0
  103. package/nvim/plugins/mini.nvim/logo.png +0 -0
  104. package/nvim/plugins/mini.nvim/lua/mini/ai.lua +2244 -0
  105. package/nvim/plugins/mini.nvim/lua/mini/align.lua +2076 -0
  106. package/nvim/plugins/mini.nvim/lua/mini/animate.lua +2127 -0
  107. package/nvim/plugins/mini.nvim/lua/mini/base16.lua +1752 -0
  108. package/nvim/plugins/mini.nvim/lua/mini/basics.lua +772 -0
  109. package/nvim/plugins/mini.nvim/lua/mini/bracketed.lua +2013 -0
  110. package/nvim/plugins/mini.nvim/lua/mini/bufremove.lua +283 -0
  111. package/nvim/plugins/mini.nvim/lua/mini/clue.lua +2096 -0
  112. package/nvim/plugins/mini.nvim/lua/mini/cmdline.lua +1182 -0
  113. package/nvim/plugins/mini.nvim/lua/mini/colors.lua +2483 -0
  114. package/nvim/plugins/mini.nvim/lua/mini/comment.lua +586 -0
  115. package/nvim/plugins/mini.nvim/lua/mini/completion.lua +2094 -0
  116. package/nvim/plugins/mini.nvim/lua/mini/cursorword.lua +311 -0
  117. package/nvim/plugins/mini.nvim/lua/mini/deps.lua +1660 -0
  118. package/nvim/plugins/mini.nvim/lua/mini/diff.lua +1938 -0
  119. package/nvim/plugins/mini.nvim/lua/mini/doc.lua +1371 -0
  120. package/nvim/plugins/mini.nvim/lua/mini/extra.lua +2290 -0
  121. package/nvim/plugins/mini.nvim/lua/mini/files.lua +3145 -0
  122. package/nvim/plugins/mini.nvim/lua/mini/fuzzy.lua +356 -0
  123. package/nvim/plugins/mini.nvim/lua/mini/git.lua +1737 -0
  124. package/nvim/plugins/mini.nvim/lua/mini/hipatterns.lua +1042 -0
  125. package/nvim/plugins/mini.nvim/lua/mini/hues.lua +2088 -0
  126. package/nvim/plugins/mini.nvim/lua/mini/icons.lua +2254 -0
  127. package/nvim/plugins/mini.nvim/lua/mini/indentscope.lua +1158 -0
  128. package/nvim/plugins/mini.nvim/lua/mini/init.lua +427 -0
  129. package/nvim/plugins/mini.nvim/lua/mini/input.lua +2183 -0
  130. package/nvim/plugins/mini.nvim/lua/mini/jump.lua +609 -0
  131. package/nvim/plugins/mini.nvim/lua/mini/jump2d.lua +1244 -0
  132. package/nvim/plugins/mini.nvim/lua/mini/keymap.lua +880 -0
  133. package/nvim/plugins/mini.nvim/lua/mini/map.lua +1709 -0
  134. package/nvim/plugins/mini.nvim/lua/mini/misc.lua +969 -0
  135. package/nvim/plugins/mini.nvim/lua/mini/move.lua +509 -0
  136. package/nvim/plugins/mini.nvim/lua/mini/notify.lua +938 -0
  137. package/nvim/plugins/mini.nvim/lua/mini/operators.lua +1349 -0
  138. package/nvim/plugins/mini.nvim/lua/mini/pairs.lua +657 -0
  139. package/nvim/plugins/mini.nvim/lua/mini/pick.lua +3876 -0
  140. package/nvim/plugins/mini.nvim/lua/mini/sessions.lua +689 -0
  141. package/nvim/plugins/mini.nvim/lua/mini/snippets.lua +2828 -0
  142. package/nvim/plugins/mini.nvim/lua/mini/splitjoin.lua +1132 -0
  143. package/nvim/plugins/mini.nvim/lua/mini/starter.lua +1599 -0
  144. package/nvim/plugins/mini.nvim/lua/mini/statusline.lua +686 -0
  145. package/nvim/plugins/mini.nvim/lua/mini/surround.lua +2388 -0
  146. package/nvim/plugins/mini.nvim/lua/mini/tabline.lua +564 -0
  147. package/nvim/plugins/mini.nvim/lua/mini/test.lua +2516 -0
  148. package/nvim/plugins/mini.nvim/lua/mini/trailspace.lua +215 -0
  149. package/nvim/plugins/mini.nvim/lua/mini/visits.lua +1577 -0
  150. package/nvim/plugins/mini.nvim/readmes/mini-ai.md +190 -0
  151. package/nvim/plugins/mini.nvim/readmes/mini-align.md +203 -0
  152. package/nvim/plugins/mini.nvim/readmes/mini-animate.md +214 -0
  153. package/nvim/plugins/mini.nvim/readmes/mini-base16.md +198 -0
  154. package/nvim/plugins/mini.nvim/readmes/mini-basics.md +184 -0
  155. package/nvim/plugins/mini.nvim/readmes/mini-bracketed.md +193 -0
  156. package/nvim/plugins/mini.nvim/readmes/mini-bufremove.md +139 -0
  157. package/nvim/plugins/mini.nvim/readmes/mini-clue.md +260 -0
  158. package/nvim/plugins/mini.nvim/readmes/mini-cmdline.md +183 -0
  159. package/nvim/plugins/mini.nvim/readmes/mini-colors.md +169 -0
  160. package/nvim/plugins/mini.nvim/readmes/mini-comment.md +183 -0
  161. package/nvim/plugins/mini.nvim/readmes/mini-completion.md +217 -0
  162. package/nvim/plugins/mini.nvim/readmes/mini-cursorword.md +137 -0
  163. package/nvim/plugins/mini.nvim/readmes/mini-deps.md +271 -0
  164. package/nvim/plugins/mini.nvim/readmes/mini-diff.md +289 -0
  165. package/nvim/plugins/mini.nvim/readmes/mini-doc.md +198 -0
  166. package/nvim/plugins/mini.nvim/readmes/mini-extra.md +158 -0
  167. package/nvim/plugins/mini.nvim/readmes/mini-files.md +247 -0
  168. package/nvim/plugins/mini.nvim/readmes/mini-fuzzy.md +134 -0
  169. package/nvim/plugins/mini.nvim/readmes/mini-git.md +168 -0
  170. package/nvim/plugins/mini.nvim/readmes/mini-hipatterns.md +176 -0
  171. package/nvim/plugins/mini.nvim/readmes/mini-hues.md +285 -0
  172. package/nvim/plugins/mini.nvim/readmes/mini-icons.md +183 -0
  173. package/nvim/plugins/mini.nvim/readmes/mini-indentscope.md +191 -0
  174. package/nvim/plugins/mini.nvim/readmes/mini-input.md +163 -0
  175. package/nvim/plugins/mini.nvim/readmes/mini-jump.md +161 -0
  176. package/nvim/plugins/mini.nvim/readmes/mini-jump2d.md +197 -0
  177. package/nvim/plugins/mini.nvim/readmes/mini-keymap.md +205 -0
  178. package/nvim/plugins/mini.nvim/readmes/mini-map.md +191 -0
  179. package/nvim/plugins/mini.nvim/readmes/mini-misc.md +145 -0
  180. package/nvim/plugins/mini.nvim/readmes/mini-move.md +163 -0
  181. package/nvim/plugins/mini.nvim/readmes/mini-notify.md +175 -0
  182. package/nvim/plugins/mini.nvim/readmes/mini-operators.md +193 -0
  183. package/nvim/plugins/mini.nvim/readmes/mini-pairs.md +158 -0
  184. package/nvim/plugins/mini.nvim/readmes/mini-pick.md +340 -0
  185. package/nvim/plugins/mini.nvim/readmes/mini-sessions.md +164 -0
  186. package/nvim/plugins/mini.nvim/readmes/mini-snippets.md +373 -0
  187. package/nvim/plugins/mini.nvim/readmes/mini-splitjoin.md +194 -0
  188. package/nvim/plugins/mini.nvim/readmes/mini-starter.md +176 -0
  189. package/nvim/plugins/mini.nvim/readmes/mini-statusline.md +155 -0
  190. package/nvim/plugins/mini.nvim/readmes/mini-surround.md +190 -0
  191. package/nvim/plugins/mini.nvim/readmes/mini-tabline.md +156 -0
  192. package/nvim/plugins/mini.nvim/readmes/mini-test.md +175 -0
  193. package/nvim/plugins/mini.nvim/readmes/mini-trailspace.md +137 -0
  194. package/nvim/plugins/mini.nvim/readmes/mini-visits.md +243 -0
  195. package/nvim/plugins/mini.nvim/scripts/dual_log.sh +13 -0
  196. package/nvim/plugins/mini.nvim/scripts/dual_push.sh +15 -0
  197. package/nvim/plugins/mini.nvim/scripts/dual_release.sh +102 -0
  198. package/nvim/plugins/mini.nvim/scripts/dual_sync.sh +115 -0
  199. package/nvim/plugins/mini.nvim/scripts/init-deps-example.lua +59 -0
  200. package/nvim/plugins/mini.nvim/scripts/lint-filename-length.sh +16 -0
  201. package/nvim/plugins/mini.nvim/scripts/lintcommit-ci.sh +18 -0
  202. package/nvim/plugins/mini.nvim/scripts/lintcommit.lua +393 -0
  203. package/nvim/plugins/mini.nvim/scripts/minidoc.lua +57 -0
  204. package/nvim/plugins/mini.nvim/scripts/minimal_init.lua +28 -0
  205. package/nvim/plugins/mini.nvim/scripts/minitest.lua +4 -0
  206. package/package.json +16 -0
  207. package/pyproject.toml +43 -0
  208. package/yazi/init.lua +12 -0
  209. package/yazi/keymap.toml +114 -0
  210. package/yazi/lesskey +5 -0
  211. package/yazi/plugins/bookmarks.yazi/main.lua +86 -0
  212. package/yazi/plugins/cd-git-root.yazi/main.lua +31 -0
  213. package/yazi/plugins/smart-enter.yazi/main.lua +11 -0
  214. package/yazi/theme.toml +26 -0
  215. package/yazi/yazi.toml +15 -0
  216. package/zsh/.zshrc +145 -0
  217. package/zsh/starship.toml +20 -0
  218. package/zsh/zsh-patina.toml +2 -0
@@ -0,0 +1,2254 @@
1
+ --- *mini.icons* Icon provider
2
+ ---
3
+ --- MIT License Copyright (c) 2024 Evgeni Chasnovski
4
+
5
+ --- Features:
6
+ ---
7
+ --- - Provide icons with their highlighting via a single |MiniIcons.get()| for
8
+ --- various categories: filetype, file/directory path, extension, operating
9
+ --- system, LSP kind values. Icons and category defaults can be overridden.
10
+ ---
11
+ --- - Configurable styles: "glyph" (icon glyphs) or "ascii" (non-glyph fallback).
12
+ ---
13
+ --- - Fixed set of highlight groups (linked to built-in groups by default) for
14
+ --- better blend with color scheme.
15
+ ---
16
+ --- - Caching for maximum performance.
17
+ ---
18
+ --- - Integration with |vim.filetype.add()| and |vim.filetype.match()|.
19
+ ---
20
+ --- - Mocking methods of `nvim-tree/nvim-web-devicons` for better integrations
21
+ --- with plugins outside |mini.nvim|. See |MiniIcons.mock_nvim_web_devicons()|.
22
+ ---
23
+ --- - Tweaking built-in maps for "LSP kind" to include icons. In particular, this
24
+ --- makes |mini.completion| use icons in LSP step. See |MiniIcons.tweak_lsp_kind()|.
25
+ ---
26
+ --- Notes:
27
+ ---
28
+ --- - It is not a goal to become a collection of icons for as much use cases as
29
+ --- possible. There are specific criteria for icon data to be included as
30
+ --- built-in in each category (see |MiniIcons.get()|).
31
+ --- The main supported category is "filetype".
32
+ ---
33
+ --- Sources with more details:
34
+ --- - |MiniIcons-in-other-plugins| (for plugin authors)
35
+ ---
36
+ --- # Dependencies ~
37
+ ---
38
+ --- Suggested dependencies:
39
+ ---
40
+ --- - Terminal emulator that supports showing special utf8 glyphs, possibly with
41
+ --- "overflow" view (displaying is done not in one but two visual cells).
42
+ --- Most modern feature-rich terminal emulators support this out of the box:
43
+ --- WezTerm, Kitty, Alacritty, iTerm2, Ghostty.
44
+ --- Not having "overflow" feature only results into smaller icons.
45
+ --- Not having support for special utf8 glyphs will result into seemingly
46
+ --- random symbols (or question mark squares) instead of icon glyphs.
47
+ ---
48
+ --- - Font that supports Nerd Fonts (https://www.nerdfonts.com) icons from
49
+ --- version 3.0.0+ (in particular `nf-md-*` class).
50
+ --- This should be configured on terminal emulator level either by using font
51
+ --- patched with Nerd Fonts icons or using `NerdFontsSymbolsOnly` font as
52
+ --- a fallback for glyphs that are not supported in main font.
53
+ ---
54
+ --- If using terminal emulator and/or font with icon support is impossible, use
55
+ --- `config.style = 'ascii'`. It will use a (less visually appealing) set of
56
+ --- non-glyph icons.
57
+ ---
58
+ --- # Setup ~
59
+ ---
60
+ --- This module needs a setup with `require('mini.icons').setup({})` (replace `{}`
61
+ --- with your `config` table). It will create global Lua table `MiniIcons` which you
62
+ --- can use for scripting or manually (with `:lua MiniIcons.*`).
63
+ ---
64
+ --- See |MiniIcons.config| for `config` structure and default values.
65
+ ---
66
+ --- # Comparisons ~
67
+ ---
68
+ --- - [nvim-tree/nvim-web-devicons](https://github.com/nvim-tree/nvim-web-devicons) (for users):
69
+ --- - Sets individual colors to each icon with separate specific highlight
70
+ --- groups, while this modules uses fixed set of highlight groups.
71
+ --- This makes it easier to customize in bulk and actually blend with any
72
+ --- color scheme.
73
+ ---
74
+ --- - This module prefers richer set of `nf-md-*` (from "Material design" set)
75
+ --- Nerd Fonts icons while `nvim-web-devicons` mostly prefers `nf-dev-*`
76
+ --- (from "devicons" set).
77
+ ---
78
+ --- - Supported categories are slightly different (with much overlap).
79
+ ---
80
+ --- - Both support customization of any icon. Only this module supports
81
+ --- customization of default ones per supported category.
82
+ ---
83
+ --- - Using this module can occasionally result in small delays when used
84
+ --- synchronously for many times to get icons for not typical files (like
85
+ --- in |mini.files|). This is due to using |vim.filetype.match()| fallback and
86
+ --- is present only during first call, as value is cached for later uses.
87
+ ---
88
+ --- - This module supports different icon styles (like "ascii" for when using
89
+ --- glyphs is not possible), while `nvim-web-devicons` does not.
90
+ ---
91
+ --- - This module provides |MiniIcons.mock_nvim_web_devicons()| function which
92
+ --- when called imitates installed `nvim-web-devicons` plugin to support
93
+ --- other plugins which do not provide |mini.icons| yet.
94
+ ---
95
+ --- - [nvim-tree/nvim-web-devicons](https://github.com/nvim-tree/nvim-web-devicons) (for plugin developers):
96
+ --- - Both have main "get icon" type of function:
97
+ --- - Both return tuple of icon and highlight group strings.
98
+ ---
99
+ --- - This module always returns icon data possibly falling back to
100
+ --- user's configured default, while `nvim-web-devicons` is able to
101
+ --- return `nil`. This module's approach is more aligned with the most
102
+ --- common use case of always showing an icon instead or near some data.
103
+ --- There is a third returned value indicating if output is a result of
104
+ --- a fallback (see |MiniIcons.get()|).
105
+ ---
106
+ --- - This module uses |vim.filetype.match()| as a fallback for "file"
107
+ --- and "extension" categories, while `nvim-web-devicons` completely
108
+ --- relies on the manually maintained tables of supported filenames
109
+ --- and extensions.
110
+ --- Using fallback results in a wider support and deeper integration
111
+ --- with Neovim's filetype detection at the cost of occasional slower
112
+ --- first call. The difference is reduced as much as is reasonable by
113
+ --- preferring faster file extension resolution over filetype matching.
114
+ ---
115
+ --- - This module caches all its return values resulting in really fast
116
+ --- next same argument calls, while `nvim-web-devicons` doesn't do that.
117
+ ---
118
+ --- - This module works with full file/directory paths as input.
119
+ ---
120
+ --- - Different sets of supported categories (see |MiniIcons.config|):
121
+ --- - Both support "file", "extension", "filetype", "operating system".
122
+ --- Albeit in different volumes: `nvim-web-devicons` covers more
123
+ --- cases for "operating system", while this module has better eventual
124
+ --- coverage for other cases.
125
+ ---
126
+ --- - This module supports "directory" and "lsp" categories.
127
+ ---
128
+ --- - `nvim-web-devicons` covers "desktop environment" and "window
129
+ --- management" categories. This modules does not include them due to
130
+ --- relatively low demand.
131
+ ---
132
+ --- - [onsails/lspkind.nvim](https://github.com/onsails/lspkind.nvim):
133
+ --- - Provides icons only for `CompletionItemKind`, while this module also has
134
+ --- icons for `SymbolKind` and other non-LSP categories.
135
+ --- - Provides dedicated formatting function for `hrsh7th/nvim-cmp` while this
136
+ --- module intentionally does not (adding icons should be straightforward
137
+ --- to manually implement while anything else is out of scope).
138
+ ---
139
+ --- # Highlight groups ~
140
+ --- *MiniIcons-hl-groups*
141
+ ---
142
+ --- Only the following set of highlight groups is used as icon highlight.
143
+ --- It is recommended that they all only define colored foreground:
144
+ ---
145
+ --- - `MiniIconsAzure` - azure.
146
+ --- - `MiniIconsBlue` - blue.
147
+ --- - `MiniIconsCyan` - cyan.
148
+ --- - `MiniIconsGreen` - green.
149
+ --- - `MiniIconsGrey` - grey.
150
+ --- - `MiniIconsOrange` - orange.
151
+ --- - `MiniIconsPurple` - purple.
152
+ --- - `MiniIconsRed` - red.
153
+ --- - `MiniIconsYellow` - yellow.
154
+ ---
155
+ --- To change any highlight group, set it directly with |nvim_set_hl()|.
156
+ ---
157
+ --- # Using in other plugins ~
158
+ --- *MiniIcons-in-other-plugins*
159
+ ---
160
+ --- - Perform a `_G.MiniIcons ~= nil` check before using any feature. This ensures
161
+ --- that user explicitly set up the module.
162
+ ---
163
+ --- - Use |MiniIcons.get()| function to get icon string and more data about it.
164
+ ---
165
+ --- - For file icons prefer using full path instead of relative or only basename.
166
+ --- It makes a difference if path matches pattern that uses parent directories.
167
+ --- The |MiniIcons.config| has an example of that.
168
+ ---@tag MiniIcons
169
+
170
+ ---@diagnostic disable:undefined-field
171
+ ---@diagnostic disable:discard-returns
172
+ ---@diagnostic disable:unused-local
173
+ ---@diagnostic disable:cast-local-type
174
+ ---@diagnostic disable:undefined-doc-name
175
+ ---@diagnostic disable:luadoc-miss-type-name
176
+
177
+ -- Module definition ==========================================================
178
+ local MiniIcons = {}
179
+ local H = {}
180
+
181
+ --- Module setup
182
+ ---
183
+ ---@param config table|nil Module config table. See |MiniIcons.config|.
184
+ ---
185
+ ---@usage >lua
186
+ --- require('mini.icons').setup() -- use default config
187
+ --- -- OR
188
+ --- require('mini.icons').setup({}) -- replace {} with your config table
189
+ --- <
190
+ MiniIcons.setup = function(config)
191
+ -- TODO: Remove after Neovim=0.9 support is dropped
192
+ if vim.fn.has('nvim-0.10') == 0 then
193
+ vim.notify(
194
+ '(mini.icons) Neovim<0.10 is soft deprecated (module works but is not supported).'
195
+ .. " It will be deprecated after the next 'mini.nvim' release (module might not work)."
196
+ .. ' Please update your Neovim version.'
197
+ )
198
+ end
199
+
200
+ -- Export module
201
+ _G.MiniIcons = MiniIcons
202
+
203
+ -- Setup config
204
+ config = H.setup_config(config)
205
+
206
+ -- Apply config
207
+ H.apply_config(config)
208
+
209
+ -- Define behavior
210
+ H.create_autocommands()
211
+
212
+ -- Create default highlighting
213
+ H.create_default_hl()
214
+ end
215
+
216
+ --stylua: ignore
217
+ --- Defaults ~
218
+ ---@eval return MiniDoc.afterlines_to_code(MiniDoc.current.eval_section)
219
+ ---@text # Style ~
220
+ ---
221
+ --- `config.style` is a string defining which icon style to use. It can be:
222
+ --- - `'glyph'` (default) - use glyph icons (like 󰈔 and 󰉋 ).
223
+ --- - `'ascii'` - use fallback ASCII-compatible icons. Those are computed as
224
+ --- an upper first character of the icon's resolved name inside its category.
225
+ --- Examples: >lua
226
+ ---
227
+ --- MiniIcons.get('file', 'Makefile') -- Has `'M'` as icon
228
+ --- MiniIcons.get('extension', 'lua') -- Has `'L'` as icon
229
+ --- MiniIcons.get('file', 'file.lua') -- Has `'L'` as icon; it is resolved to
230
+ --- -- come from 'lua' 'extension' category
231
+ --- MiniIcons.get('file', 'myfile') -- Has `'F'` as icon; it is resolved to
232
+ --- -- come from 'file' 'default' category
233
+ --- <
234
+ --- # Customization per category ~
235
+ ---
236
+ --- The following entries can be used to customize icons for supported categories:
237
+ --- - `config.default`
238
+ --- - `config.directory`
239
+ --- - `config.extension`
240
+ --- - `config.file`
241
+ --- - `config.filetype`
242
+ --- - `config.lsp`
243
+ --- - `config.os`
244
+ ---
245
+ --- Customization should be done by supplying a table with <glyph> (icon glyph)
246
+ --- and/or <hl> (name of highlight group) string fields as a value for an icon
247
+ --- name entry. Example: >lua
248
+ ---
249
+ --- require('mini.icons').setup({
250
+ --- default = {
251
+ --- -- Override default glyph for "file" category (reuse highlight group)
252
+ --- file = { glyph = '󰈤' },
253
+ --- },
254
+ --- extension = {
255
+ --- -- Override highlight group (not necessarily from 'mini.icons')
256
+ --- lua = { hl = 'Special' },
257
+ ---
258
+ --- -- Add icons for custom extension. This will also be used in
259
+ --- -- 'file' category for input like 'file.my.ext'.
260
+ --- ['my.ext'] = { glyph = '󰻲', hl = 'MiniIconsRed' },
261
+ --- },
262
+ --- })
263
+ --- <
264
+ --- Notes:
265
+ --- - These customizations only take effect inside |MiniIcons.setup()| call.
266
+ --- Changing interactively via `:lua MiniIcons.config.xxx = { ... }` does not work
267
+ --- for performance reasons.
268
+ --- - Use lower case names for categories which are matched ignoring case.
269
+ --- See |MiniIcons.get()| for more details.
270
+ ---
271
+ --- # Using extension during file resolution ~
272
+ ---
273
+ --- `config.use_file_extension` is a function which can be used to control which
274
+ --- extensions will be considered as a source of icon data during "file" category
275
+ --- resolution (see |MiniIcons.get()| for more details).
276
+ --- Default: function which always returns `true` (i.e. consider all extensions).
277
+ ---
278
+ --- Will be called once for the biggest suffix after dot found in the file name.
279
+ --- The arguments will be `ext` (found extension; lowercase) and `file` (input for
280
+ --- which icon is computed; as is). Should explicitly return `true` if `ext` is to
281
+ --- be considered (i.e. call `MiniIcons.get('extension', ext)` and use its
282
+ --- output if it is not default). Otherwise extension won't be even considered.
283
+ ---
284
+ --- The primary use case for this setting is to ensure that some extensions are
285
+ --- ignored in order for resolution to reach |vim.filetype.match()| stage. This
286
+ --- is needed if filetype detection has been setup for files with recognizable
287
+ --- extension and conflicting icons (which you want to use). Note: if problematic
288
+ --- filetype detection only involves file names that are known in advance, prefer
289
+ --- using `config.file` customization.
290
+ ---
291
+ --- Example: >lua
292
+ ---
293
+ --- -- Built-in filetype detection recognizes files like "queries/.*%.scm"
294
+ --- -- as "query" filetype. However, without special setup, 'mini.icons' will
295
+ --- -- use "scm" extension to resolve as Scheme file. Here is a setup to ignore
296
+ --- -- "scm" extension and completely rely on `vim.filetype.match()` fallback.
297
+ --- require('mini.icons').setup({
298
+ --- -- Check last letters explicitly to account for dots in file name
299
+ --- use_file_extension = function(ext) return ext:sub(-3) ~= 'scm' end
300
+ --- })
301
+ ---
302
+ --- -- Other common choices for extensions to ignore: "yml", "json", "txt".
303
+ --- <
304
+ MiniIcons.config = {
305
+ -- Icon style: 'glyph' or 'ascii'
306
+ style = 'glyph',
307
+
308
+ -- Customize per category. See `:h MiniIcons.config` for details.
309
+ default = {},
310
+ directory = {},
311
+ extension = {},
312
+ file = {},
313
+ filetype = {},
314
+ lsp = {},
315
+ os = {},
316
+
317
+ -- Control which extensions will be considered during "file" resolution
318
+ use_file_extension = function(ext, file) return true end,
319
+ }
320
+ --minidoc_afterlines_end
321
+
322
+ --- Get icon data
323
+ ---
324
+ --- Usage example: >lua
325
+ ---
326
+ --- -- Results into `icon='󰢱'`, `hl='MiniIconsAzure'`, `is_default=false`
327
+ --- local icon, hl, is_default = MiniIcons.get('file', 'file.lua')
328
+ --- <
329
+ --- Notes:
330
+ --- - Always returns some data, even if icon name is not explicitly supported
331
+ --- within target category. Category "default" is used as a fallback. Use third
332
+ --- output value to check if this particular case is a result of a fallback.
333
+ ---
334
+ --- - Glyphs are explicitly preferred (when reasonable) from a richer set of
335
+ --- `nf-md-*` class ("Material design" set) of Nerd Fonts icons.
336
+ ---
337
+ --- - Output is cached after the first call to increase performance of next calls
338
+ --- with same arguments. To reset cache, call |MiniIcons.setup()|.
339
+ ---
340
+ --- - To increase first call performance for "extension" and "file" categories,
341
+ --- add frequently used values in |MiniIcons.config|. They will be preferred
342
+ --- over executing |vim.filetype.match()|.
343
+ ---
344
+ --- - Matching icon name for "file" and "directory" categories is done exactly
345
+ --- and respecting case. Others are done ignoring case.
346
+ ---
347
+ ---@param category string Category name. Supported categories:
348
+ --- - `'default'` - icon data used as fallback for any category.
349
+ --- Icon names:
350
+ --- - <Input>: any supported category name.
351
+ --- - <Built-in>: only supported category names.
352
+ ---
353
+ --- Examples: >lua
354
+ ---
355
+ --- MiniIcons.get('default', 'file')
356
+ --- <
357
+ --- - `'directory'` - icon data for directory path.
358
+ --- Icon names:
359
+ --- - <Input>: any string, but only basename is used. Works with not present
360
+ --- paths (no check is done).
361
+ --- - <Built-in>: popular directory names not tied to language/software
362
+ --- (with few notable exceptions like Neovim, Git, etc.).
363
+ ---
364
+ --- Examples: >lua
365
+ ---
366
+ --- -- All of these will result in the same output
367
+ --- MiniIcons.get('directory', '.config')
368
+ --- MiniIcons.get('directory', '~/.config')
369
+ --- MiniIcons.get('directory', '/home/user/.config')
370
+ ---
371
+ --- -- Results in different output
372
+ --- MiniIcons.get('directory', '.Config')
373
+ --- <
374
+ --- - `'extension'` - icon data for extension.
375
+ --- Icon names:
376
+ --- - <Input>: any string (without extra dot prefix).
377
+ --- - <Built-in>: popular extensions without associated filetype plus a set
378
+ --- for which filetype detection gives not good enough result.
379
+ ---
380
+ --- Icon data is attempted to be resolved in the following order:
381
+ --- - List of user configured and built-in extensions (for better results).
382
+ --- Run `:=MiniIcons.list('extension')` to see them.
383
+ --- Used also if present as suffix after the dot (widest one preferred).
384
+ --- - Filetype as a result of |vim.filetype.match()| with placeholder
385
+ --- file name. Uses icon data from "filetype" category.
386
+ ---
387
+ --- Examples: >lua
388
+ ---
389
+ --- -- All of these will result in the same output
390
+ --- MiniIcons.get('extension', 'lua')
391
+ --- MiniIcons.get('extension', 'LUA')
392
+ --- MiniIcons.get('extension', 'my.lua')
393
+ --- <
394
+ --- - `'file'` - icon data for file path.
395
+ --- Icon names:
396
+ --- - <Input>: any string. Works with not present paths (no check is done).
397
+ --- - <Built-in>: popular file names not tied to language/software
398
+ --- (with few notable exceptions like Neovim, Git, etc.) plus a set which
399
+ --- has recognizable extension but has special detectable filetype.
400
+ ---
401
+ --- Icon data is attempted to be resolved in the following order:
402
+ --- - List of user configured and built-in file names (matched to basename
403
+ --- of the input exactly). Run `:=MiniIcons.list('file')` to see them.
404
+ --- - Basename extension:
405
+ --- - Matched directly as `get('extension', ext)`, where `ext` is the
406
+ --- widest suffix after the dot.
407
+ --- - Considered only if `config.use_file_extension` returned `true`.
408
+ --- - Only recognizable extensions (i.e. not default fallback) are used.
409
+ --- - Filetype as a result of |vim.filetype.match()| with full input (not
410
+ --- basename) as `filename`. Uses icon data from "filetype" category.
411
+ ---
412
+ --- Examples: >lua
413
+ ---
414
+ --- -- All of these will result in the same output
415
+ --- MiniIcons.get('file', 'init.lua')
416
+ --- MiniIcons.get('file', '~/.config/nvim/init.lua')
417
+ --- MiniIcons.get('file', '/home/user/.config/nvim/init.lua')
418
+ ---
419
+ --- -- Results in different output
420
+ --- MiniIcons.get('file', 'Init.lua')
421
+ --- MiniIcons.get('file', 'init.LUA')
422
+ ---
423
+ --- -- Respects full path input in `vim.filetype.match()`
424
+ --- MiniIcons.get('file', '.git/info/attributes')
425
+ --- <
426
+ --- - `'filetype'` - icon data for |'filetype'| values.
427
+ --- Icon names:
428
+ --- - <Input>: any string.
429
+ --- - <Built-in>: any filetype that is reasonably used in Neovim ecosystem.
430
+ --- This category is intended as a widest net for supporting use cases.
431
+ --- Users are encouraged to have a specific filetype detection set up.
432
+ ---
433
+ --- Examples: >lua
434
+ ---
435
+ --- MiniIcons.get('filetype', 'lua')
436
+ --- MiniIcons.get('filetype', 'help')
437
+ --- MiniIcons.get('filetype', 'minifiles')
438
+ --- <
439
+ --- - `'lsp'` - icon data for various "LSP kind" values.
440
+ --- Icon names:
441
+ --- - <Input>: any string.
442
+ --- - <Built-in>: only namespace entries from LSP specification that can
443
+ --- be displayed to the user. Like `CompletionItemKind`, `SymbolKind`, etc.
444
+ ---
445
+ --- Examples: >lua
446
+ ---
447
+ --- MiniIcons.get('lsp', 'array')
448
+ --- MiniIcons.get('lsp', 'keyword')
449
+ --- <
450
+ --- - `'os'` - icon data for popular operating systems.
451
+ --- Icon names:
452
+ --- - <Input>: any string.
453
+ --- - <Built-in>: only operating systems which have `nf-md-*` class icon.
454
+ ---
455
+ --- Examples: >lua
456
+ ---
457
+ --- MiniIcons.get('os', 'linux')
458
+ --- MiniIcons.get('os', 'arch')
459
+ --- MiniIcons.get('os', 'macos')
460
+ --- <
461
+ ---@param name string Icon name within category. Use |MiniIcons.list()| to get icon
462
+ --- names which are explicitly supported for specific category.
463
+ ---
464
+ ---@return ... Tuple of icon string, highlight group name it is suggested to be
465
+ --- highlighted with, and boolean indicating whether this icon was returned
466
+ --- as a result of fallback to default. Example: >lua
467
+ ---
468
+ --- -- Results into `icon='󰢱'`, `hl='MiniIconsAzure'`, `is_default=false`
469
+ --- local icon, hl, is_default = MiniIcons.get('file', 'file.lua')
470
+ ---
471
+ --- -- Results into `icon='󰈔'`, `hl='MiniIconsGrey'`, `is_default=true`
472
+ --- local icon, hl, is_default = MiniIcons.get('file', 'not-supported')
473
+ --- <
474
+ MiniIcons.get = function(category, name)
475
+ if not (type(category) == 'string' and type(name) == 'string') then
476
+ H.error('Both `category` and `name` should be string.')
477
+ end
478
+
479
+ -- Get "get" implementation now to show informative message for bad category
480
+ local getter = H.get_impl[category]
481
+ if getter == nil then H.error(vim.inspect(category) .. ' is not a supported category.') end
482
+
483
+ -- Try cache first
484
+ name = category == 'file' and name or (category == 'directory' and H.fs_basename(name) or name:lower())
485
+ local cached = H.cache_get(category, name)
486
+ if cached ~= nil then return cached[1], cached[2], cached[3] == true end
487
+
488
+ -- Get icon. Assume `nil` value to mean "fall back to category default".
489
+ local icon, hl = getter(name)
490
+ if type(icon) == 'table' then
491
+ icon, hl = H.style_icon(icon.glyph, name), icon.hl
492
+ end
493
+
494
+ -- Save to cache and return
495
+ return H.cache_set(category, name, icon, hl)
496
+ end
497
+
498
+ --- List explicitly supported icon names
499
+ ---
500
+ ---@param category string Category name supported by |MiniIcons.get()|.
501
+ ---
502
+ ---@return table Array of icon names which are explicitly supported for category.
503
+ --- Note, that `'file'` and `'extension'` categories support much more icon names
504
+ --- via their fallback to using |vim.filetype.match()| with `'filetype'` category.
505
+ MiniIcons.list = function(category)
506
+ local category_icons = H[category .. '_icons']
507
+ if category_icons == nil then H.error(vim.inspect(category) .. ' is not a supported category.') end
508
+
509
+ -- Output is a union of explicit built-in and custom icons
510
+ local res_map = {}
511
+ for k, _ in pairs(category_icons) do
512
+ res_map[k] = true
513
+ end
514
+ for k, _ in pairs(MiniIcons.config[category]) do
515
+ res_map[k] = true
516
+ end
517
+
518
+ local res = vim.tbl_keys(res_map)
519
+ table.sort(res)
520
+ return res
521
+ end
522
+
523
+ --- Mock `nvim-web-devicons` module
524
+ ---
525
+ --- Call this function to mock exported functions of `nvim-tree/nvim-web-devicons`
526
+ --- plugin. It will mock all its functions which return icon data by
527
+ --- using |MiniIcons.get()| equivalent.
528
+ ---
529
+ --- This function is useful if any plugins relevant to you depend solely on
530
+ --- `nvim-web-devicons` and have not yet added an integration with |mini.icons|.
531
+ ---
532
+ --- Full example of usage: >lua
533
+ ---
534
+ --- require('mini.icons').setup()
535
+ --- MiniIcons.mock_nvim_web_devicons()
536
+ --- <
537
+ --- Works without installed `nvim-web-devicons` and even with it installed (needs
538
+ --- to be called after `nvim-web-devicons` is set up).
539
+ MiniIcons.mock_nvim_web_devicons = function()
540
+ local M = {}
541
+
542
+ -- Main functions which get icon and highlight group
543
+ M.get_icon = function(name, ext, opts)
544
+ -- Preferring 'name' first leads to a slightly different behavior compared to
545
+ -- the original in case both `name` and `ext` is supplied:
546
+ -- - Original: try exact `name`, then `ext`, then extensions in `name`.
547
+ -- - This: use 'file' category and ignore `ext` completely.
548
+ -- In practice this seems like a better choice because it accounts for
549
+ -- special file names at the cost of ignoring `ext` if it conflicts with
550
+ -- `name` (which rarely happens) and very small overhead of recomputing
551
+ -- extension (which assumed to already be computed by the caller).
552
+ local is_file = type(name) == 'string'
553
+ local category = is_file and 'file' or 'extension'
554
+ local icon, hl, is_default = MiniIcons.get(category, is_file and name or ext)
555
+ if is_default and not (opts or {}).default then return nil, nil end
556
+ return icon, hl
557
+ end
558
+
559
+ M.get_icon_by_filetype = function(ft, opts)
560
+ local icon, hl, is_default = MiniIcons.get('filetype', ft)
561
+ if is_default and not (opts or {}).default then return nil, nil end
562
+ return icon, hl
563
+ end
564
+
565
+ -- Use default colors of default icon (#6d8086 and 66) by default
566
+ local get_hl_data = function(...) return vim.api.nvim_get_hl_by_name(...) end
567
+ local get_hex = function(hl)
568
+ if hl == nil then return nil end
569
+ return string.format('#%06x', get_hl_data(hl, true).foreground or 7176326)
570
+ end
571
+ local get_cterm = function(hl)
572
+ if hl == nil then return nil end
573
+ return get_hl_data(hl, false).foreground or 66
574
+ end
575
+ local with_hex = function(icon, hl) return icon, get_hex(hl) end
576
+ local with_cterm = function(icon, hl) return icon, get_cterm(hl) end
577
+ local with_hex_cterm = function(icon, hl) return icon, get_hex(hl), get_cterm(hl) end
578
+
579
+ M.get_icon_color = function(...) return with_hex(M.get_icon(...)) end
580
+ M.get_icon_cterm_color = function(...) return with_cterm(M.get_icon(...)) end
581
+ M.get_icon_colors = function(...) return with_hex_cterm(M.get_icon(...)) end
582
+
583
+ M.get_icon_color_by_filetype = function(...) return with_hex(M.get_icon_by_filetype(...)) end
584
+ M.get_icon_cterm_color_by_filetype = function(...) return with_cterm(M.get_icon_by_filetype(...)) end
585
+ M.get_icon_colors_by_filetype = function(...) return with_hex_cterm(M.get_icon_by_filetype(...)) end
586
+
587
+ M.get_icon_name_by_filetype = function(ft) return ft end
588
+
589
+ -- Mock `get_icons_*()` to the extent they are compatible with this module
590
+ local make_icon_tbl = function(category, name, output_name)
591
+ local icon, hl = MiniIcons.get(category, name)
592
+ return { icon = icon, color = get_hex(hl), cterm_color = tostring(get_cterm(hl)), name = output_name }
593
+ end
594
+ local make_category_tbl = function(category)
595
+ local res = {}
596
+ -- This won't list all supported names (due to fallback), but at least some
597
+ for _, name in ipairs(MiniIcons.list(category)) do
598
+ res[name] = make_icon_tbl(category, name, name)
599
+ end
600
+ return res
601
+ end
602
+
603
+ M.get_default_icon = function() return make_icon_tbl('default', 'file', 'Default') end
604
+
605
+ M.get_icons = function()
606
+ return vim.tbl_deep_extend(
607
+ 'force',
608
+ { [1] = M.get_default_icon() },
609
+ make_category_tbl('os'),
610
+ make_category_tbl('file'),
611
+ make_category_tbl('extension')
612
+ )
613
+ end
614
+ M.get_icons_by_desktop_environment = function() return {} end
615
+ M.get_icons_by_extension = function() return make_category_tbl('extension') end
616
+ M.get_icons_by_filename = function() return make_category_tbl('file') end
617
+ M.get_icons_by_operating_system = function() return make_category_tbl('os') end
618
+ M.get_icons_by_window_manager = function() return {} end
619
+
620
+ -- Should be no need in the these. Suggest using `MiniIcons.setup()`.
621
+ M.has_loaded = function() return true end
622
+ M.refresh = function() end
623
+ M.set_default_icon = function() end
624
+ M.set_icon = function() end
625
+ M.set_icon_by_filetype = function() end
626
+ M.set_up_highlights = function() end
627
+ M.setup = function() end
628
+
629
+ -- Mock. Prefer `package.preload` as it seems to be a better practice.
630
+ local modname = 'nvim-web-devicons'
631
+ if package.loaded[modname] == nil then
632
+ package.preload[modname] = function() return M end
633
+ else
634
+ package.loaded[modname] = M
635
+ end
636
+ vim.g.nvim_web_devicons = 1
637
+ end
638
+
639
+ --- Tweak built-in LSP kind names
640
+ ---
641
+ --- Update in place appropriate maps in |vim.lsp.protocol| (`CompletionItemKind`
642
+ --- and `SymbolKind`) by using icon strings from "lsp" category. Only "numeric
643
+ --- id to kind name" part is updated (to preserve data from original map).
644
+ ---
645
+ --- Updating is done in one of these modes:
646
+ --- - Append: add icon after text.
647
+ --- - Prepend: add icon before text (default).
648
+ --- - Replace: use icon instead of text.
649
+ ---
650
+ --- Notes:
651
+ --- - Makes |mini.completion| show icons, as it uses built-in protocol map.
652
+ --- - Results in loading whole `vim.lsp` module, so might add significant amount
653
+ --- of time on startup. Call it lazily. For example, with |MiniDeps.later()|: >lua
654
+ ---
655
+ --- require('mini.icons').setup()
656
+ --- MiniDeps.later(MiniIcons.tweak_lsp_kind)
657
+ --- <
658
+ ---@param mode string|nil One of "prepend" (default), "append", "replace".
659
+ MiniIcons.tweak_lsp_kind = function(mode)
660
+ mode = mode or 'prepend'
661
+ local format
662
+ if mode == 'append' then format = function(kind) return kind .. ' ' .. MiniIcons.get('lsp', kind) end end
663
+ if mode == 'prepend' then format = function(kind) return MiniIcons.get('lsp', kind) .. ' ' .. kind end end
664
+ if mode == 'replace' then format = function(kind) return MiniIcons.get('lsp', kind) end end
665
+ if format == nil then H.error('`mode` should be one of "append", "prepend", "replace".') end
666
+
667
+ local protocol = vim.lsp.protocol
668
+ for i, kind in ipairs(protocol.CompletionItemKind) do
669
+ protocol.CompletionItemKind[i] = format(kind)
670
+ end
671
+ for i, kind in ipairs(protocol.SymbolKind) do
672
+ protocol.SymbolKind[i] = format(kind)
673
+ end
674
+ end
675
+
676
+ -- Helper data ================================================================
677
+ -- Module default config
678
+ H.default_config = MiniIcons.config
679
+
680
+ -- Cache tables organized to reduce memory footprint by reducing duplication:
681
+ -- - `cache` is nested and indexed by `category-name` pair with values being
682
+ -- number id in `cache_index`. Its purpose is to quickly get cache. Special
683
+ -- field `true` in each `category` table is made to contain an id of category
684
+ -- fallback icon data.
685
+ -- - `cache_index` is an array of "icon-hl-is_default" unique tables. Its
686
+ -- purpose is to store all unique return tuples per category.
687
+ -- - `cache_index_lookup` is nested and indexed by `hl-icon` with values being
688
+ -- number id in `cache_index`. Its purpose is to quickly add new "icon-hl"
689
+ -- tuple to cache.
690
+ H.cache = {}
691
+ H.cache_index = {}
692
+ H.cache_index_lookup = {}
693
+
694
+ -- Default icons per supported category
695
+ --stylua: ignore
696
+ H.default_icons = {
697
+ default = { glyph = '󰟢', hl = 'MiniIconsGrey' },
698
+ directory = { glyph = '󰉋', hl = 'MiniIconsAzure' },
699
+ extension = { glyph = '󰈔', hl = 'MiniIconsGrey' },
700
+ file = { glyph = '󰈔', hl = 'MiniIconsGrey' },
701
+ filetype = { glyph = '󰈔', hl = 'MiniIconsGrey' },
702
+ lsp = { glyph = '󰞋', hl = 'MiniIconsRed' },
703
+ os = { glyph = '󰟀', hl = 'MiniIconsPurple' },
704
+ }
705
+
706
+ -- Directory icons. Keys are some popular *language-agnostic* directory
707
+ -- basenames. Use only "folder-shaped" glyphs while preferring `nf-md-folder-*`
708
+ -- classes (unless glyph is designed specifically for the directory name)
709
+ -- Common sets:
710
+ -- - Use `MiniIconsOrange` for typical HOME directories.
711
+ -- - Use green '󱁽' for Neovim runtime directories (if name isn't too general).
712
+ -- - Use `MiniIconsRed` only for 'mini.nvim' directory.
713
+ --stylua: ignore
714
+ H.directory_icons = {
715
+ ['.cache'] = { glyph = '󰪺', hl = 'MiniIconsCyan' },
716
+ ['.config'] = { glyph = '󱁿', hl = 'MiniIconsCyan' },
717
+ ['.git'] = { glyph = '', hl = 'MiniIconsOrange' },
718
+ ['.github'] = { glyph = '', hl = 'MiniIconsAzure' },
719
+ ['.local'] = { glyph = '󰉌', hl = 'MiniIconsCyan' },
720
+ ['.vim'] = { glyph = '󰉋', hl = 'MiniIconsGreen' },
721
+ AppData = { glyph = '󰉌', hl = 'MiniIconsOrange' },
722
+ Applications = { glyph = '󱧺', hl = 'MiniIconsOrange' },
723
+ Desktop = { glyph = '󰚝', hl = 'MiniIconsOrange' },
724
+ Documents = { glyph = '󱧶', hl = 'MiniIconsOrange' },
725
+ Downloads = { glyph = '󰉍', hl = 'MiniIconsOrange' },
726
+ Favorites = { glyph = '󱃪', hl = 'MiniIconsOrange' },
727
+ Library = { glyph = '󰲂', hl = 'MiniIconsOrange' },
728
+ Music = { glyph = '󱍙', hl = 'MiniIconsOrange' },
729
+ Network = { glyph = '󰡰', hl = 'MiniIconsOrange' },
730
+ Pictures = { glyph = '󰉏', hl = 'MiniIconsOrange' },
731
+ ProgramData = { glyph = '󰉌', hl = 'MiniIconsOrange' },
732
+ Public = { glyph = '󱧰', hl = 'MiniIconsOrange' },
733
+ System = { glyph = '󱧼', hl = 'MiniIconsOrange' },
734
+ Templates = { glyph = '󱋣', hl = 'MiniIconsOrange' },
735
+ Trash = { glyph = '󱧴', hl = 'MiniIconsOrange' },
736
+ Users = { glyph = '󰉌', hl = 'MiniIconsOrange' },
737
+ Videos = { glyph = '󱞊', hl = 'MiniIconsOrange' },
738
+ Volumes = { glyph = '󰉓', hl = 'MiniIconsOrange' },
739
+ autoload = { glyph = '󱁽', hl = 'MiniIconsGreen' },
740
+ bin = { glyph = '󱧺', hl = 'MiniIconsYellow' },
741
+ build = { glyph = '󱧼', hl = 'MiniIconsGrey' },
742
+ boot = { glyph = '󰴋', hl = 'MiniIconsYellow' },
743
+ colors = { glyph = '󱁽', hl = 'MiniIconsGreen' },
744
+ compiler = { glyph = '󱁽', hl = 'MiniIconsGreen' },
745
+ dev = { glyph = '󱧼', hl = 'MiniIconsYellow' },
746
+ doc = { glyph = '󱂷', hl = 'MiniIconsPurple' },
747
+ docs = { glyph = '󱂷', hl = 'MiniIconsPurple' },
748
+ etc = { glyph = '󱁿', hl = 'MiniIconsYellow' },
749
+ ftdetect = { glyph = '󱁽', hl = 'MiniIconsGreen' },
750
+ ftplugin = { glyph = '󱁽', hl = 'MiniIconsGreen' },
751
+ home = { glyph = '󱂵', hl = 'MiniIconsYellow' },
752
+ indent = { glyph = '󱁽', hl = 'MiniIconsGreen' },
753
+ keymap = { glyph = '󱁽', hl = 'MiniIconsGreen' },
754
+ lang = { glyph = '󱁽', hl = 'MiniIconsGreen' },
755
+ lib = { glyph = '󰲂', hl = 'MiniIconsYellow' },
756
+ lsp = { glyph = '󱁽', hl = 'MiniIconsGreen' },
757
+ lua = { glyph = '󰉋', hl = 'MiniIconsBlue' },
758
+ media = { glyph = '󱧺', hl = 'MiniIconsYellow' },
759
+ mnt = { glyph = '󰉓', hl = 'MiniIconsYellow' },
760
+ ['mini.nvim'] = { glyph = '󰚝', hl = 'MiniIconsRed' },
761
+ node_modules = { glyph = '', hl = 'MiniIconsGreen' },
762
+ nvim = { glyph = '󰉋', hl = 'MiniIconsGreen' },
763
+ opt = { glyph = '󰉗', hl = 'MiniIconsYellow' },
764
+ pack = { glyph = '󱁽', hl = 'MiniIconsGreen' },
765
+ parser = { glyph = '󱁽', hl = 'MiniIconsGreen' },
766
+ plugin = { glyph = '󱁽', hl = 'MiniIconsGreen' },
767
+ proc = { glyph = '󰢬', hl = 'MiniIconsYellow' },
768
+ queries = { glyph = '󱁽', hl = 'MiniIconsGreen' },
769
+ rplugin = { glyph = '󱁽', hl = 'MiniIconsGreen' },
770
+ root = { glyph = '󰷌', hl = 'MiniIconsYellow' },
771
+ sbin = { glyph = '󱧺', hl = 'MiniIconsYellow' },
772
+ spell = { glyph = '󱁽', hl = 'MiniIconsGreen' },
773
+ src = { glyph = '󰴉', hl = 'MiniIconsPurple' },
774
+ srv = { glyph = '󱋣', hl = 'MiniIconsYellow' },
775
+ snippets = { glyph = '󱁽', hl = 'MiniIconsYellow' },
776
+ syntax = { glyph = '󱁽', hl = 'MiniIconsGreen' },
777
+ tmp = { glyph = '󰪺', hl = 'MiniIconsYellow' },
778
+ test = { glyph = '󱞊', hl = 'MiniIconsBlue' },
779
+ tests = { glyph = '󱞊', hl = 'MiniIconsBlue' },
780
+ tutor = { glyph = '󱁽', hl = 'MiniIconsGreen' },
781
+ usr = { glyph = '󰉌', hl = 'MiniIconsYellow' },
782
+ var = { glyph = '󱋣', hl = 'MiniIconsYellow' },
783
+ }
784
+
785
+ -- Extension icons
786
+ -- Value may be string with filetype's name to inherit from its icon data
787
+ --stylua: ignore
788
+ H.extension_icons = {
789
+ -- Extensions for which `vim.filetype.match()` mismatches or doesn't work.
790
+ -- Usually because matching depends on an actual buffer content.
791
+ h = { glyph = '󰫵', hl = 'MiniIconsPurple' },
792
+ ipynb = { glyph = '󰠮', hl = 'MiniIconsOrange' },
793
+ exs = { glyph = '', hl = 'MiniIconsPurple' },
794
+ purs = 'purescript',
795
+ tf = 'terraform',
796
+
797
+ -- Video
798
+ ['3gp'] = { glyph = '󰈫', hl = 'MiniIconsYellow' },
799
+ avi = { glyph = '󰈫', hl = 'MiniIconsGrey' },
800
+ cast = { glyph = '󰈫', hl = 'MiniIconsRed' },
801
+ m4v = { glyph = '󰈫', hl = 'MiniIconsOrange' },
802
+ mkv = { glyph = '󰈫', hl = 'MiniIconsGreen' },
803
+ mov = { glyph = '󰈫', hl = 'MiniIconsCyan' },
804
+ mp4 = { glyph = '󰈫', hl = 'MiniIconsAzure' },
805
+ mpeg = { glyph = '󰈫', hl = 'MiniIconsPurple' },
806
+ mpg = { glyph = '󰈫', hl = 'MiniIconsPurple' },
807
+ webm = { glyph = '󰈫', hl = 'MiniIconsGrey' },
808
+ wmv = { glyph = '󰈫', hl = 'MiniIconsBlue' },
809
+
810
+ -- Audio
811
+ aac = { glyph = '󰈣', hl = 'MiniIconsYellow' },
812
+ aif = { glyph = '󰈣', hl = 'MiniIconsCyan' },
813
+ flac = { glyph = '󰈣', hl = 'MiniIconsOrange' },
814
+ m4a = { glyph = '󰈣', hl = 'MiniIconsPurple' },
815
+ mp3 = { glyph = '󰈣', hl = 'MiniIconsAzure' },
816
+ ogg = { glyph = '󰈣', hl = 'MiniIconsGrey' },
817
+ snd = { glyph = '󰈣', hl = 'MiniIconsRed' },
818
+ wav = { glyph = '󰈣', hl = 'MiniIconsGreen' },
819
+ wma = { glyph = '󰈣', hl = 'MiniIconsBlue' },
820
+
821
+ -- Image
822
+ bmp = { glyph = '󰈟', hl = 'MiniIconsGreen' },
823
+ eps = { glyph = '', hl = 'MiniIconsRed' },
824
+ gif = { glyph = '󰵸', hl = 'MiniIconsAzure' },
825
+ jpeg = { glyph = '󰈥', hl = 'MiniIconsOrange' },
826
+ jpg = { glyph = '󰈥', hl = 'MiniIconsOrange' },
827
+ png = { glyph = '󰸭', hl = 'MiniIconsPurple' },
828
+ tif = { glyph = '󰈟', hl = 'MiniIconsYellow' },
829
+ tiff = { glyph = '󰈟', hl = 'MiniIconsYellow' },
830
+ webp = { glyph = '󰈟', hl = 'MiniIconsBlue' },
831
+
832
+ -- Archives
833
+ ['7z'] = { glyph = '󰗄', hl = 'MiniIconsBlue' },
834
+ bz = { glyph = '󰗄', hl = 'MiniIconsOrange' },
835
+ bz2 = { glyph = '󰗄', hl = 'MiniIconsOrange' },
836
+ bz3 = { glyph = '󰗄', hl = 'MiniIconsOrange' },
837
+ gz = { glyph = '󰗄', hl = 'MiniIconsGrey' },
838
+ rar = { glyph = '󰗄', hl = 'MiniIconsGreen' },
839
+ rpm = { glyph = '󰗄', hl = 'MiniIconsRed' },
840
+ sit = { glyph = '󰗄', hl = 'MiniIconsRed' },
841
+ tar = { glyph = '󰗄', hl = 'MiniIconsCyan' },
842
+ tgz = { glyph = '󰗄', hl = 'MiniIconsGrey' },
843
+ txz = { glyph = '󰗄', hl = 'MiniIconsPurple' },
844
+ xz = { glyph = '󰗄', hl = 'MiniIconsGreen' },
845
+ z = { glyph = '󰗄', hl = 'MiniIconsGrey' },
846
+ zip = { glyph = '󰗄', hl = 'MiniIconsAzure' },
847
+ zst = { glyph = '󰗄', hl = 'MiniIconsYellow' },
848
+
849
+ -- Software
850
+ doc = { glyph = '󱎒', hl = 'MiniIconsAzure' },
851
+ docm = { glyph = '󱎒', hl = 'MiniIconsAzure' },
852
+ docx = { glyph = '󱎒', hl = 'MiniIconsAzure' },
853
+ dot = { glyph = '󱎒', hl = 'MiniIconsAzure' },
854
+ dotx = { glyph = '󱎒', hl = 'MiniIconsAzure' },
855
+ exe = { glyph = '󰖳', hl = 'MiniIconsRed' },
856
+ pps = { glyph = '󱎐', hl = 'MiniIconsRed' },
857
+ ppsm = { glyph = '󱎐', hl = 'MiniIconsRed' },
858
+ ppsx = { glyph = '󱎐', hl = 'MiniIconsRed' },
859
+ ppt = { glyph = '󱎐', hl = 'MiniIconsRed' },
860
+ pptm = { glyph = '󱎐', hl = 'MiniIconsRed' },
861
+ pptx = { glyph = '󱎐', hl = 'MiniIconsRed' },
862
+ xls = { glyph = '󱎏', hl = 'MiniIconsGreen' },
863
+ xlsm = { glyph = '󱎏', hl = 'MiniIconsGreen' },
864
+ xlsx = { glyph = '󱎏', hl = 'MiniIconsGreen' },
865
+ xlt = { glyph = '󱎏', hl = 'MiniIconsGreen' },
866
+ xltm = { glyph = '󱎏', hl = 'MiniIconsGreen' },
867
+ xltx = { glyph = '󱎏', hl = 'MiniIconsGreen' },
868
+
869
+ ['code-snippets'] = 'json',
870
+ }
871
+
872
+ -- File icons
873
+ -- Value may be string with filetype's name to inherit from its icon data
874
+ --stylua: ignore
875
+ H.file_icons = {
876
+ -- Popular special (mostly) language-agnostic file basenames
877
+ ['.DS_Store'] = { glyph = '󰒓', hl = 'MiniIconsRed' },
878
+ ['.bash_profile'] = { glyph = '󰒓', hl = 'MiniIconsGreen' },
879
+ ['.bashrc'] = { glyph = '󰒓', hl = 'MiniIconsGreen' },
880
+ ['.git'] = { glyph = '󰊢', hl = 'MiniIconsOrange' },
881
+ ['.gitlab-ci.yml'] = { glyph = '󰮠', hl = 'MiniIconsOrange' },
882
+ ['.gitkeep'] = { glyph = '󰊢', hl = 'MiniIconsRed' },
883
+ ['.mailmap'] = { glyph = '󰊢', hl = 'MiniIconsCyan' },
884
+ ['.nvmrc'] = { glyph = '󰒓', hl = 'MiniIconsGreen' },
885
+ ['.xinitrc'] = { glyph = '󰒓', hl = 'MiniIconsBlue' },
886
+ ['.zshrc'] = { glyph = '󰒓', hl = 'MiniIconsGreen' },
887
+ CHANGELOG = { glyph = '󰉻', hl = 'MiniIconsBlue' },
888
+ ['CHANGELOG.md'] = { glyph = '󰉻', hl = 'MiniIconsBlue' },
889
+ CODE_OF_CONDUCT = { glyph = '󱃱', hl = 'MiniIconsRed' },
890
+ ['CODE_OF_CONDUCT.md'] = { glyph = '󱃱', hl = 'MiniIconsRed' },
891
+ CODEOWNERS = { glyph = '󰜻', hl = 'MiniIconsPurple' },
892
+ CONTRIBUTING = { glyph = '󰺾', hl = 'MiniIconsAzure' },
893
+ ['CONTRIBUTING.md'] = { glyph = '󰺾', hl = 'MiniIconsAzure' },
894
+ ['FUNDING.yml'] = { glyph = '󰇁', hl = 'MiniIconsGreen' },
895
+ LICENSE = { glyph = '', hl = 'MiniIconsCyan' },
896
+ ['LICENSE.md'] = { glyph = '', hl = 'MiniIconsCyan' },
897
+ ['LICENSE.txt'] = { glyph = '', hl = 'MiniIconsCyan' },
898
+ NEWS = { glyph = '󰎕', hl = 'MiniIconsBlue' },
899
+ ['NEWS.md'] = { glyph = '󰎕', hl = 'MiniIconsBlue' },
900
+ PKGBUILD = { glyph = '󱁤', hl = 'MiniIconsPurple' },
901
+ README = { glyph = '', hl = 'MiniIconsYellow' },
902
+ ['README.md'] = { glyph = '', hl = 'MiniIconsYellow' },
903
+ ['README.txt'] = { glyph = '', hl = 'MiniIconsYellow' },
904
+ TODO = { glyph = '󰝖', hl = 'MiniIconsPurple' },
905
+ ['TODO.md'] = { glyph = '󰝖', hl = 'MiniIconsPurple' },
906
+ ['init.lua'] = { glyph = '', hl = 'MiniIconsGreen' },
907
+
908
+ -- Supported by `vim.filetype.match` but conflict with using extension first
909
+ ['build.xml'] = 'ant',
910
+ ['GNUmakefile.am'] = 'automake',
911
+ ['Makefile.am'] = 'automake',
912
+ ['makefile.am'] = 'automake',
913
+ ['CMakeLists.txt'] = 'cmake',
914
+ ['CMakeCache.txt'] = 'cmakecache',
915
+ ['auto.master'] = 'conf',
916
+ ['.oelint.cfg'] = 'dosini',
917
+ ['.wakatime.cfg'] = 'dosini',
918
+ ['pudb.cfg'] = 'dosini',
919
+ ['setup.cfg'] = 'dosini',
920
+ ['lltxxxxx.txt'] = 'gedcom',
921
+ ['go.sum'] = 'gosum',
922
+ ['go.work.sum'] = 'gosum',
923
+ ['.indent.pro'] = 'indent',
924
+ ['indent.pro'] = 'indent',
925
+ ['ipf.rules'] = 'ipfilter',
926
+ ['config.ld'] = 'lua',
927
+ ['lynx.cfg'] = 'lynx',
928
+ ['cm3.cfg'] = 'm3quake',
929
+ ['maxima-init.mac'] = 'maxima',
930
+ ['meson_options.txt'] = 'meson',
931
+ ['.gitolite.rc'] = 'perl',
932
+ ['example.gitolite.rc'] = 'perl',
933
+ ['gitolite.rc'] = 'perl',
934
+ ['main.cf.proto'] = 'pfmain',
935
+ ['constraints.txt'] = 'requirements',
936
+ ['requirements.txt'] = 'requirements',
937
+ ['robots.txt'] = 'robots',
938
+ ['tclsh.rc'] = 'tcl',
939
+
940
+ -- Supported by `vim.filetype.match` but result in confusing glyph
941
+ ['.containerignore'] = { glyph = '󰒓', hl = 'MiniIconsGrey' },
942
+ ['.dockerignore'] = { glyph = '󰡨', hl = 'MiniIconsOrange' },
943
+ ['.fdignore'] = { glyph = '󰒓', hl = 'MiniIconsYellow' },
944
+ ['.ignore'] = { glyph = '󰒓', hl = 'MiniIconsGrey' },
945
+ ['.npmignore'] = { glyph = '󰒓', hl = 'MiniIconsGrey' },
946
+ ['.prettierignore'] = { glyph = '', hl = 'MiniIconsOrange' },
947
+ ['.rgignore'] = { glyph = '󰒓', hl = 'MiniIconsYellow' },
948
+ ['.vscodeignore'] = { glyph = '', hl = 'MiniIconsAzure' },
949
+ }
950
+
951
+ -- Filetype icons. Keys are filetypes explicitly supported by Neovim core
952
+ -- (i.e. present in `getcompletion('', 'filetype')` except technical ones)
953
+ -- and filetypes from some popular plugins.
954
+ -- Track filetypes that are newly added to Neovim core by looking at changes of
955
+ -- 'runtime/lua/vim/filetype.lua' and 'runtime/lua/vim/filetype/detect.lua'.
956
+ -- Latest date of sync: 2026-02-13.
957
+ -- Rough process of how glyphs and icons are chosen:
958
+ -- - Try to balance usage of highlight groups.
959
+ -- - Prefer using the following Nerd Fonts classes (from best to worst):
960
+ -- - `nf-md-*` (UTF codes seem to be more thought through). It also has
961
+ -- correct double width in Kitty.
962
+ -- - `nf-dev-*` (more supported devicons).
963
+ -- - `nf-seti-*` (more up to date extensions).
964
+ -- - `nf-custom-*` (niche Nerd Fonts only glyphs).
965
+ -- - If filetype is present in 'nvim-web-devicons', use highlight group with
966
+ -- most similar hue (based on OKLCH color space with equally spaced grid as
967
+ -- in 'mini.hues' and chroma=3 for grey cutoff; adjust manually if needed).
968
+ -- - Sets that have same/close glyphs but maybe different highlights:
969
+ -- - Generic configuration filetypes (".*conf.*", ".*rc", if stated in
970
+ -- filetype file description, etc.) have same glyph.
971
+ -- - Similar language: assembly ("asm"), SQL, Perl, HTML, CSV, shell.
972
+ -- - Log files.
973
+ -- - Make / build system.
974
+ -- - Related to Internet/Web.
975
+ -- - For newly assigned icons use semantically close (first by filetype origin,
976
+ -- then by name) abstract icons with `nf-md-*` Nerd Fonts class.
977
+ -- - If no semantically close abstract icon present, use plain letter/digit
978
+ -- icon (based on the first filetype character) with highlight groups picked
979
+ -- randomly to achieve overall balance (trying to minimize maximum number of
980
+ -- glyph-hl duplicates).
981
+ --stylua: ignore
982
+ H.filetype_icons = {
983
+ -- Neovim filetype plugins (i.e. recognized with vanilla Neovim)
984
+ ['8th'] = { glyph = '󰭁', hl = 'MiniIconsYellow' },
985
+ a2ps = { glyph = '󰒓', hl = 'MiniIconsCyan' },
986
+ a65 = { glyph = '', hl = 'MiniIconsRed' },
987
+ aap = { glyph = '󰫮', hl = 'MiniIconsOrange' },
988
+ abap = { glyph = '󰫮', hl = 'MiniIconsGreen' },
989
+ abaqus = { glyph = '󰫮', hl = 'MiniIconsGreen' },
990
+ abc = { glyph = '󰝚', hl = 'MiniIconsAzure' },
991
+ abel = { glyph = '󰫮', hl = 'MiniIconsAzure' },
992
+ abnf = { glyph = '󰫮', hl = 'MiniIconsYellow' },
993
+ acedb = { glyph = '󰆼', hl = 'MiniIconsGrey' },
994
+ ada = { glyph = '󱁷', hl = 'MiniIconsAzure' },
995
+ aflex = { glyph = '󰫮', hl = 'MiniIconsCyan' },
996
+ ahdl = { glyph = '󰫮', hl = 'MiniIconsRed' },
997
+ aidl = { glyph = '󰫮', hl = 'MiniIconsYellow' },
998
+ alsaconf = { glyph = '󰒓', hl = 'MiniIconsPurple' },
999
+ amiga = { glyph = '󰫮', hl = 'MiniIconsCyan' },
1000
+ aml = { glyph = '󰫮', hl = 'MiniIconsPurple' },
1001
+ ampl = { glyph = '󰫮', hl = 'MiniIconsOrange' },
1002
+ ant = { glyph = '󰫮', hl = 'MiniIconsRed' },
1003
+ antlr = { glyph = '󰫮', hl = 'MiniIconsCyan' },
1004
+ antlr4 = { glyph = '󰫮', hl = 'MiniIconsYellow' },
1005
+ apache = { glyph = '󰒓', hl = 'MiniIconsGreen' },
1006
+ apachestyle = { glyph = '󰒓', hl = 'MiniIconsGrey' },
1007
+ apkbuild = { glyph = '󱁤', hl = 'MiniIconsBlue' },
1008
+ applescript = { glyph = '󰀵', hl = 'MiniIconsYellow' },
1009
+ aptconf = { glyph = '󰒓', hl = 'MiniIconsOrange' },
1010
+ arch = { glyph = '󰣇', hl = 'MiniIconsBlue' },
1011
+ arduino = { glyph = '', hl = 'MiniIconsAzure' },
1012
+ art = { glyph = '󰫮', hl = 'MiniIconsPurple' },
1013
+ asciidoc = { glyph = '󰪶', hl = 'MiniIconsYellow' },
1014
+ asm = { glyph = '', hl = 'MiniIconsPurple' },
1015
+ asm68k = { glyph = '', hl = 'MiniIconsRed' },
1016
+ asmh8300 = { glyph = '', hl = 'MiniIconsOrange' },
1017
+ asn = { glyph = '󰫮', hl = 'MiniIconsBlue' },
1018
+ aspperl = { glyph = '', hl = 'MiniIconsBlue' },
1019
+ aspvbs = { glyph = '󰫮', hl = 'MiniIconsGreen' },
1020
+ asterisk = { glyph = '󰒓', hl = 'MiniIconsBlue' },
1021
+ asteriskvm = { glyph = '󰒓', hl = 'MiniIconsGrey' },
1022
+ astro = { glyph = '', hl = 'MiniIconsOrange' },
1023
+ asy = { glyph = '󰫮', hl = 'MiniIconsAzure' },
1024
+ atlas = { glyph = '󰫮', hl = 'MiniIconsAzure' },
1025
+ authzed = { glyph = '󰫮', hl = 'MiniIconsYellow' },
1026
+ autodoc = { glyph = '󰪶', hl = 'MiniIconsGreen' },
1027
+ autohotkey = { glyph = '󰫮', hl = 'MiniIconsYellow' },
1028
+ autoit = { glyph = '󰫮', hl = 'MiniIconsCyan' },
1029
+ automake = { glyph = '󱁤', hl = 'MiniIconsPurple' },
1030
+ autopkgtest = { glyph = '󰣚', hl = 'MiniIconsRed' },
1031
+ ave = { glyph = '󰫮', hl = 'MiniIconsGrey' },
1032
+ avra = { glyph = '', hl = 'MiniIconsPurple' },
1033
+ awk = { glyph = '', hl = 'MiniIconsGrey' },
1034
+ ayacc = { glyph = '󰫮', hl = 'MiniIconsCyan' },
1035
+ b = { glyph = '󰫯', hl = 'MiniIconsYellow' },
1036
+ baan = { glyph = '󰫯', hl = 'MiniIconsOrange' },
1037
+ bash = { glyph = '', hl = 'MiniIconsGreen' },
1038
+ basic = { glyph = '󰫯', hl = 'MiniIconsPurple' },
1039
+ bass = { glyph = '󰋄', hl = 'MiniIconsBlue' },
1040
+ bat = { glyph = '󰭟', hl = 'MiniIconsGrey' },
1041
+ bc = { glyph = '󰫯', hl = 'MiniIconsCyan' },
1042
+ bdf = { glyph = '󰛖', hl = 'MiniIconsRed' },
1043
+ beancount = { glyph = '󰫯', hl = 'MiniIconsAzure' },
1044
+ bib = { glyph = '󱉟', hl = 'MiniIconsYellow' },
1045
+ bicep = { glyph = '', hl = 'MiniIconsCyan' },
1046
+ ['bicep-params'] = { glyph = '', hl = 'MiniIconsPurple' },
1047
+ bindzone = { glyph = '󰫯', hl = 'MiniIconsCyan' },
1048
+ bitbake = { glyph = '󰃫', hl = 'MiniIconsOrange' },
1049
+ blade = { glyph = '󰫐', hl = 'MiniIconsRed' },
1050
+ blank = { glyph = '󰫯', hl = 'MiniIconsPurple' },
1051
+ blueprint = { glyph = '󰠡', hl = 'MiniIconsBlue' },
1052
+ bp = { glyph = '󰫯', hl = 'MiniIconsYellow' },
1053
+ bpftrace = { glyph = '󰾡', hl = 'MiniIconsYellow' },
1054
+ brighterscript = { glyph = '󰫯', hl = 'MiniIconsAzure' },
1055
+ brightscript = { glyph = '󰫯', hl = 'MiniIconsPurple' },
1056
+ bsdl = { glyph = '󰫯', hl = 'MiniIconsPurple' },
1057
+ bst = { glyph = '󰫯', hl = 'MiniIconsCyan' },
1058
+ btm = { glyph = '󰫯', hl = 'MiniIconsGreen' },
1059
+ bzl = { glyph = '', hl = 'MiniIconsGreen' },
1060
+ bzr = { glyph = '󰜘', hl = 'MiniIconsRed' },
1061
+ c = { glyph = '󰙱', hl = 'MiniIconsBlue' },
1062
+ c3 = { glyph = '󰙱', hl = 'MiniIconsPurple' },
1063
+ cabal = { glyph = '󰲒', hl = 'MiniIconsBlue' },
1064
+ cabalconfig = { glyph = '󰒓', hl = 'MiniIconsGrey' },
1065
+ cabalproject = { glyph = '󰫰', hl = 'MiniIconsBlue' },
1066
+ cairo = { glyph = '󰫰', hl = 'MiniIconsOrange' },
1067
+ calendar = { glyph = '󰃵', hl = 'MiniIconsRed' },
1068
+ cangjie = { glyph = '󰫰', hl = 'MiniIconsBlue' },
1069
+ capnp = { glyph = '󰫰', hl = 'MiniIconsBlue' },
1070
+ catalog = { glyph = '󰕲', hl = 'MiniIconsGrey' },
1071
+ cdc = { glyph = '󰻫', hl = 'MiniIconsRed' },
1072
+ cdl = { glyph = '󰫰', hl = 'MiniIconsOrange' },
1073
+ cdrdaoconf = { glyph = '󰒓', hl = 'MiniIconsRed' },
1074
+ cdrtoc = { glyph = '󰠶', hl = 'MiniIconsRed' },
1075
+ cedar = { glyph = '󰐅', hl = 'MiniIconsGreen' },
1076
+ cf = { glyph = '󰫰', hl = 'MiniIconsRed' },
1077
+ cfengine = { glyph = '󰒓', hl = 'MiniIconsCyan' },
1078
+ cfg = { glyph = '󰒓', hl = 'MiniIconsBlue' },
1079
+ cgdbrc = { glyph = '󰒓', hl = 'MiniIconsRed' },
1080
+ ch = { glyph = '󰫰', hl = 'MiniIconsCyan' },
1081
+ chaiscript = { glyph = '󰶞', hl = 'MiniIconsOrange' },
1082
+ change = { glyph = '󰹳', hl = 'MiniIconsYellow' },
1083
+ changelog = { glyph = '󰷐', hl = 'MiniIconsBlue' },
1084
+ chaskell = { glyph = '󰲒', hl = 'MiniIconsGreen' },
1085
+ chatito = { glyph = '󰫰', hl = 'MiniIconsCyan' },
1086
+ checkhealth = { glyph = '󰓙', hl = 'MiniIconsBlue' },
1087
+ cheetah = { glyph = '󰫰', hl = 'MiniIconsGrey' },
1088
+ chicken = { glyph = '󰫰', hl = 'MiniIconsRed' },
1089
+ chill = { glyph = '󰫰', hl = 'MiniIconsBlue' },
1090
+ chordpro = { glyph = '󰫰', hl = 'MiniIconsGreen' },
1091
+ chuck = { glyph = '󰫰', hl = 'MiniIconsBlue' },
1092
+ cl = { glyph = '󰫰', hl = 'MiniIconsCyan' },
1093
+ clean = { glyph = '󰫰', hl = 'MiniIconsBlue' },
1094
+ clipper = { glyph = '󰫰', hl = 'MiniIconsPurple' },
1095
+ clojure = { glyph = '', hl = 'MiniIconsGreen' },
1096
+ cmake = { glyph = '󱁤', hl = 'MiniIconsOrange' },
1097
+ cmakecache = { glyph = '󱁤', hl = 'MiniIconsRed' },
1098
+ cmod = { glyph = '󰫰', hl = 'MiniIconsCyan' },
1099
+ cmusrc = { glyph = '󰒓', hl = 'MiniIconsRed' },
1100
+ cobol = { glyph = '󱌼', hl = 'MiniIconsBlue' },
1101
+ coco = { glyph = '󰫰', hl = 'MiniIconsRed' },
1102
+ codeowners = { glyph = '󰈮', hl = 'MiniIconsBlue' },
1103
+ conaryrecipe = { glyph = '󰫰', hl = 'MiniIconsGrey' },
1104
+ conf = { glyph = '󰒓', hl = 'MiniIconsGrey' },
1105
+ config = { glyph = '󰒓', hl = 'MiniIconsCyan' },
1106
+ confini = { glyph = '󰒓', hl = 'MiniIconsAzure' },
1107
+ context = { glyph = '', hl = 'MiniIconsGreen' },
1108
+ cook = { glyph = '󰆘', hl = 'MiniIconsBlue' },
1109
+ coq = { glyph = '󱍓', hl = 'MiniIconsAzure' },
1110
+ corn = { glyph = '󰞸', hl = 'MiniIconsYellow' },
1111
+ cpon = { glyph = '󰫰', hl = 'MiniIconsCyan' },
1112
+ cpp = { glyph = '󰙲', hl = 'MiniIconsAzure' },
1113
+ cqlang = { glyph = '󰫰', hl = 'MiniIconsYellow' },
1114
+ crm = { glyph = '󰫰', hl = 'MiniIconsGreen' },
1115
+ crontab = { glyph = '󰔠', hl = 'MiniIconsAzure' },
1116
+ crystal = { glyph = '', hl = 'MiniIconsGrey' },
1117
+ cs = { glyph = '󰌛', hl = 'MiniIconsGreen' },
1118
+ csc = { glyph = '󰫰', hl = 'MiniIconsBlue' },
1119
+ csdl = { glyph = '󰫰', hl = 'MiniIconsCyan' },
1120
+ csh = { glyph = '', hl = 'MiniIconsGrey' },
1121
+ csp = { glyph = '󰫰', hl = 'MiniIconsAzure' },
1122
+ css = { glyph = '󰌜', hl = 'MiniIconsAzure' },
1123
+ csv = { glyph = '', hl = 'MiniIconsGreen' },
1124
+ csv_pipe = { glyph = '', hl = 'MiniIconsAzure' },
1125
+ csv_semicolon = { glyph = '', hl = 'MiniIconsRed' },
1126
+ csv_whitespace = { glyph = '', hl = 'MiniIconsPurple' },
1127
+ cterm = { glyph = '󰫰', hl = 'MiniIconsCyan' },
1128
+ ctrlh = { glyph = '󰫰', hl = 'MiniIconsOrange' },
1129
+ cucumber = { glyph = '󰫰', hl = 'MiniIconsPurple' },
1130
+ cuda = { glyph = '', hl = 'MiniIconsGreen' },
1131
+ cue = { glyph = '󰝚', hl = 'MiniIconsYellow' },
1132
+ cupl = { glyph = '󰫰', hl = 'MiniIconsOrange' },
1133
+ cuplsim = { glyph = '󰫰', hl = 'MiniIconsPurple' },
1134
+ cvs = { glyph = '󰜘', hl = 'MiniIconsGreen' },
1135
+ cvsrc = { glyph = '󰒓', hl = 'MiniIconsYellow' },
1136
+ cweb = { glyph = '󰫰', hl = 'MiniIconsCyan' },
1137
+ cynlib = { glyph = '󰙲', hl = 'MiniIconsPurple' },
1138
+ cynpp = { glyph = '󰙲', hl = 'MiniIconsYellow' },
1139
+ cypher = { glyph = '󰫰', hl = 'MiniIconsOrange' },
1140
+ d = { glyph = '', hl = 'MiniIconsGreen' },
1141
+ dafny = { glyph = '󰫱', hl = 'MiniIconsYellow' },
1142
+ dart = { glyph = '', hl = 'MiniIconsBlue' },
1143
+ datascript = { glyph = '󰫱', hl = 'MiniIconsGreen' },
1144
+ dax = { glyph = '󰫱', hl = 'MiniIconsBlue' },
1145
+ dcd = { glyph = '󰫱', hl = 'MiniIconsCyan' },
1146
+ dcl = { glyph = '󰫱', hl = 'MiniIconsAzure' },
1147
+ deb822sources = { glyph = '󰫱', hl = 'MiniIconsCyan' },
1148
+ debchangelog = { glyph = '󰷐', hl = 'MiniIconsBlue' },
1149
+ debcontrol = { glyph = '󰣚', hl = 'MiniIconsOrange' },
1150
+ debcopyright = { glyph = '󰣚', hl = 'MiniIconsRed' },
1151
+ debsources = { glyph = '󰫱', hl = 'MiniIconsYellow' },
1152
+ def = { glyph = '󰫱', hl = 'MiniIconsGrey' },
1153
+ denyhosts = { glyph = '󰒓', hl = 'MiniIconsGrey' },
1154
+ dep3patch = { glyph = '󰫱', hl = 'MiniIconsCyan' },
1155
+ desc = { glyph = '󰫱', hl = 'MiniIconsCyan' },
1156
+ desktop = { glyph = '󰍹', hl = 'MiniIconsPurple' },
1157
+ dhall = { glyph = '󰏪', hl = 'MiniIconsOrange' },
1158
+ dictconf = { glyph = '󰒓', hl = 'MiniIconsOrange' },
1159
+ dictdconf = { glyph = '󰒓', hl = 'MiniIconsBlue' },
1160
+ diff = { glyph = '󰦓', hl = 'MiniIconsRed' },
1161
+ dircolors = { glyph = '󰫱', hl = 'MiniIconsRed' },
1162
+ dirpager = { glyph = '󰙅', hl = 'MiniIconsYellow' },
1163
+ diva = { glyph = '󰫱', hl = 'MiniIconsRed' },
1164
+ django = { glyph = '', hl = 'MiniIconsGreen' },
1165
+ djot = { glyph = '󰫱', hl = 'MiniIconsYellow' },
1166
+ dns = { glyph = '󰫱', hl = 'MiniIconsOrange' },
1167
+ dnsmasq = { glyph = '󰫱', hl = 'MiniIconsGrey' },
1168
+ docbk = { glyph = '󰫱', hl = 'MiniIconsYellow' },
1169
+ docbksgml = { glyph = '󰫱', hl = 'MiniIconsGrey' },
1170
+ docbkxml = { glyph = '󰫱', hl = 'MiniIconsGrey' },
1171
+ dockerfile = { glyph = '󰡨', hl = 'MiniIconsBlue' },
1172
+ dosbatch = { glyph = '󰯂', hl = 'MiniIconsGreen' },
1173
+ dosini = { glyph = '󰯂', hl = 'MiniIconsAzure' },
1174
+ dot = { glyph = '󱁉', hl = 'MiniIconsAzure' },
1175
+ doxygen = { glyph = '󰋘', hl = 'MiniIconsBlue' },
1176
+ dracula = { glyph = '󰭟', hl = 'MiniIconsGrey' },
1177
+ dsl = { glyph = '󰫱', hl = 'MiniIconsAzure' },
1178
+ dtd = { glyph = '󰫱', hl = 'MiniIconsCyan' },
1179
+ dtml = { glyph = '󰫱', hl = 'MiniIconsRed' },
1180
+ dtrace = { glyph = '󰫱', hl = 'MiniIconsRed' },
1181
+ dts = { glyph = '󰫱', hl = 'MiniIconsRed' },
1182
+ dune = { glyph = '', hl = 'MiniIconsGreen' },
1183
+ dylan = { glyph = '󰫱', hl = 'MiniIconsRed' },
1184
+ dylanintr = { glyph = '󰫱', hl = 'MiniIconsGrey' },
1185
+ dylanlid = { glyph = '󰫱', hl = 'MiniIconsOrange' },
1186
+ earthfile = { glyph = '󰫲', hl = 'MiniIconsAzure' },
1187
+ ecd = { glyph = '󰫲', hl = 'MiniIconsPurple' },
1188
+ edif = { glyph = '󰫲', hl = 'MiniIconsCyan' },
1189
+ editorconfig = { glyph = '', hl = 'MiniIconsGrey' },
1190
+ eelixir = { glyph = '', hl = 'MiniIconsYellow' },
1191
+ eiffel = { glyph = '󱕫', hl = 'MiniIconsYellow' },
1192
+ elf = { glyph = '󰫲', hl = 'MiniIconsGreen' },
1193
+ elinks = { glyph = '󰒓', hl = 'MiniIconsOrange' },
1194
+ elixir = { glyph = '', hl = 'MiniIconsPurple' },
1195
+ elm = { glyph = '', hl = 'MiniIconsAzure' },
1196
+ elmfilt = { glyph = '󰫲', hl = 'MiniIconsBlue' },
1197
+ elsa = { glyph = '󰘧', hl = 'MiniIconsGreen' },
1198
+ elvish = { glyph = '', hl = 'MiniIconsGreen' },
1199
+ epuppet = { glyph = '', hl = 'MiniIconsYellow' },
1200
+ erlang = { glyph = '', hl = 'MiniIconsRed' },
1201
+ eruby = { glyph = '󰴭', hl = 'MiniIconsOrange' },
1202
+ esdl = { glyph = '󰆼', hl = 'MiniIconsCyan' },
1203
+ esmtprc = { glyph = '󰒓', hl = 'MiniIconsYellow' },
1204
+ esqlc = { glyph = '󰆼', hl = 'MiniIconsGrey' },
1205
+ esterel = { glyph = '󰫲', hl = 'MiniIconsAzure' },
1206
+ eterm = { glyph = '󰒓', hl = 'MiniIconsCyan' },
1207
+ euphoria3 = { glyph = '󰫲', hl = 'MiniIconsRed' },
1208
+ euphoria4 = { glyph = '󰫲', hl = 'MiniIconsYellow' },
1209
+ eviews = { glyph = '󰫲', hl = 'MiniIconsCyan' },
1210
+ execline = { glyph = '󰫲', hl = 'MiniIconsAzure' },
1211
+ exim = { glyph = '󰒓', hl = 'MiniIconsPurple' },
1212
+ expect = { glyph = '󰫲', hl = 'MiniIconsGrey' },
1213
+ exports = { glyph = '󰈇', hl = 'MiniIconsPurple' },
1214
+ factor = { glyph = '󰫳', hl = 'MiniIconsAzure' },
1215
+ falcon = { glyph = '󱗆', hl = 'MiniIconsOrange' },
1216
+ fan = { glyph = '󰫳', hl = 'MiniIconsAzure' },
1217
+ fasm = { glyph = '', hl = 'MiniIconsPurple' },
1218
+ faust = { glyph = '󰫳', hl = 'MiniIconsYellow' },
1219
+ fdcc = { glyph = '󰫳', hl = 'MiniIconsBlue' },
1220
+ fennel = { glyph = '', hl = 'MiniIconsYellow' },
1221
+ fetchmail = { glyph = '󰒓', hl = 'MiniIconsGrey' },
1222
+ fgl = { glyph = '󰫳', hl = 'MiniIconsCyan' },
1223
+ firrtl = { glyph = '󰫳', hl = 'MiniIconsGreen' },
1224
+ fish = { glyph = '', hl = 'MiniIconsGrey' },
1225
+ flexwiki = { glyph = '󰖬', hl = 'MiniIconsPurple' },
1226
+ flix = { glyph = '󰫳', hl = 'MiniIconsGreen' },
1227
+ fluent = { glyph = '󰫳', hl = 'MiniIconsAzure' },
1228
+ foam = { glyph = '󰫳', hl = 'MiniIconsBlue' },
1229
+ focexec = { glyph = '󰫳', hl = 'MiniIconsPurple' },
1230
+ form = { glyph = '󰫳', hl = 'MiniIconsCyan' },
1231
+ forth = { glyph = '󰬽', hl = 'MiniIconsRed' },
1232
+ fortran = { glyph = '󱈚', hl = 'MiniIconsPurple' },
1233
+ foxpro = { glyph = '󰫳', hl = 'MiniIconsGreen' },
1234
+ fpcmake = { glyph = '󱁤', hl = 'MiniIconsRed' },
1235
+ framescript = { glyph = '󰫳', hl = 'MiniIconsCyan' },
1236
+ freebasic = { glyph = '󰫳', hl = 'MiniIconsOrange' },
1237
+ fsh = { glyph = '󰫳', hl = 'MiniIconsOrange' },
1238
+ fsharp = { glyph = '', hl = 'MiniIconsBlue' },
1239
+ fstab = { glyph = '󰋊', hl = 'MiniIconsGrey' },
1240
+ func = { glyph = '󰫳', hl = 'MiniIconsCyan' },
1241
+ fusion = { glyph = '󰫳', hl = 'MiniIconsYellow' },
1242
+ fvwm = { glyph = '󰒓', hl = 'MiniIconsAzure' },
1243
+ fvwm2m4 = { glyph = '󰒓', hl = 'MiniIconsCyan' },
1244
+ gdb = { glyph = '󰈺', hl = 'MiniIconsGrey' },
1245
+ gdmo = { glyph = '󰫴', hl = 'MiniIconsBlue' },
1246
+ gdresource = { glyph = '', hl = 'MiniIconsGreen' },
1247
+ gdscript = { glyph = '', hl = 'MiniIconsYellow' },
1248
+ gdshader = { glyph = '', hl = 'MiniIconsPurple' },
1249
+ gedcom = { glyph = '󰫴', hl = 'MiniIconsRed' },
1250
+ gel = { glyph = '󰫴', hl = 'MiniIconsCyan' },
1251
+ gemtext = { glyph = '󰪁', hl = 'MiniIconsAzure' },
1252
+ gift = { glyph = '󰹄', hl = 'MiniIconsRed' },
1253
+ git = { glyph = '󰊢', hl = 'MiniIconsOrange' },
1254
+ gitattributes = { glyph = '󰊢', hl = 'MiniIconsYellow' },
1255
+ gitcommit = { glyph = '󰊢', hl = 'MiniIconsGreen' },
1256
+ gitconfig = { glyph = '󰒓', hl = 'MiniIconsOrange' },
1257
+ gitignore = { glyph = '󰊢', hl = 'MiniIconsPurple' },
1258
+ gitolite = { glyph = '󰒓', hl = 'MiniIconsGreen' },
1259
+ gitrebase = { glyph = '󰊢', hl = 'MiniIconsAzure' },
1260
+ gitsendemail = { glyph = '󰊢', hl = 'MiniIconsBlue' },
1261
+ gkrellmrc = { glyph = '󰒓', hl = 'MiniIconsRed' },
1262
+ gleam = { glyph = '󰦥', hl = 'MiniIconsPurple' },
1263
+ glsl = { glyph = '󰫴', hl = 'MiniIconsCyan' },
1264
+ gn = { glyph = '󰫴', hl = 'MiniIconsGrey' },
1265
+ gnash = { glyph = '󰒓', hl = 'MiniIconsGreen' },
1266
+ gnuplot = { glyph = '󰺒', hl = 'MiniIconsPurple' },
1267
+ go = { glyph = '󰟓', hl = 'MiniIconsAzure' },
1268
+ goaccess = { glyph = '󰫴', hl = 'MiniIconsPurple' },
1269
+ godoc = { glyph = '󰟓', hl = 'MiniIconsOrange' },
1270
+ gomod = { glyph = '󰟓', hl = 'MiniIconsAzure' },
1271
+ gosum = { glyph = '󰟓', hl = 'MiniIconsCyan' },
1272
+ gowork = { glyph = '󰟓', hl = 'MiniIconsPurple' },
1273
+ gp = { glyph = '󰫴', hl = 'MiniIconsCyan' },
1274
+ gpg = { glyph = '󰒓', hl = 'MiniIconsGrey' },
1275
+ gprof = { glyph = '󰫴', hl = 'MiniIconsAzure' },
1276
+ grads = { glyph = '󰫴', hl = 'MiniIconsPurple' },
1277
+ graphql = { glyph = '󰡷', hl = 'MiniIconsRed' },
1278
+ gretl = { glyph = '󰫴', hl = 'MiniIconsCyan' },
1279
+ groff = { glyph = '󰫴', hl = 'MiniIconsYellow' },
1280
+ groovy = { glyph = '', hl = 'MiniIconsAzure' },
1281
+ group = { glyph = '󰫴', hl = 'MiniIconsCyan' },
1282
+ grub = { glyph = '󰒓', hl = 'MiniIconsBlue' },
1283
+ gsp = { glyph = '󰫴', hl = 'MiniIconsYellow' },
1284
+ gtkrc = { glyph = '󰒓', hl = 'MiniIconsAzure' },
1285
+ gvpr = { glyph = '󰫴', hl = 'MiniIconsBlue' },
1286
+ gyp = { glyph = '󰫴', hl = 'MiniIconsPurple' },
1287
+ hack = { glyph = '󰫵', hl = 'MiniIconsPurple' },
1288
+ haml = { glyph = '󰅴', hl = 'MiniIconsGrey' },
1289
+ hamster = { glyph = '󰫵', hl = 'MiniIconsCyan' },
1290
+ handlebars = { glyph = '󰌞', hl = 'MiniIconsGreen' },
1291
+ hare = { glyph = '󰫵', hl = 'MiniIconsRed' },
1292
+ haredoc = { glyph = '󰪶', hl = 'MiniIconsGrey' },
1293
+ haskell = { glyph = '󰲒', hl = 'MiniIconsPurple' },
1294
+ haskellpersistent = { glyph = '󰲒', hl = 'MiniIconsAzure' },
1295
+ haste = { glyph = '󰫵', hl = 'MiniIconsYellow' },
1296
+ hastepreproc = { glyph = '󰫵', hl = 'MiniIconsCyan' },
1297
+ haxe = { glyph = '󰫵', hl = 'MiniIconsGrey' },
1298
+ hb = { glyph = '󰫵', hl = 'MiniIconsGreen' },
1299
+ hcl = { glyph = '󰫵', hl = 'MiniIconsAzure' },
1300
+ heex = { glyph = '', hl = 'MiniIconsRed' },
1301
+ help = { glyph = '󰋖', hl = 'MiniIconsPurple' },
1302
+ hercules = { glyph = '󰫵', hl = 'MiniIconsRed' },
1303
+ hex = { glyph = '󰋘', hl = 'MiniIconsYellow' },
1304
+ hgcommit = { glyph = '󰜘', hl = 'MiniIconsGrey' },
1305
+ hjson = { glyph = '󰘦', hl = 'MiniIconsGreen' },
1306
+ hlsplaylist = { glyph = '󰲸', hl = 'MiniIconsOrange' },
1307
+ hog = { glyph = '󰫵', hl = 'MiniIconsOrange' },
1308
+ hollywood = { glyph = '󰓎', hl = 'MiniIconsYellow' },
1309
+ hoon = { glyph = '󰫵', hl = 'MiniIconsCyan' },
1310
+ hostconf = { glyph = '󰒓', hl = 'MiniIconsPurple' },
1311
+ hostsaccess = { glyph = '󰒓', hl = 'MiniIconsOrange' },
1312
+ html = { glyph = '󰌝', hl = 'MiniIconsOrange' },
1313
+ htmlangular = { glyph = '󰚲', hl = 'MiniIconsRed' },
1314
+ htmlcheetah = { glyph = '󰌝', hl = 'MiniIconsYellow' },
1315
+ htmldjango = { glyph = '󰌝', hl = 'MiniIconsGreen' },
1316
+ htmlm4 = { glyph = '󰌝', hl = 'MiniIconsRed' },
1317
+ htmlos = { glyph = '󰌝', hl = 'MiniIconsAzure' },
1318
+ httest = { glyph = '󰫵', hl = 'MiniIconsGrey' },
1319
+ http = { glyph = '󰌷', hl = 'MiniIconsOrange' },
1320
+ hurl = { glyph = '󰫵', hl = 'MiniIconsGreen' },
1321
+ hy = { glyph = '󰫵', hl = 'MiniIconsGrey' },
1322
+ hylo = { glyph = '󰫵', hl = 'MiniIconsYellow' },
1323
+ hyprlang = { glyph = '', hl = 'MiniIconsCyan' },
1324
+ i3config = { glyph = '󰒓', hl = 'MiniIconsOrange' },
1325
+ ia64 = { glyph = '', hl = 'MiniIconsPurple' },
1326
+ ibasic = { glyph = '󰫶', hl = 'MiniIconsOrange' },
1327
+ icemenu = { glyph = '󰒓', hl = 'MiniIconsPurple' },
1328
+ icon = { glyph = '󰫶', hl = 'MiniIconsGreen' },
1329
+ idl = { glyph = '󰫶', hl = 'MiniIconsRed' },
1330
+ idlang = { glyph = '󱗿', hl = 'MiniIconsAzure' },
1331
+ idris2 = { glyph = '󰫶', hl = 'MiniIconsGrey' },
1332
+ indent = { glyph = '󰉶', hl = 'MiniIconsGreen' },
1333
+ info = { glyph = '󰫶', hl = 'MiniIconsAzure' },
1334
+ inform = { glyph = '󰫶', hl = 'MiniIconsOrange' },
1335
+ initex = { glyph = '', hl = 'MiniIconsGreen' },
1336
+ initng = { glyph = '󰫶', hl = 'MiniIconsAzure' },
1337
+ inittab = { glyph = '󰫶', hl = 'MiniIconsBlue' },
1338
+ inko = { glyph = '󱗆', hl = 'MiniIconsGreen' },
1339
+ ipfilter = { glyph = '󰒓', hl = 'MiniIconsAzure' },
1340
+ ipkg = { glyph = '󰫶', hl = 'MiniIconsGrey' },
1341
+ ishd = { glyph = '󰫶', hl = 'MiniIconsYellow' },
1342
+ iss = { glyph = '󰏗', hl = 'MiniIconsBlue' },
1343
+ ist = { glyph = '󰫶', hl = 'MiniIconsCyan' },
1344
+ j = { glyph = '󰫷', hl = 'MiniIconsAzure' },
1345
+ jal = { glyph = '󰫷', hl = 'MiniIconsCyan' },
1346
+ jam = { glyph = '󰫷', hl = 'MiniIconsCyan' },
1347
+ janet = { glyph = '󰫷', hl = 'MiniIconsOrange' },
1348
+ jargon = { glyph = '󰫷', hl = 'MiniIconsCyan' },
1349
+ java = { glyph = '󰬷', hl = 'MiniIconsOrange' },
1350
+ javacc = { glyph = '󰬷', hl = 'MiniIconsRed' },
1351
+ javascript = { glyph = '󰌞', hl = 'MiniIconsYellow' },
1352
+ ['javascript.glimmer'] = { glyph = '󰌞', hl = 'MiniIconsRed' },
1353
+ javascriptreact = { glyph = '', hl = 'MiniIconsAzure' },
1354
+ jess = { glyph = '󰫷', hl = 'MiniIconsPurple' },
1355
+ jgraph = { glyph = '󰫷', hl = 'MiniIconsGrey' },
1356
+ jinja = { glyph = '', hl = 'MiniIconsRed' },
1357
+ jjdescription = { glyph = '󱨎', hl = 'MiniIconsYellow' },
1358
+ jovial = { glyph = '󰫷', hl = 'MiniIconsGrey' },
1359
+ jproperties = { glyph = '󰬷', hl = 'MiniIconsGreen' },
1360
+ jq = { glyph = '󰘦', hl = 'MiniIconsBlue' },
1361
+ json = { glyph = '󰘦', hl = 'MiniIconsYellow' },
1362
+ json5 = { glyph = '󰘦', hl = 'MiniIconsOrange' },
1363
+ jsonc = { glyph = '󰘦', hl = 'MiniIconsYellow' },
1364
+ jsonl = { glyph = '󰘦', hl = 'MiniIconsYellow' },
1365
+ jsonnet = { glyph = '󰫷', hl = 'MiniIconsYellow' },
1366
+ jsp = { glyph = '󰫷', hl = 'MiniIconsAzure' },
1367
+ julia = { glyph = '', hl = 'MiniIconsPurple' },
1368
+ just = { glyph = '󰖷', hl = 'MiniIconsOrange' },
1369
+ karel = { glyph = '󰚩', hl = 'MiniIconsGrey' },
1370
+ kconfig = { glyph = '󰒓', hl = 'MiniIconsPurple' },
1371
+ kdl = { glyph = '󰫸', hl = 'MiniIconsGrey' },
1372
+ kerml = { glyph = '󰫸', hl = 'MiniIconsGreen' },
1373
+ kitty = { glyph = '󰄛', hl = 'MiniIconsGrey' },
1374
+ kivy = { glyph = '󰫸', hl = 'MiniIconsBlue' },
1375
+ kix = { glyph = '󰫸', hl = 'MiniIconsRed' },
1376
+ koka = { glyph = '󰫸', hl = 'MiniIconsGreen' },
1377
+ kos = { glyph = '󰫸', hl = 'MiniIconsPurple' },
1378
+ kotlin = { glyph = '󱈙', hl = 'MiniIconsBlue' },
1379
+ krl = { glyph = '󰚩', hl = 'MiniIconsGrey' },
1380
+ kscript = { glyph = '󰫸', hl = 'MiniIconsGrey' },
1381
+ kwt = { glyph = '󰫸', hl = 'MiniIconsOrange' },
1382
+ lace = { glyph = '󰫹', hl = 'MiniIconsCyan' },
1383
+ lalrpop = { glyph = '󱘗', hl = 'MiniIconsGreen' },
1384
+ larch = { glyph = '󱎦', hl = 'MiniIconsOrange' },
1385
+ latte = { glyph = '󰅶', hl = 'MiniIconsOrange' },
1386
+ lc = { glyph = '󰫹', hl = 'MiniIconsRed' },
1387
+ ld = { glyph = '󰫹', hl = 'MiniIconsPurple' },
1388
+ ldapconf = { glyph = '󰒓', hl = 'MiniIconsCyan' },
1389
+ ldif = { glyph = '󰫹', hl = 'MiniIconsPurple' },
1390
+ lean = { glyph = '󱎦', hl = 'MiniIconsPurple' },
1391
+ ledger = { glyph = '󱪹', hl = 'MiniIconsBlue' },
1392
+ leex = { glyph = '󰫹', hl = 'MiniIconsYellow' },
1393
+ leo = { glyph = '󰪂', hl = 'MiniIconsYellow' },
1394
+ less = { glyph = '󰌜', hl = 'MiniIconsPurple' },
1395
+ lex = { glyph = '󰫹', hl = 'MiniIconsOrange' },
1396
+ lf = { glyph = '󰫹', hl = 'MiniIconsPurple' },
1397
+ lftp = { glyph = '󰒓', hl = 'MiniIconsYellow' },
1398
+ lhaskell = { glyph = '', hl = 'MiniIconsPurple' },
1399
+ libao = { glyph = '󰒓', hl = 'MiniIconsGrey' },
1400
+ lidris2 = { glyph = '󰫹', hl = 'MiniIconsPurple' },
1401
+ lifelines = { glyph = '󰫹', hl = 'MiniIconsCyan' },
1402
+ lilo = { glyph = '󰒓', hl = 'MiniIconsAzure' },
1403
+ lilypond = { glyph = '󱎦', hl = 'MiniIconsOrange' },
1404
+ limits = { glyph = '󰒓', hl = 'MiniIconsCyan' },
1405
+ liquid = { glyph = '', hl = 'MiniIconsGreen' },
1406
+ liquidsoap = { glyph = '󰐹', hl = 'MiniIconsPurple' },
1407
+ lisp = { glyph = '', hl = 'MiniIconsGrey' },
1408
+ lite = { glyph = '󰫹', hl = 'MiniIconsCyan' },
1409
+ litestep = { glyph = '󰒓', hl = 'MiniIconsYellow' },
1410
+ livebook = { glyph = '󰂾', hl = 'MiniIconsGreen' },
1411
+ llvm = { glyph = '', hl = 'MiniIconsCyan' },
1412
+ lnk = { glyph = '󰫹', hl = 'MiniIconsPurple' },
1413
+ lnkmap = { glyph = '󰫹', hl = 'MiniIconsCyan' },
1414
+ logcheck = { glyph = '󰷐', hl = 'MiniIconsBlue' },
1415
+ loginaccess = { glyph = '󰒓', hl = 'MiniIconsPurple' },
1416
+ logindefs = { glyph = '󰒓', hl = 'MiniIconsGreen' },
1417
+ logtalk = { glyph = '󰫹', hl = 'MiniIconsOrange' },
1418
+ lotos = { glyph = '󰴈', hl = 'MiniIconsGrey' },
1419
+ lout = { glyph = '󰫹', hl = 'MiniIconsCyan' },
1420
+ lpc = { glyph = '󰫹', hl = 'MiniIconsGrey' },
1421
+ lprolog = { glyph = '󰘧', hl = 'MiniIconsOrange' },
1422
+ lscript = { glyph = '󰫹', hl = 'MiniIconsCyan' },
1423
+ lsl = { glyph = '󰫹', hl = 'MiniIconsYellow' },
1424
+ lsp_markdown = { glyph = '󰍔', hl = 'MiniIconsGrey' },
1425
+ lss = { glyph = '󰫹', hl = 'MiniIconsAzure' },
1426
+ lua = { glyph = '󰢱', hl = 'MiniIconsAzure' },
1427
+ luau = { glyph = '󰢱', hl = 'MiniIconsGreen' },
1428
+ lynx = { glyph = '󰒓', hl = 'MiniIconsRed' },
1429
+ lyrics = { glyph = '󰫹', hl = 'MiniIconsOrange' },
1430
+ m17ndb = { glyph = '󰫺', hl = 'MiniIconsAzure' },
1431
+ m3build = { glyph = '󰫺', hl = 'MiniIconsGrey' },
1432
+ m3quake = { glyph = '󰫺', hl = 'MiniIconsGreen' },
1433
+ m4 = { glyph = '󰫺', hl = 'MiniIconsYellow' },
1434
+ mail = { glyph = '󰇮', hl = 'MiniIconsRed' },
1435
+ mailaliases = { glyph = '󰇮', hl = 'MiniIconsOrange' },
1436
+ mailcap = { glyph = '󰒓', hl = 'MiniIconsCyan' },
1437
+ make = { glyph = '󱁤', hl = 'MiniIconsGrey' },
1438
+ mallard = { glyph = '󰫺', hl = 'MiniIconsGrey' },
1439
+ man = { glyph = '󰗚', hl = 'MiniIconsYellow' },
1440
+ manconf = { glyph = '󰒓', hl = 'MiniIconsPurple' },
1441
+ manual = { glyph = '󰗚', hl = 'MiniIconsYellow' },
1442
+ map = { glyph = '󰒓', hl = 'MiniIconsGrey' },
1443
+ maple = { glyph = '󰲓', hl = 'MiniIconsRed' },
1444
+ markdown = { glyph = '󰍔', hl = 'MiniIconsGrey' },
1445
+ masm = { glyph = '', hl = 'MiniIconsPurple' },
1446
+ master = { glyph = '󰫺', hl = 'MiniIconsOrange' },
1447
+ matlab = { glyph = '󰿈', hl = 'MiniIconsOrange' },
1448
+ maxima = { glyph = '󰫺', hl = 'MiniIconsGrey' },
1449
+ mbsyncrc = { glyph = '󰫺', hl = 'MiniIconsPurple' },
1450
+ mediawiki = { glyph = '󰖬', hl = 'MiniIconsBlue' },
1451
+ mel = { glyph = '󰫺', hl = 'MiniIconsAzure' },
1452
+ mermaid = { glyph = '󰫺', hl = 'MiniIconsCyan' },
1453
+ meson = { glyph = '󰫺', hl = 'MiniIconsBlue' },
1454
+ messages = { glyph = '󰍡', hl = 'MiniIconsBlue' },
1455
+ mf = { glyph = '󰫺', hl = 'MiniIconsCyan' },
1456
+ mgl = { glyph = '󰫺', hl = 'MiniIconsCyan' },
1457
+ mgp = { glyph = '󰫺', hl = 'MiniIconsAzure' },
1458
+ mib = { glyph = '󰫺', hl = 'MiniIconsCyan' },
1459
+ mix = { glyph = '󰫺', hl = 'MiniIconsRed' },
1460
+ mlir = { glyph = '󰫺', hl = 'MiniIconsGreen' },
1461
+ mma = { glyph = '󰘨', hl = 'MiniIconsAzure' },
1462
+ mmix = { glyph = '󰫺', hl = 'MiniIconsRed' },
1463
+ mmp = { glyph = '󰫺', hl = 'MiniIconsGrey' },
1464
+ modconf = { glyph = '󰒓', hl = 'MiniIconsOrange' },
1465
+ model = { glyph = '󰫺', hl = 'MiniIconsGreen' },
1466
+ modsim3 = { glyph = '󰫺', hl = 'MiniIconsCyan' },
1467
+ modula2 = { glyph = '󰫺', hl = 'MiniIconsOrange' },
1468
+ modula3 = { glyph = '󰫺', hl = 'MiniIconsRed' },
1469
+ mojo = { glyph = '󰈸', hl = 'MiniIconsRed' },
1470
+ monk = { glyph = '󰫺', hl = 'MiniIconsCyan' },
1471
+ moo = { glyph = '󰫺', hl = 'MiniIconsYellow' },
1472
+ moonscript = { glyph = '󰽥', hl = 'MiniIconsGrey' },
1473
+ move = { glyph = '󰆾', hl = 'MiniIconsBlue' },
1474
+ mp = { glyph = '󰫺', hl = 'MiniIconsAzure' },
1475
+ mplayerconf = { glyph = '󰒓', hl = 'MiniIconsAzure' },
1476
+ mrxvtrc = { glyph = '󰒓', hl = 'MiniIconsAzure' },
1477
+ msidl = { glyph = '󰫺', hl = 'MiniIconsPurple' },
1478
+ msmessages = { glyph = '󰍡', hl = 'MiniIconsAzure' },
1479
+ msmtp = { glyph = '󰒓', hl = 'MiniIconsOrange' },
1480
+ msql = { glyph = '󰆼', hl = 'MiniIconsGrey' },
1481
+ mss = { glyph = '󰫺', hl = 'MiniIconsGrey' },
1482
+ mupad = { glyph = '󰫺', hl = 'MiniIconsCyan' },
1483
+ murphi = { glyph = '󰫺', hl = 'MiniIconsAzure' },
1484
+ mush = { glyph = '󰫺', hl = 'MiniIconsPurple' },
1485
+ mustache = { glyph = '󱗞', hl = 'MiniIconsAzure' },
1486
+ muttrc = { glyph = '󰒓', hl = 'MiniIconsAzure' },
1487
+ mysql = { glyph = '󰆼', hl = 'MiniIconsOrange' },
1488
+ n1ql = { glyph = '󰫻', hl = 'MiniIconsYellow' },
1489
+ named = { glyph = '󰒓', hl = 'MiniIconsCyan' },
1490
+ nanorc = { glyph = '󰒓', hl = 'MiniIconsYellow' },
1491
+ nasm = { glyph = '', hl = 'MiniIconsPurple' },
1492
+ nastran = { glyph = '󰫻', hl = 'MiniIconsRed' },
1493
+ natural = { glyph = '󰫻', hl = 'MiniIconsBlue' },
1494
+ ncf = { glyph = '󰫻', hl = 'MiniIconsYellow' },
1495
+ neomuttlog = { glyph = '󰷐', hl = 'MiniIconsBlue' },
1496
+ neomuttrc = { glyph = '󰒓', hl = 'MiniIconsGreen' },
1497
+ netlinx = { glyph = '󰫻', hl = 'MiniIconsBlue' },
1498
+ netrc = { glyph = '󰒓', hl = 'MiniIconsRed' },
1499
+ netrw = { glyph = '󰙅', hl = 'MiniIconsBlue' },
1500
+ nginx = { glyph = '󰰓', hl = 'MiniIconsGreen' },
1501
+ nickel = { glyph = '󰫻', hl = 'MiniIconsRed' },
1502
+ nim = { glyph = '', hl = 'MiniIconsYellow' },
1503
+ ninja = { glyph = '󰝴', hl = 'MiniIconsGrey' },
1504
+ nix = { glyph = '󱄅', hl = 'MiniIconsAzure' },
1505
+ norg = { glyph = '', hl = 'MiniIconsBlue' },
1506
+ nq = { glyph = '󱁉', hl = 'MiniIconsGrey' },
1507
+ nqc = { glyph = '󱊈', hl = 'MiniIconsYellow' },
1508
+ nroff = { glyph = '󰫻', hl = 'MiniIconsCyan' },
1509
+ nsis = { glyph = '󰫻', hl = 'MiniIconsAzure' },
1510
+ ntriples = { glyph = '󱁉', hl = 'MiniIconsGreen' },
1511
+ nu = { glyph = '', hl = 'MiniIconsPurple' },
1512
+ numbat = { glyph = '󰫻', hl = 'MiniIconsAzure' },
1513
+ obj = { glyph = '󰆧', hl = 'MiniIconsGrey' },
1514
+ objc = { glyph = '󰀵', hl = 'MiniIconsOrange' },
1515
+ objcpp = { glyph = '󰀵', hl = 'MiniIconsOrange' },
1516
+ objdump = { glyph = '󰫼', hl = 'MiniIconsCyan' },
1517
+ obse = { glyph = '󰫼', hl = 'MiniIconsBlue' },
1518
+ ocaml = { glyph = '', hl = 'MiniIconsOrange' },
1519
+ occam = { glyph = '󱦗', hl = 'MiniIconsGrey' },
1520
+ octave = { glyph = '󱥸', hl = 'MiniIconsBlue' },
1521
+ odin = { glyph = '󰮔', hl = 'MiniIconsBlue' },
1522
+ omnimark = { glyph = '󰫼', hl = 'MiniIconsPurple' },
1523
+ ondir = { glyph = '󰫼', hl = 'MiniIconsCyan' },
1524
+ opam = { glyph = '󰫼', hl = 'MiniIconsBlue' },
1525
+ opencl = { glyph = '', hl = 'MiniIconsGreen' },
1526
+ openroad = { glyph = '󰫼', hl = 'MiniIconsOrange' },
1527
+ openscad = { glyph = '', hl = 'MiniIconsYellow' },
1528
+ openvpn = { glyph = '󰖂', hl = 'MiniIconsPurple' },
1529
+ opl = { glyph = '󰫼', hl = 'MiniIconsPurple' },
1530
+ ora = { glyph = '󰒓', hl = 'MiniIconsYellow' },
1531
+ org = { glyph = '', hl = 'MiniIconsCyan' },
1532
+ pacmanlog = { glyph = '󰷐', hl = 'MiniIconsBlue' },
1533
+ pamconf = { glyph = '󰒓', hl = 'MiniIconsCyan' },
1534
+ pamenv = { glyph = '󰒓', hl = 'MiniIconsYellow' },
1535
+ pandoc = { glyph = '󰍔', hl = 'MiniIconsYellow' },
1536
+ papp = { glyph = '', hl = 'MiniIconsAzure' },
1537
+ pascal = { glyph = '󱤊', hl = 'MiniIconsRed' },
1538
+ passwd = { glyph = '󰟵', hl = 'MiniIconsGrey' },
1539
+ pbtxt = { glyph = '󰈚', hl = 'MiniIconsRed' },
1540
+ pcap = { glyph = '󰐪', hl = 'MiniIconsRed' },
1541
+ pccts = { glyph = '󰫽', hl = 'MiniIconsRed' },
1542
+ pcmk = { glyph = '󰫽', hl = 'MiniIconsRed' },
1543
+ pdf = { glyph = '󰈦', hl = 'MiniIconsRed' },
1544
+ pem = { glyph = '󰌇', hl = 'MiniIconsYellow' },
1545
+ perl = { glyph = '', hl = 'MiniIconsAzure' },
1546
+ pf = { glyph = '󰒓', hl = 'MiniIconsBlue' },
1547
+ pfmain = { glyph = '󰒓', hl = 'MiniIconsOrange' },
1548
+ php = { glyph = '󰌟', hl = 'MiniIconsPurple' },
1549
+ phtml = { glyph = '󰌟', hl = 'MiniIconsOrange' },
1550
+ pic = { glyph = '', hl = 'MiniIconsPurple' },
1551
+ pike = { glyph = '󰈺', hl = 'MiniIconsGrey' },
1552
+ pilrc = { glyph = '󰒓', hl = 'MiniIconsRed' },
1553
+ pine = { glyph = '󰇮', hl = 'MiniIconsRed' },
1554
+ pinfo = { glyph = '󰒓', hl = 'MiniIconsRed' },
1555
+ pkl = { glyph = '󰫽', hl = 'MiniIconsBlue' },
1556
+ plaintex = { glyph = '', hl = 'MiniIconsGreen' },
1557
+ pli = { glyph = '󰫽', hl = 'MiniIconsRed' },
1558
+ plm = { glyph = '󰫽', hl = 'MiniIconsBlue' },
1559
+ plp = { glyph = '', hl = 'MiniIconsBlue' },
1560
+ plsql = { glyph = '󰆼', hl = 'MiniIconsOrange' },
1561
+ po = { glyph = '󰗊', hl = 'MiniIconsAzure' },
1562
+ pod = { glyph = '', hl = 'MiniIconsPurple' },
1563
+ poefilter = { glyph = '󰫽', hl = 'MiniIconsAzure' },
1564
+ poke = { glyph = '󰫽', hl = 'MiniIconsPurple' },
1565
+ pony = { glyph = '󱖿', hl = 'MiniIconsGrey' },
1566
+ postscr = { glyph = '', hl = 'MiniIconsYellow' },
1567
+ pov = { glyph = '󰫽', hl = 'MiniIconsPurple' },
1568
+ povini = { glyph = '󰒓', hl = 'MiniIconsBlue' },
1569
+ ppd = { glyph = '', hl = 'MiniIconsPurple' },
1570
+ ppwiz = { glyph = '󰫽', hl = 'MiniIconsGrey' },
1571
+ pq = { glyph = '󰫽', hl = 'MiniIconsAzure' },
1572
+ prescribe = { glyph = '󰜆', hl = 'MiniIconsYellow' },
1573
+ prisma = { glyph = '', hl = 'MiniIconsBlue' },
1574
+ privoxy = { glyph = '󰫽', hl = 'MiniIconsOrange' },
1575
+ proc = { glyph = '󰆼', hl = 'MiniIconsRed' },
1576
+ procmail = { glyph = '󰇮', hl = 'MiniIconsBlue' },
1577
+ progress = { glyph = '󰫽', hl = 'MiniIconsGreen' },
1578
+ prolog = { glyph = '', hl = 'MiniIconsYellow' },
1579
+ promela = { glyph = '󰫽', hl = 'MiniIconsRed' },
1580
+ proto = { glyph = '', hl = 'MiniIconsRed' },
1581
+ protocols = { glyph = '󰖟', hl = 'MiniIconsOrange' },
1582
+ prql = { glyph = '󱘻', hl = 'MiniIconsYellow' },
1583
+ ps1 = { glyph = '󰨊', hl = 'MiniIconsBlue' },
1584
+ ps1xml = { glyph = '󰨊', hl = 'MiniIconsAzure' },
1585
+ psf = { glyph = '󰫽', hl = 'MiniIconsPurple' },
1586
+ psl = { glyph = '󰫽', hl = 'MiniIconsAzure' },
1587
+ ptcap = { glyph = '󰐪', hl = 'MiniIconsRed' },
1588
+ ptx = { glyph = '󰫽', hl = 'MiniIconsGreen' },
1589
+ pug = { glyph = '', hl = 'MiniIconsPurple' },
1590
+ puppet = { glyph = '', hl = 'MiniIconsOrange' },
1591
+ purescript = { glyph = '', hl = 'MiniIconsGrey' },
1592
+ purifylog = { glyph = '󰷐', hl = 'MiniIconsBlue' },
1593
+ pymanifest = { glyph = '󰌠', hl = 'MiniIconsAzure' },
1594
+ pyret = { glyph = '󰫽', hl = 'MiniIconsBlue' },
1595
+ pyrex = { glyph = '󰫽', hl = 'MiniIconsYellow' },
1596
+ python = { glyph = '󰌠', hl = 'MiniIconsYellow' },
1597
+ python2 = { glyph = '󰌠', hl = 'MiniIconsGrey' },
1598
+ qb64 = { glyph = '󰫾', hl = 'MiniIconsCyan' },
1599
+ qf = { glyph = '󰝖', hl = 'MiniIconsAzure' },
1600
+ ql = { glyph = '󰆼', hl = 'MiniIconsGrey' },
1601
+ qml = { glyph = '󰫾', hl = 'MiniIconsAzure' },
1602
+ qmldir = { glyph = '󰒓', hl = 'MiniIconsBlue' },
1603
+ quake = { glyph = '󰒓', hl = 'MiniIconsBlue' },
1604
+ quarto = { glyph = '󰐗', hl = 'MiniIconsAzure' },
1605
+ query = { glyph = '󰐅', hl = 'MiniIconsGreen' },
1606
+ quickbms = { glyph = '󰫾', hl = 'MiniIconsGrey' },
1607
+ r = { glyph = '󰟔', hl = 'MiniIconsBlue' },
1608
+ racc = { glyph = '󰫿', hl = 'MiniIconsYellow' },
1609
+ racket = { glyph = '󰘧', hl = 'MiniIconsRed' },
1610
+ radiance = { glyph = '󰫿', hl = 'MiniIconsGrey' },
1611
+ raku = { glyph = '󱖉', hl = 'MiniIconsYellow' },
1612
+ raml = { glyph = '󰫿', hl = 'MiniIconsCyan' },
1613
+ rapid = { glyph = '󰫿', hl = 'MiniIconsCyan' },
1614
+ rasi = { glyph = '󰫿', hl = 'MiniIconsOrange' },
1615
+ ratpoison = { glyph = '󰒓', hl = 'MiniIconsGreen' },
1616
+ rbs = { glyph = '󰁯', hl = 'MiniIconsBlue' },
1617
+ rc = { glyph = '󰒓', hl = 'MiniIconsCyan' },
1618
+ rcs = { glyph = '󰫿', hl = 'MiniIconsYellow' },
1619
+ rcslog = { glyph = '󰷐', hl = 'MiniIconsBlue' },
1620
+ readline = { glyph = '󰒓', hl = 'MiniIconsGrey' },
1621
+ rebol = { glyph = '󰫿', hl = 'MiniIconsBlue' },
1622
+ redif = { glyph = '󰫿', hl = 'MiniIconsOrange' },
1623
+ registry = { glyph = '󰪶', hl = 'MiniIconsRed' },
1624
+ rego = { glyph = '󰫿', hl = 'MiniIconsPurple' },
1625
+ remind = { glyph = '󰢌', hl = 'MiniIconsPurple' },
1626
+ requirements = { glyph = '󱘎', hl = 'MiniIconsPurple' },
1627
+ rescript = { glyph = '󰫿', hl = 'MiniIconsAzure' },
1628
+ resolv = { glyph = '󰒓', hl = 'MiniIconsGreen' },
1629
+ reva = { glyph = '󰫿', hl = 'MiniIconsGrey' },
1630
+ rexx = { glyph = '󰫿', hl = 'MiniIconsGreen' },
1631
+ rfc_csv = { glyph = '', hl = 'MiniIconsOrange' },
1632
+ rfc_semicolon = { glyph = '', hl = 'MiniIconsRed' },
1633
+ rhelp = { glyph = '󰟔', hl = 'MiniIconsAzure' },
1634
+ rib = { glyph = '󰫿', hl = 'MiniIconsGreen' },
1635
+ rmarkdown = { glyph = '󰍔', hl = 'MiniIconsAzure' },
1636
+ rmd = { glyph = '󰍔', hl = 'MiniIconsAzure' },
1637
+ rnc = { glyph = '󰫿', hl = 'MiniIconsGreen' },
1638
+ rng = { glyph = '󰫿', hl = 'MiniIconsCyan' },
1639
+ rnoweb = { glyph = '󰟔', hl = 'MiniIconsGreen' },
1640
+ robot = { glyph = '󰚩', hl = 'MiniIconsYellow' },
1641
+ robots = { glyph = '󰚩', hl = 'MiniIconsGrey' },
1642
+ roc = { glyph = '󱗆', hl = 'MiniIconsPurple' },
1643
+ ron = { glyph = '󱘗', hl = 'MiniIconsCyan' },
1644
+ routeros = { glyph = '󱂇', hl = 'MiniIconsGrey' },
1645
+ rpcgen = { glyph = '󰫿', hl = 'MiniIconsCyan' },
1646
+ rpgle = { glyph = '󰫿', hl = 'MiniIconsGreen' },
1647
+ rpl = { glyph = '󰫿', hl = 'MiniIconsCyan' },
1648
+ rrst = { glyph = '󰫿', hl = 'MiniIconsGreen' },
1649
+ rst = { glyph = '󰊄', hl = 'MiniIconsYellow' },
1650
+ rtf = { glyph = '󰚞', hl = 'MiniIconsAzure' },
1651
+ ruby = { glyph = '󰴭', hl = 'MiniIconsRed' },
1652
+ rust = { glyph = '󱘗', hl = 'MiniIconsOrange' },
1653
+ sage = { glyph = '󰘨', hl = 'MiniIconsPurple' },
1654
+ salt = { glyph = '󰬀', hl = 'MiniIconsCyan' },
1655
+ samba = { glyph = '󰒓', hl = 'MiniIconsGreen' },
1656
+ sas = { glyph = '󰱐', hl = 'MiniIconsAzure' },
1657
+ sass = { glyph = '󰟬', hl = 'MiniIconsRed' },
1658
+ sather = { glyph = '󰬀', hl = 'MiniIconsAzure' },
1659
+ sbt = { glyph = '', hl = 'MiniIconsOrange' },
1660
+ scala = { glyph = '', hl = 'MiniIconsRed' },
1661
+ scdoc = { glyph = '󰪶', hl = 'MiniIconsAzure' },
1662
+ scheme = { glyph = '󰘧', hl = 'MiniIconsGrey' },
1663
+ scilab = { glyph = '󰂓', hl = 'MiniIconsYellow' },
1664
+ screen = { glyph = '󰒓', hl = 'MiniIconsYellow' },
1665
+ scss = { glyph = '󰟬', hl = 'MiniIconsRed' },
1666
+ sd = { glyph = '󰬀', hl = 'MiniIconsGrey' },
1667
+ sdc = { glyph = '󰬀', hl = 'MiniIconsGreen' },
1668
+ sdl = { glyph = '󰬀', hl = 'MiniIconsRed' },
1669
+ sed = { glyph = '󰟥', hl = 'MiniIconsRed' },
1670
+ sendpr = { glyph = '󰆨', hl = 'MiniIconsBlue' },
1671
+ sensors = { glyph = '󰒓', hl = 'MiniIconsCyan' },
1672
+ services = { glyph = '󰖟', hl = 'MiniIconsGreen' },
1673
+ setserial = { glyph = '󰒓', hl = 'MiniIconsRed' },
1674
+ sexplib = { glyph = '', hl = 'MiniIconsYellow' },
1675
+ sgml = { glyph = '󰬀', hl = 'MiniIconsRed' },
1676
+ sgmldecl = { glyph = '󰬀', hl = 'MiniIconsYellow' },
1677
+ sgmllnx = { glyph = '󰬀', hl = 'MiniIconsGrey' },
1678
+ sh = { glyph = '', hl = 'MiniIconsGrey' },
1679
+ shada = { glyph = '󰆼', hl = 'MiniIconsGrey' },
1680
+ shaderslang = { glyph = '󰬀', hl = 'MiniIconsCyan' },
1681
+ sicad = { glyph = '󰬀', hl = 'MiniIconsPurple' },
1682
+ sieve = { glyph = '󰈲', hl = 'MiniIconsOrange' },
1683
+ sil = { glyph = '󰛥', hl = 'MiniIconsOrange' },
1684
+ sile = { glyph = '󰬀', hl = 'MiniIconsGreen' },
1685
+ simula = { glyph = '󰬀', hl = 'MiniIconsPurple' },
1686
+ sinda = { glyph = '󰬀', hl = 'MiniIconsYellow' },
1687
+ sindacmp = { glyph = '󱒒', hl = 'MiniIconsRed' },
1688
+ sindaout = { glyph = '󰬀', hl = 'MiniIconsBlue' },
1689
+ sisu = { glyph = '󰬀', hl = 'MiniIconsCyan' },
1690
+ skhd = { glyph = '󰬀', hl = 'MiniIconsAzure' },
1691
+ skill = { glyph = '󰬀', hl = 'MiniIconsGrey' },
1692
+ sl = { glyph = '󰟽', hl = 'MiniIconsRed' },
1693
+ slang = { glyph = '󰬀', hl = 'MiniIconsYellow' },
1694
+ slice = { glyph = '󰧻', hl = 'MiniIconsGrey' },
1695
+ slint = { glyph = '󰬀', hl = 'MiniIconsAzure' },
1696
+ slpconf = { glyph = '󰒓', hl = 'MiniIconsGrey' },
1697
+ slpreg = { glyph = '󰬀', hl = 'MiniIconsCyan' },
1698
+ slpspi = { glyph = '󰬀', hl = 'MiniIconsPurple' },
1699
+ slrnrc = { glyph = '󰒓', hl = 'MiniIconsOrange' },
1700
+ slrnsc = { glyph = '󰬀', hl = 'MiniIconsCyan' },
1701
+ sm = { glyph = '󱃜', hl = 'MiniIconsBlue' },
1702
+ smali = { glyph = '', hl = 'MiniIconsGrey' },
1703
+ smarty = { glyph = '', hl = 'MiniIconsYellow' },
1704
+ smcl = { glyph = '󰄨', hl = 'MiniIconsRed' },
1705
+ smil = { glyph = '󰬀', hl = 'MiniIconsOrange' },
1706
+ smith = { glyph = '󰬀', hl = 'MiniIconsRed' },
1707
+ smithy = { glyph = '󰬀', hl = 'MiniIconsGrey' },
1708
+ sml = { glyph = '󰘧', hl = 'MiniIconsOrange' },
1709
+ snakemake = { glyph = '󱔎', hl = 'MiniIconsGreen' },
1710
+ snnsnet = { glyph = '󰖟', hl = 'MiniIconsGreen' },
1711
+ snnspat = { glyph = '󰬀', hl = 'MiniIconsGreen' },
1712
+ snnsres = { glyph = '󰬀', hl = 'MiniIconsBlue' },
1713
+ snobol4 = { glyph = '󰬀', hl = 'MiniIconsCyan' },
1714
+ solidity = { glyph = '', hl = 'MiniIconsAzure' },
1715
+ solution = { glyph = '󰘐', hl = 'MiniIconsBlue' },
1716
+ soy = { glyph = '󰬀', hl = 'MiniIconsCyan' },
1717
+ spajson = { glyph = '󰘦', hl = 'MiniIconsPurple' },
1718
+ sparql = { glyph = '󰬀', hl = 'MiniIconsRed' },
1719
+ spec = { glyph = '', hl = 'MiniIconsBlue' },
1720
+ specman = { glyph = '󰬀', hl = 'MiniIconsCyan' },
1721
+ spice = { glyph = '󰬀', hl = 'MiniIconsOrange' },
1722
+ splint = { glyph = '󰙱', hl = 'MiniIconsGreen' },
1723
+ spup = { glyph = '󰬀', hl = 'MiniIconsOrange' },
1724
+ spyce = { glyph = '󰬀', hl = 'MiniIconsRed' },
1725
+ sql = { glyph = '󰆼', hl = 'MiniIconsGrey' },
1726
+ sqlanywhere = { glyph = '󰆼', hl = 'MiniIconsAzure' },
1727
+ sqlforms = { glyph = '󰆼', hl = 'MiniIconsOrange' },
1728
+ sqlhana = { glyph = '󰆼', hl = 'MiniIconsPurple' },
1729
+ sqlinformix = { glyph = '󰆼', hl = 'MiniIconsBlue' },
1730
+ sqlj = { glyph = '󰆼', hl = 'MiniIconsGrey' },
1731
+ sqloracle = { glyph = '󰆼', hl = 'MiniIconsOrange' },
1732
+ sqr = { glyph = '󰬀', hl = 'MiniIconsGrey' },
1733
+ squid = { glyph = '󰒓', hl = 'MiniIconsYellow' },
1734
+ squirrel = { glyph = '', hl = 'MiniIconsGrey' },
1735
+ srec = { glyph = '󰍛', hl = 'MiniIconsAzure' },
1736
+ srt = { glyph = '󰨖', hl = 'MiniIconsYellow' },
1737
+ ssa = { glyph = '󰨖', hl = 'MiniIconsOrange' },
1738
+ sshconfig = { glyph = '󰒓', hl = 'MiniIconsGreen' },
1739
+ sshdconfig = { glyph = '󰒓', hl = 'MiniIconsPurple' },
1740
+ st = { glyph = '󰄚', hl = 'MiniIconsOrange' },
1741
+ starlark = { glyph = '', hl = 'MiniIconsRed' },
1742
+ stata = { glyph = '󰝫', hl = 'MiniIconsRed' },
1743
+ stp = { glyph = '󰬀', hl = 'MiniIconsYellow' },
1744
+ strace = { glyph = '󰬀', hl = 'MiniIconsPurple' },
1745
+ structurizr = { glyph = '󰬀', hl = 'MiniIconsBlue' },
1746
+ stylus = { glyph = '󰴒', hl = 'MiniIconsGrey' },
1747
+ sudoers = { glyph = '󰒓', hl = 'MiniIconsGrey' },
1748
+ supercollider = { glyph = '󰆦', hl = 'MiniIconsGrey' },
1749
+ superhtml = { glyph = '󰌝', hl = 'MiniIconsPurple' },
1750
+ surface = { glyph = '󰬀', hl = 'MiniIconsRed' },
1751
+ svelte = { glyph = '', hl = 'MiniIconsOrange' },
1752
+ svg = { glyph = '󰜡', hl = 'MiniIconsYellow' },
1753
+ svn = { glyph = '󰜘', hl = 'MiniIconsOrange' },
1754
+ sway = { glyph = '󰬀', hl = 'MiniIconsCyan' },
1755
+ swayconfig = { glyph = '󰒓', hl = 'MiniIconsPurple' },
1756
+ swift = { glyph = '󰛥', hl = 'MiniIconsOrange' },
1757
+ swiftgyb = { glyph = '󰛥', hl = 'MiniIconsYellow' },
1758
+ swig = { glyph = '󰬀', hl = 'MiniIconsGreen' },
1759
+ sysctl = { glyph = '󰒓', hl = 'MiniIconsOrange' },
1760
+ sysml = { glyph = '󰬀', hl = 'MiniIconsCyan' },
1761
+ systemd = { glyph = '', hl = 'MiniIconsGrey' },
1762
+ systemverilog = { glyph = '󰍛', hl = 'MiniIconsGreen' },
1763
+ tablegen = { glyph = '󰬁', hl = 'MiniIconsGrey' },
1764
+ tads = { glyph = '󱩼', hl = 'MiniIconsAzure' },
1765
+ tags = { glyph = '󰓻', hl = 'MiniIconsGreen' },
1766
+ tak = { glyph = '󰔏', hl = 'MiniIconsRed' },
1767
+ takcmp = { glyph = '󰔏', hl = 'MiniIconsGreen' },
1768
+ takout = { glyph = '󰔏', hl = 'MiniIconsBlue' },
1769
+ tal = { glyph = '󰬁', hl = 'MiniIconsBlue' },
1770
+ tap = { glyph = '󰬁', hl = 'MiniIconsAzure' },
1771
+ tar = { glyph = '󰬁', hl = 'MiniIconsCyan' },
1772
+ taskdata = { glyph = '󱒋', hl = 'MiniIconsPurple' },
1773
+ taskedit = { glyph = '󰬁', hl = 'MiniIconsAzure' },
1774
+ tasm = { glyph = '', hl = 'MiniIconsPurple' },
1775
+ tcl = { glyph = '󰛓', hl = 'MiniIconsRed' },
1776
+ tcsh = { glyph = '', hl = 'MiniIconsAzure' },
1777
+ teal = { glyph = '󰢱', hl = 'MiniIconsCyan' },
1778
+ templ = { glyph = '󰬁', hl = 'MiniIconsAzure' },
1779
+ template = { glyph = '󰬁', hl = 'MiniIconsGreen' },
1780
+ tera = { glyph = '󰬁', hl = 'MiniIconsAzure' },
1781
+ teraterm = { glyph = '󰅭', hl = 'MiniIconsGreen' },
1782
+ terminfo = { glyph = '', hl = 'MiniIconsGrey' },
1783
+ terraform = { glyph = '󱁢', hl = 'MiniIconsBlue' },
1784
+ ['terraform-vars'] = { glyph = '󱁢', hl = 'MiniIconsAzure' },
1785
+ tex = { glyph = '', hl = 'MiniIconsGreen' },
1786
+ texinfo = { glyph = '', hl = 'MiniIconsAzure' },
1787
+ texmf = { glyph = '󰒓', hl = 'MiniIconsPurple' },
1788
+ text = { glyph = '󰦪', hl = 'MiniIconsYellow' },
1789
+ tf = { glyph = '󰬁', hl = 'MiniIconsRed' },
1790
+ thrift = { glyph = '󰬁', hl = 'MiniIconsPurple' },
1791
+ tiasm = { glyph = '', hl = 'MiniIconsCyan' },
1792
+ tidy = { glyph = '󰌝', hl = 'MiniIconsBlue' },
1793
+ tiger = { glyph = '󰄛', hl = 'MiniIconsOrange' },
1794
+ tilde = { glyph = '󰜥', hl = 'MiniIconsRed' },
1795
+ tiltfile = { glyph = '󰬁', hl = 'MiniIconsYellow' },
1796
+ tla = { glyph = '󰬁', hl = 'MiniIconsAzure' },
1797
+ tli = { glyph = '󰬁', hl = 'MiniIconsCyan' },
1798
+ tmux = { glyph = '󰒓', hl = 'MiniIconsGreen' },
1799
+ toml = { glyph = '', hl = 'MiniIconsOrange' },
1800
+ tpp = { glyph = '󰐨', hl = 'MiniIconsPurple' },
1801
+ trace32 = { glyph = '󰬁', hl = 'MiniIconsCyan' },
1802
+ trasys = { glyph = '󰬁', hl = 'MiniIconsBlue' },
1803
+ treetop = { glyph = '󰔱', hl = 'MiniIconsGreen' },
1804
+ trig = { glyph = '󱁉', hl = 'MiniIconsYellow' },
1805
+ trustees = { glyph = '󰬁', hl = 'MiniIconsPurple' },
1806
+ tsalt = { glyph = '󰬁', hl = 'MiniIconsPurple' },
1807
+ tsscl = { glyph = '󱣖', hl = 'MiniIconsGreen' },
1808
+ tssgm = { glyph = '󱣖', hl = 'MiniIconsYellow' },
1809
+ tssop = { glyph = '󱣖', hl = 'MiniIconsGrey' },
1810
+ tsv = { glyph = '', hl = 'MiniIconsBlue' },
1811
+ tt2 = { glyph = '', hl = 'MiniIconsAzure' },
1812
+ tt2html = { glyph = '', hl = 'MiniIconsOrange' },
1813
+ tt2js = { glyph = '', hl = 'MiniIconsYellow' },
1814
+ turtle = { glyph = '󰳗', hl = 'MiniIconsGreen' },
1815
+ tutor = { glyph = '󱆀', hl = 'MiniIconsPurple' },
1816
+ twig = { glyph = '', hl = 'MiniIconsGreen' },
1817
+ typescript = { glyph = '󰛦', hl = 'MiniIconsAzure' },
1818
+ ['typescript.glimmer'] = { glyph = '󰛦', hl = 'MiniIconsRed' },
1819
+ typescriptreact = { glyph = '', hl = 'MiniIconsBlue' },
1820
+ typespec = { glyph = '󰬁', hl = 'MiniIconsPurple' },
1821
+ typst = { glyph = '󰬛', hl = 'MiniIconsAzure' },
1822
+ uc = { glyph = '󰬂', hl = 'MiniIconsGrey' },
1823
+ uci = { glyph = '󰒓', hl = 'MiniIconsRed' },
1824
+ udevconf = { glyph = '󰒓', hl = 'MiniIconsOrange' },
1825
+ udevperm = { glyph = '󰬂', hl = 'MiniIconsOrange' },
1826
+ udevrules = { glyph = '󰬂', hl = 'MiniIconsBlue' },
1827
+ uil = { glyph = '󰬂', hl = 'MiniIconsGrey' },
1828
+ ungrammar = { glyph = '󱘎', hl = 'MiniIconsYellow' },
1829
+ unison = { glyph = '󰡉', hl = 'MiniIconsYellow' },
1830
+ updatedb = { glyph = '󰒓', hl = 'MiniIconsGrey' },
1831
+ upstart = { glyph = '󰬂', hl = 'MiniIconsCyan' },
1832
+ upstreamdat = { glyph = '󰬂', hl = 'MiniIconsGreen' },
1833
+ upstreaminstalllog = { glyph = '󰷐', hl = 'MiniIconsBlue' },
1834
+ upstreamlog = { glyph = '󰷐', hl = 'MiniIconsBlue' },
1835
+ upstreamrpt = { glyph = '󰬂', hl = 'MiniIconsYellow' },
1836
+ urlshortcut = { glyph = '󰌷', hl = 'MiniIconsPurple' },
1837
+ usd = { glyph = '󰻇', hl = 'MiniIconsAzure' },
1838
+ usserverlog = { glyph = '󰷐', hl = 'MiniIconsBlue' },
1839
+ usw2kagtlog = { glyph = '󰷐', hl = 'MiniIconsBlue' },
1840
+ v = { glyph = '', hl = 'MiniIconsBlue' },
1841
+ vala = { glyph = '󰬝', hl = 'MiniIconsPurple' },
1842
+ valgrind = { glyph = '󰍛', hl = 'MiniIconsGrey' },
1843
+ vb = { glyph = '󰛤', hl = 'MiniIconsPurple' },
1844
+ vdf = { glyph = '󰬃', hl = 'MiniIconsCyan' },
1845
+ vdmpp = { glyph = '󱂌', hl = 'MiniIconsYellow' },
1846
+ vdmrt = { glyph = '󱂌', hl = 'MiniIconsGreen' },
1847
+ vdmsl = { glyph = '󱂌', hl = 'MiniIconsAzure' },
1848
+ vento = { glyph = '󱂌', hl = 'MiniIconsPurple' },
1849
+ vera = { glyph = '󰬃', hl = 'MiniIconsCyan' },
1850
+ verilog = { glyph = '󰍛', hl = 'MiniIconsGreen' },
1851
+ verilogams = { glyph = '󰍛', hl = 'MiniIconsGreen' },
1852
+ vgrindefs = { glyph = '󰬃', hl = 'MiniIconsPurple' },
1853
+ vhdl = { glyph = '󰍛', hl = 'MiniIconsGreen' },
1854
+ vhs = { glyph = '󰨛', hl = 'MiniIconsBlue' },
1855
+ vim = { glyph = '', hl = 'MiniIconsGreen' },
1856
+ viminfo = { glyph = '', hl = 'MiniIconsBlue' },
1857
+ virata = { glyph = '󰒓', hl = 'MiniIconsCyan' },
1858
+ vmasm = { glyph = '', hl = 'MiniIconsPurple' },
1859
+ voscm = { glyph = '󰬃', hl = 'MiniIconsCyan' },
1860
+ vrml = { glyph = '󰬃', hl = 'MiniIconsBlue' },
1861
+ vroom = { glyph = '', hl = 'MiniIconsOrange' },
1862
+ vsejcl = { glyph = '󰬃', hl = 'MiniIconsCyan' },
1863
+ vue = { glyph = '󰡄', hl = 'MiniIconsGreen' },
1864
+ wat = { glyph = '', hl = 'MiniIconsPurple' },
1865
+ wdiff = { glyph = '󰦓', hl = 'MiniIconsBlue' },
1866
+ wdl = { glyph = '󰬄', hl = 'MiniIconsGrey' },
1867
+ web = { glyph = '󰯊', hl = 'MiniIconsGrey' },
1868
+ webmacro = { glyph = '󰬄', hl = 'MiniIconsCyan' },
1869
+ wget = { glyph = '󰒓', hl = 'MiniIconsYellow' },
1870
+ wget2 = { glyph = '󰒓', hl = 'MiniIconsBlue' },
1871
+ wgsl = { glyph = '󰬄', hl = 'MiniIconsBlue' },
1872
+ winbatch = { glyph = '󰯂', hl = 'MiniIconsBlue' },
1873
+ wit = { glyph = '', hl = 'MiniIconsCyan' },
1874
+ wml = { glyph = '󰖟', hl = 'MiniIconsGreen' },
1875
+ wsh = { glyph = '󰯂', hl = 'MiniIconsPurple' },
1876
+ wsml = { glyph = '󰬄', hl = 'MiniIconsAzure' },
1877
+ wvdial = { glyph = '󰒓', hl = 'MiniIconsAzure' },
1878
+ xbl = { glyph = '󰬅', hl = 'MiniIconsAzure' },
1879
+ xcompose = { glyph = '󰌌', hl = 'MiniIconsOrange' },
1880
+ xdefaults = { glyph = '󰒓', hl = 'MiniIconsBlue' },
1881
+ xf86conf = { glyph = '󰒓', hl = 'MiniIconsAzure' },
1882
+ xhtml = { glyph = '󰌝', hl = 'MiniIconsOrange' },
1883
+ xinetd = { glyph = '󰒓', hl = 'MiniIconsGreen' },
1884
+ xkb = { glyph = '󰌌', hl = 'MiniIconsPurple' },
1885
+ xmath = { glyph = '󰬅', hl = 'MiniIconsYellow' },
1886
+ xml = { glyph = '󰗀', hl = 'MiniIconsOrange' },
1887
+ xmodmap = { glyph = '󰬅', hl = 'MiniIconsCyan' },
1888
+ xpm = { glyph = '󰍹', hl = 'MiniIconsYellow' },
1889
+ xpm2 = { glyph = '󰍹', hl = 'MiniIconsGreen' },
1890
+ xquery = { glyph = '󰗀', hl = 'MiniIconsAzure' },
1891
+ xs = { glyph = '', hl = 'MiniIconsRed' },
1892
+ xsd = { glyph = '󰗀', hl = 'MiniIconsYellow' },
1893
+ xslt = { glyph = '󰗀', hl = 'MiniIconsGreen' },
1894
+ xxd = { glyph = '󰬅', hl = 'MiniIconsBlue' },
1895
+ yacc = { glyph = '󰬆', hl = 'MiniIconsOrange' },
1896
+ yaml = { glyph = '', hl = 'MiniIconsPurple' },
1897
+ yang = { glyph = '󰬆', hl = 'MiniIconsCyan' },
1898
+ yuck = { glyph = '󰬆', hl = 'MiniIconsYellow' },
1899
+ z8a = { glyph = '', hl = 'MiniIconsGrey' },
1900
+ zathurarc = { glyph = '󰒓', hl = 'MiniIconsRed' },
1901
+ zig = { glyph = '', hl = 'MiniIconsOrange' },
1902
+ ziggy = { glyph = '󰬇', hl = 'MiniIconsBlue' },
1903
+ ziggy_schema = { glyph = '󰬇', hl = 'MiniIconsAzure' },
1904
+ zimbu = { glyph = '󰬇', hl = 'MiniIconsGreen' },
1905
+ zimbutempl = { glyph = '󰬇', hl = 'MiniIconsOrange' },
1906
+ zip = { glyph = '󰗄', hl = 'MiniIconsGreen' },
1907
+ zir = { glyph = '', hl = 'MiniIconsOrange' },
1908
+ zserio = { glyph = '󰬇', hl = 'MiniIconsGrey' },
1909
+ zsh = { glyph = '', hl = 'MiniIconsGreen' },
1910
+
1911
+ -- Popular filetype which require user configuration
1912
+ helm = { glyph = '󰠳', hl = 'MiniIconsBlue' },
1913
+ ['yaml.ansible'] = { glyph = '󱂚', hl = 'MiniIconsGrey' },
1914
+ ['yaml.docker-compose'] = { glyph = '󰡨', hl = 'MiniIconsYellow' },
1915
+
1916
+ -- 'mini.nvim'
1917
+ ['minideps-confirm'] = { glyph = '', hl = 'MiniIconsOrange' },
1918
+ minifiles = { glyph = '', hl = 'MiniIconsGreen' },
1919
+ ['minifiles-help'] = { glyph = '', hl = 'MiniIconsGreen' },
1920
+ mininotify = { glyph = '', hl = 'MiniIconsYellow' },
1921
+ ['mininotify-history'] = { glyph = '', hl = 'MiniIconsYellow' },
1922
+ minipick = { glyph = '', hl = 'MiniIconsCyan' },
1923
+ ministarter = { glyph = '', hl = 'MiniIconsAzure' },
1924
+
1925
+ -- Popular Lua plugins which have a dedicated "current window" workflow (i.e.
1926
+ -- when displaying filetype might make sense, especially with 'laststatus=3')
1927
+ aerial = { glyph = '󱘎', hl = 'MiniIconsPurple' },
1928
+ alpha = { glyph = '󰀫', hl = 'MiniIconsOrange' },
1929
+ dapui_breakpoints = { glyph = '󰃤', hl = 'MiniIconsRed' },
1930
+ dapui_console = { glyph = '󰃤', hl = 'MiniIconsRed' },
1931
+ dapui_hover = { glyph = '󰃤', hl = 'MiniIconsRed' },
1932
+ dapui_scopes = { glyph = '󰃤', hl = 'MiniIconsRed' },
1933
+ dapui_stacks = { glyph = '󰃤', hl = 'MiniIconsRed' },
1934
+ dapui_watches = { glyph = '󰃤', hl = 'MiniIconsRed' },
1935
+ dashboard = { glyph = '󰕮', hl = 'MiniIconsOrange' },
1936
+ edgy = { glyph = '󰛺', hl = 'MiniIconsGrey' },
1937
+ fzf = { glyph = '󱡠', hl = 'MiniIconsAzure' },
1938
+ harpoon = { glyph = '󱡀', hl = 'MiniIconsCyan' },
1939
+ lazy = { glyph = '󰒲', hl = 'MiniIconsBlue' },
1940
+ mason = { glyph = '󱌢', hl = 'MiniIconsGrey' },
1941
+ ['neo-tree'] = { glyph = '󰙅', hl = 'MiniIconsYellow' },
1942
+ ['neo-tree-popup'] = { glyph = '󰙅', hl = 'MiniIconsYellow' },
1943
+ neogitcommitselectview = { glyph = '󰊢', hl = 'MiniIconsOrange' },
1944
+ neogitcommitview = { glyph = '󰊢', hl = 'MiniIconsOrange' },
1945
+ neogitconsole = { glyph = '󰊢', hl = 'MiniIconsOrange' },
1946
+ neogitdiffview = { glyph = '󰊢', hl = 'MiniIconsOrange' },
1947
+ neogitgitcommandhistory = { glyph = '󰊢', hl = 'MiniIconsOrange' },
1948
+ neogitlogview = { glyph = '󰊢', hl = 'MiniIconsOrange' },
1949
+ neogitpopup = { glyph = '󰊢', hl = 'MiniIconsOrange' },
1950
+ neogitrebasetodo = { glyph = '󰊢', hl = 'MiniIconsOrange' },
1951
+ neogitreflogview = { glyph = '󰊢', hl = 'MiniIconsOrange' },
1952
+ neogitrefsview = { glyph = '󰊢', hl = 'MiniIconsOrange' },
1953
+ neogitstatus = { glyph = '󰊢', hl = 'MiniIconsOrange' },
1954
+ ['neotest-output-panel'] = { glyph = '󰱑', hl = 'MiniIconsRed' },
1955
+ ['neotest-summary'] = { glyph = '󰱑', hl = 'MiniIconsRed' },
1956
+ nvimtree = { glyph = '󰙅', hl = 'MiniIconsGreen' },
1957
+ oil = { glyph = '󰙅', hl = 'MiniIconsPurple' },
1958
+ overseerform = { glyph = '󰜎', hl = 'MiniIconsBlue' },
1959
+ overseerlist = { glyph = '󰜎', hl = 'MiniIconsBlue' },
1960
+ telescopeprompt = { glyph = '󰭎', hl = 'MiniIconsAzure' },
1961
+ trouble = { glyph = '󰙅', hl = 'MiniIconsRed' },
1962
+ }
1963
+
1964
+ -- LSP kind values (completion item, symbol, etc.) icons.
1965
+ -- Use only `nf-cod-*` classes with "outline" look. Balance colors.
1966
+ --stylua: ignore
1967
+ H.lsp_icons = {
1968
+ array = { glyph = '', hl = 'MiniIconsOrange' },
1969
+ boolean = { glyph = '', hl = 'MiniIconsOrange' },
1970
+ class = { glyph = '', hl = 'MiniIconsPurple' },
1971
+ color = { glyph = '', hl = 'MiniIconsRed' },
1972
+ constant = { glyph = '', hl = 'MiniIconsOrange' },
1973
+ constructor = { glyph = '', hl = 'MiniIconsAzure' },
1974
+ enum = { glyph = '', hl = 'MiniIconsPurple' },
1975
+ enummember = { glyph = '', hl = 'MiniIconsYellow' },
1976
+ event = { glyph = '', hl = 'MiniIconsRed' },
1977
+ field = { glyph = '', hl = 'MiniIconsYellow' },
1978
+ file = { glyph = '', hl = 'MiniIconsBlue' },
1979
+ folder = { glyph = '', hl = 'MiniIconsBlue' },
1980
+ ['function'] = { glyph = '', hl = 'MiniIconsAzure' },
1981
+ interface = { glyph = '', hl = 'MiniIconsPurple' },
1982
+ key = { glyph = '', hl = 'MiniIconsYellow' },
1983
+ keyword = { glyph = '', hl = 'MiniIconsCyan' },
1984
+ method = { glyph = '', hl = 'MiniIconsAzure' },
1985
+ module = { glyph = '', hl = 'MiniIconsPurple' },
1986
+ namespace = { glyph = '', hl = 'MiniIconsRed' },
1987
+ null = { glyph = '', hl = 'MiniIconsGrey' },
1988
+ number = { glyph = '', hl = 'MiniIconsOrange' },
1989
+ object = { glyph = '', hl = 'MiniIconsGrey' },
1990
+ operator = { glyph = '', hl = 'MiniIconsCyan' },
1991
+ package = { glyph = '', hl = 'MiniIconsPurple' },
1992
+ property = { glyph = '', hl = 'MiniIconsYellow' },
1993
+ reference = { glyph = '', hl = 'MiniIconsCyan' },
1994
+ snippet = { glyph = '', hl = 'MiniIconsGreen' },
1995
+ string = { glyph = '', hl = 'MiniIconsGreen' },
1996
+ struct = { glyph = '', hl = 'MiniIconsPurple' },
1997
+ text = { glyph = '', hl = 'MiniIconsGreen' },
1998
+ typeparameter = { glyph = '', hl = 'MiniIconsCyan' },
1999
+ unit = { glyph = '', hl = 'MiniIconsCyan' },
2000
+ value = { glyph = '', hl = 'MiniIconsBlue' },
2001
+ variable = { glyph = '', hl = 'MiniIconsCyan' },
2002
+ }
2003
+
2004
+ -- OS icons. Keys are for operating systems present as `md-*` class icons, as
2005
+ -- this feels representative of "popular" operating systems.
2006
+ --stylua: ignore
2007
+ H.os_icons = {
2008
+ android = { glyph = '󰀲', hl = 'MiniIconsGreen' },
2009
+ arch = { glyph = '󰣇', hl = 'MiniIconsAzure' },
2010
+ centos = { glyph = '󱄚', hl = 'MiniIconsRed' },
2011
+ debian = { glyph = '󰣚', hl = 'MiniIconsRed' },
2012
+ fedora = { glyph = '󰣛', hl = 'MiniIconsBlue' },
2013
+ freebsd = { glyph = '󰣠', hl = 'MiniIconsRed' },
2014
+ gentoo = { glyph = '󰣨', hl = 'MiniIconsPurple' },
2015
+ ios = { glyph = '󰀷', hl = 'MiniIconsYellow' },
2016
+ linux = { glyph = '󰌽', hl = 'MiniIconsCyan' },
2017
+ macos = { glyph = '󰀵', hl = 'MiniIconsGrey' },
2018
+ manjaro = { glyph = '󱘊', hl = 'MiniIconsGreen' },
2019
+ mint = { glyph = '󰣭', hl = 'MiniIconsGreen' },
2020
+ nixos = { glyph = '󱄅', hl = 'MiniIconsAzure' },
2021
+ raspberry_pi = { glyph = '󰐿', hl = 'MiniIconsRed' },
2022
+ redhat = { glyph = '󱄛', hl = 'MiniIconsRed' },
2023
+ ubuntu = { glyph = '󰕈', hl = 'MiniIconsOrange' },
2024
+ windows = { glyph = '󰖳', hl = 'MiniIconsBlue' },
2025
+ }
2026
+
2027
+ -- Helper functionality =======================================================
2028
+ -- Settings -------------------------------------------------------------------
2029
+ H.setup_config = function(config)
2030
+ H.check_type('config', config, 'table', true)
2031
+ config = vim.tbl_deep_extend('force', vim.deepcopy(H.default_config), config or {})
2032
+
2033
+ H.check_type('style', config.style, 'string')
2034
+ H.check_type('default', config.default, 'table')
2035
+ H.check_type('directory', config.directory, 'table')
2036
+ H.check_type('extension', config.extension, 'table')
2037
+ H.check_type('file', config.file, 'table')
2038
+ H.check_type('filetype', config.filetype, 'table')
2039
+ H.check_type('lsp', config.lsp, 'table')
2040
+ H.check_type('os', config.os, 'table')
2041
+ H.check_type('use_file_extension', config.use_file_extension, 'function')
2042
+
2043
+ return config
2044
+ end
2045
+
2046
+ H.apply_config = function(config)
2047
+ MiniIcons.config = config
2048
+
2049
+ -- Initialize cache for quicker `get()`
2050
+ H.init_cache(config)
2051
+ end
2052
+
2053
+ H.create_autocommands = function()
2054
+ local gr = vim.api.nvim_create_augroup('MiniIcons', {})
2055
+ vim.api.nvim_create_autocmd('ColorScheme', { group = gr, callback = H.create_default_hl, desc = 'Ensure colors' })
2056
+ end
2057
+
2058
+ --stylua: ignore
2059
+ H.create_default_hl = function()
2060
+ local hi = function(name, opts)
2061
+ opts.default = true
2062
+ vim.api.nvim_set_hl(0, name, opts)
2063
+ end
2064
+
2065
+ hi('MiniIconsAzure', { link = 'Function' })
2066
+ hi('MiniIconsBlue', { link = 'DiagnosticInfo' })
2067
+ hi('MiniIconsCyan', { link = 'DiagnosticHint' })
2068
+ hi('MiniIconsGreen', { link = 'DiagnosticOk' })
2069
+ hi('MiniIconsGrey', {})
2070
+ hi('MiniIconsOrange', { link = 'DiagnosticWarn' })
2071
+ hi('MiniIconsPurple', { link = 'Constant' })
2072
+ hi('MiniIconsRed', { link = 'DiagnosticError' })
2073
+ hi('MiniIconsYellow', { link = 'DiagnosticWarn' })
2074
+ end
2075
+
2076
+ -- Cache ----------------------------------------------------------------------
2077
+ H.init_cache = function(config)
2078
+ -- NOTE: process in 'filetype' - 'extension' - 'file' order because previous
2079
+ -- might be used to infer missing data in the next
2080
+ local categories = { 'directory', 'filetype', 'extension', 'file', 'lsp', 'os' }
2081
+
2082
+ H.cache, H.cache_index, H.cache_index_lookup = { default = {} }, {}, {}
2083
+ for _, cat in ipairs(categories) do
2084
+ -- Set "default" category
2085
+ local icon_def, hl_def = H.resolve_icon_data('default', cat, config.default[cat])
2086
+ H.cache_set('default', cat, icon_def, hl_def)
2087
+
2088
+ -- Set custom icons while ensuring proper "fallback" category index entry
2089
+ table.insert(H.cache_index, { icon_def, hl_def, true })
2090
+ H.cache[cat] = { [true] = #H.cache_index }
2091
+ for name, icon_data in pairs(config[cat]) do
2092
+ local icon, hl = H.resolve_icon_data(cat, name, icon_data)
2093
+ H.cache_set(cat, name, icon, hl)
2094
+ end
2095
+ end
2096
+ local icon_def_def, hl_def_def = H.resolve_icon_data('default', 'default', config.default.default)
2097
+ H.cache_set('default', 'default', icon_def_def, hl_def_def)
2098
+ end
2099
+
2100
+ H.resolve_icon_data = function(category, name, icon_data)
2101
+ if type(name) ~= 'string' then return nil end
2102
+
2103
+ icon_data = type(icon_data) == 'table' and icon_data or {}
2104
+ local glyph, hl = icon_data.glyph, icon_data.hl
2105
+
2106
+ -- Allow customizing only one characteristic with proper fallback
2107
+ local has_glyph, has_hl = type(glyph) == 'string', type(hl) == 'string'
2108
+ local builtin_glyph, builtin_hl = '', ''
2109
+ if not (has_glyph and has_hl) then
2110
+ if category == 'default' then
2111
+ builtin_glyph, builtin_hl = H.default_icons[name].glyph, H.default_icons[name].hl
2112
+ else
2113
+ builtin_glyph, builtin_hl = MiniIcons.get(category, name)
2114
+ end
2115
+ end
2116
+ return H.style_icon(has_glyph and glyph or builtin_glyph, name), has_hl and hl or builtin_hl
2117
+ end
2118
+
2119
+ H.cache_get = function(cat, name) return H.cache_index[H.cache[cat][name]] end
2120
+
2121
+ H.cache_set = function(cat, name, icon, hl)
2122
+ -- Process category fallback icon separately
2123
+ if icon == nil then
2124
+ local fallback_id = H.cache[cat][true]
2125
+ H.cache[cat][name] = fallback_id
2126
+ local t = H.cache_index[fallback_id]
2127
+ return t[1], t[2], true
2128
+ end
2129
+
2130
+ -- Compute/ensure cache index
2131
+ local id = (H.cache_index_lookup[hl] or {})[icon]
2132
+ if id == nil then
2133
+ -- Add new unique 'icon-hl'
2134
+ table.insert(H.cache_index, { icon, hl })
2135
+ id = #H.cache_index
2136
+
2137
+ -- Add corresponding lookup entry
2138
+ local hl_icons = H.cache_index_lookup[hl] or {}
2139
+ hl_icons[icon] = id
2140
+ H.cache_index_lookup[hl] = hl_icons
2141
+ end
2142
+
2143
+ -- Add to cache and return result tuple
2144
+ H.cache[cat][name] = id
2145
+ return icon, hl, false
2146
+ end
2147
+
2148
+ -- Getters --------------------------------------------------------------------
2149
+ H.get_impl = {
2150
+ default = function(name) H.error(vim.inspect(name) .. ' is not a supported category.') end,
2151
+ directory = function(name) return H.directory_icons[name] end,
2152
+ extension = function(name)
2153
+ -- Built-in extensions
2154
+ local icon_data = H.extension_icons[name]
2155
+ if type(icon_data) == 'string' then return MiniIcons.get('filetype', icon_data) end
2156
+ if icon_data ~= nil then return icon_data end
2157
+
2158
+ -- Parts of complex extension (if can be recognized)
2159
+ local dot = string.find(name, '%..')
2160
+ while dot ~= nil do
2161
+ local ext = name:sub(dot + 1)
2162
+ if H.extension_icons[ext] or MiniIcons.config.extension[ext] then return MiniIcons.get('extension', ext) end
2163
+ dot = string.find(name, '%..', dot + 1)
2164
+ end
2165
+
2166
+ -- Fall back to built-in filetype matching using generic filename
2167
+ local ft = H.filetype_match('aaa.' .. name)
2168
+ if ft ~= nil then return MiniIcons.get('filetype', ft) end
2169
+ end,
2170
+ file = function(name)
2171
+ local basename = H.fs_basename(name)
2172
+
2173
+ -- User configured file names
2174
+ if MiniIcons.config.file[basename] ~= nil and name ~= basename then return MiniIcons.get('file', basename) end
2175
+
2176
+ -- Built-in file names
2177
+ local icon_data = H.file_icons[basename]
2178
+ if type(icon_data) == 'string' then return MiniIcons.get('filetype', icon_data) end
2179
+ -- - Style icon based on the basename and not full name
2180
+ if icon_data ~= nil then return H.style_icon(icon_data.glyph, basename), icon_data.hl end
2181
+
2182
+ -- Basename extensions. Prefer this before `vim.filetype.match()` for speed
2183
+ -- (as the latter is slow-ish; like 0.1 ms in Neovim<0.11)
2184
+ local dot = string.find(basename, '%..', 2)
2185
+ if dot ~= nil then
2186
+ local ext = basename:sub(dot + 1):lower()
2187
+ if MiniIcons.config.use_file_extension(ext, name) == true then
2188
+ local icon, hl, is_default = MiniIcons.get('extension', ext)
2189
+ if not is_default then return icon, hl end
2190
+ end
2191
+ end
2192
+
2193
+ -- Fall back to built-in filetype matching with full supplied name (matters
2194
+ -- when full path is supplied to match complex filetype patterns)
2195
+ local ft = H.filetype_match(name)
2196
+ if ft ~= nil then return MiniIcons.get('filetype', ft) end
2197
+ end,
2198
+ filetype = function(name) return H.filetype_icons[name] end,
2199
+ lsp = function(name) return H.lsp_icons[name] end,
2200
+ os = function(name) return H.os_icons[name] end,
2201
+ }
2202
+
2203
+ H.str_byteindex = function(s, i) return vim.str_byteindex(s, 'utf-32', i) end
2204
+ if vim.fn.has('nvim-0.11') == 0 then H.str_byteindex = function(s, i) return vim.str_byteindex(s, i) end end
2205
+
2206
+ H.style_icon = function(glyph, name)
2207
+ if MiniIcons.config.style ~= 'ascii' then return glyph end
2208
+ -- Use `vim.str_byteindex()` and `vim.fn.toupper()` for multibyte characters
2209
+ return vim.fn.toupper(name:sub(1, H.str_byteindex(name, 1)))
2210
+ end
2211
+
2212
+ H.filetype_match = function(filename)
2213
+ -- Ensure always present scratch buffer to be used in `vim.filetype.match()`
2214
+ -- (needed because the function in many ambiguous cases prefers to return
2215
+ -- nothing if there is no buffer supplied)
2216
+ local buf_id = H.scratch_buf_id
2217
+ if buf_id == nil or not vim.api.nvim_buf_is_loaded(buf_id) then
2218
+ pcall(vim.api.nvim_buf_delete, buf_id, { force = true })
2219
+ buf_id = vim.api.nvim_create_buf(false, true)
2220
+ H.set_buf_name(buf_id, 'filetype-match-scratch')
2221
+ H.scratch_buf_id = buf_id
2222
+ end
2223
+
2224
+ -- `vim.filetype.match` can error for relative path when cwd does not exist
2225
+ local ok, ft = pcall(vim.filetype.match, { filename = filename, buf = H.scratch_buf_id })
2226
+ if ok then return ft end
2227
+ ok, ft = pcall(vim.filetype.match, { filename = '~/' .. filename, buf = H.scratch_buf_id })
2228
+ return ok and ft or nil
2229
+ end
2230
+
2231
+ -- Utilities ------------------------------------------------------------------
2232
+ H.error = function(msg) error('(mini.icons) ' .. msg, 0) end
2233
+
2234
+ H.check_type = function(name, val, ref, allow_nil)
2235
+ if type(val) == ref or (ref == 'callable' and vim.is_callable(val)) or (allow_nil and val == nil) then return end
2236
+ H.error(string.format('`%s` should be %s, not %s', name, ref, type(val)))
2237
+ end
2238
+
2239
+ H.set_buf_name = function(buf_id, name) vim.api.nvim_buf_set_name(buf_id, 'miniicons://' .. buf_id .. '/' .. name) end
2240
+
2241
+ H.notify = function(msg, level_name) vim.notify('(mini.icons) ' .. msg, vim.log.levels[level_name]) end
2242
+
2243
+ H.fs_basename = function(x) return vim.fn.fnamemodify(x:sub(-1, -1) == '/' and x:sub(1, -2) or x, ':t') end
2244
+ if vim.loop.os_uname().sysname == 'Windows_NT' then
2245
+ H.fs_basename = function(x)
2246
+ local last = x:sub(-1, -1)
2247
+ return vim.fn.fnamemodify((last == '/' or last == '\\') and x:sub(1, -2) or x, ':t')
2248
+ end
2249
+ end
2250
+
2251
+ -- Initialize cache right away to allow using `get()` without `setup()`
2252
+ H.init_cache(MiniIcons.config)
2253
+
2254
+ return MiniIcons