#+title: ~corfu-terminal~ - Corfu popup on terminal

Corfu uses child frames to display candidates.  This makes Corfu
unusable on terminal.  This package replaces that with popup/popon,
which works everywhere.

| GUI            | Terminal (Colorterm) | TTY (with face customizations) |
|----------------+----------------------+--------------------------------|
| [[./demo-gui.png]] | [[./demo-colorterm.png]] | [[./demo-tty.png]]                 |

/Note: The above screenshots were taken with ~kind-icon~ enabled./
/And the TTY screenshot isn't a screenshot of a real TTY, it was/
/emulated on a terminal emulator with ~TERM=linux~ and ~COLORTERM=~,/
/and the Corfu faces were modified to make the popup/popon visible on/
/TTY./

* Installation

** Package

Install from NonGNU ELPA.

** Quelpa

#+begin_src emacs-lisp
(quelpa '(corfu-terminal
          :fetcher git
          :url "https://codeberg.org/akib/emacs-corfu-terminal.git"))
#+end_src

** Straight.el

#+begin_src emacs-lisp
(straight-use-package
 '(corfu-terminal
   :type git
   :repo "https://codeberg.org/akib/emacs-corfu-terminal.git"))
#+end_src

** Manual

Download the ~corfu-terminal.el~ file and put it in your ~load-path~.

* Usage

Enable the global minor mode =M-x corfu-terminal-mode= to enable
it. You'll probably want to enable it only on terminal.  In that case,
put the following in your init file:

#+begin_src emacs-lisp
(unless (display-graphic-p)
  (corfu-terminal-mode +1))
#+end_src

* Complementary Packages

- [[https://github.com/jdtsmith/kind-icon][~kind-icon~]]: ~kind-icon~ adds an icon in front of each candidate
  describing the kind of the candidate.
- [[https://github.com/galeo/corfu-doc][~corfu-doc~]] and [[https://codeberg.org/akib/emacs-corfu-doc-terminal][~corfu-doc-terminal~]]: ~corfu-doc~ show a
  documentation popup for the current candidate.  ~corfu-doc-terminal~
  provides a Popon (overlay) based display, so that you can use it on
  terminal.
