Code Monkey home page Code Monkey logo

nerd-icons-corfu's Introduction

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.

nerd-icons-corfu's People

Contributors

fredericgiquel avatar luigipiucco avatar minad avatar seagle0128 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

nerd-icons-corfu's Issues

icons are displayed incorrectedly

I am using the latest nerd-icons-corfu with Emacs 29.1 on Windows 11, and got this issue. The screenshot is below.

nerd-icons-font-family is "Symbols Nerd Font Mono".

image

The root cause is here:

(when-let ((extra-face (plist-get icon-entry :face)))
(put-text-property 0 3 'face extra-face str))

Corfu strange cutoff

Only when I'm using icons the completion popup seems to have a strange margin on the bottom, like the icons seem to add a padding corfu isn't aware.
image

A delay on first open of corfu drop-down list of completions

Hi,

After fresh emacs restart, I feel delay on first TAB. I see empty corfu's dropdown and after some delay it fills with content. After that it works fast without any delay. May be do I need to preload nerd font somehow? Here my config:

(use-package nerd-icons-corfu
  :after corfu
  :config
  (add-to-list 'corfu-margin-formatters #'nerd-icons-corfu-formatter))

No icons in Lisp mode

Is there a way to enable icons in Lisp mode? Or generically is there a way to configure support for more modes?

Right-side truncation

The right-side of my corfu popup contains truncated text.

emacs-29.1 on macOS
Latest corfu, latest nerd-icons-corfu

corfu-margin-formatters is set to (nerd-icons-corfu-formatter)

image

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.