Nerd-icons-corfu.el is a library for adding icons to completions in Corfu. It uses nerd-icons.el under the hood and, as such, works on both GUI and terminal. Below is a screenshot of the GUI version.
Note that you need a Nerd Font installed for it to work.
nerd-icons-corfu
is on Melpa. You can install it with built-in
M-x package-install
.
To use it, add nerd-icons-corfu-formatter
to corfu-margin-formatters
, and
maybe tweak the icons to your liking in nerd-icons-corfu-mapping
:
(add-to-list 'corfu-margin-formatters #'nerd-icons-corfu-formatter)
;; Optionally:
(setq nerd-icons-corfu-mapping
'((array :style "cod" :icon "symbol_array" :face font-lock-type-face)
(boolean :style "cod" :icon "symbol_boolean" :face font-lock-builtin-face)
;; ...
(t :style "cod" :icon "code" :face font-lock-warning-face)))
;; Remember to add an entry for `t', the library uses that as default.
;; The Custom interface is also supported for tuning the variable above.
kind-icon is another, more well-known package that adds icons to Corfu. At a glance, this package may seem redundant. However, there are key differences in goals and methods, outlined in the following:
- Though
kind-icon
focuses on Corfu, it’s more-or-less agnostic, you can use it forcompany-mode
, for instance. This package is more limited in regard to scope: it implements icons for Corfu via Nerd Fonts, and only that. kind-icon
uses svg-lib under the hood, and it actually draws images for the icons. There is overhead related to this and the method requires a graphical display (on terminal, it only adds plaintext), therefore being less portable. Here the provider is nerd-icons.el, and the icons are actually Unicode text with a special font.
Additionally, it is possible to use nerd-icons.el with kind-icon, but the setup required is non-trivial, and it feels like overkill to bring in SVG drawing capabilities to render glyph text.
None of this is to say kind-icon
is bad or worse, it’s really a matter of taste,
since its icons are indeed a bit more elaborate.