/nerd-icons-corfu

Icons for corfu via nerd-icons

Primary LanguageEmacs LispGNU General Public License v3.0GPL-3.0

nerd-icons-corfu.el - Icons for Corfu via nerd-icons

https://melpa.org/packages/nerd-icons-corfu-badge.svg

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 if a screenshot of the GUI version.

screenshots/gui.png

Note that you need a Nerd Font installed for it to work.

Usage

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 linking 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.

Difference from kind-icon

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:

  1. Though kind-icon focuses on Corfu, it’s more-or-less agnostic, you can use it for company-mode, for instance. This package is more limited in regard to scope: it implements icons for Corfu via Nerd Fonts, and only that.
  2. 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.