A company front-end with icons.
Differences with the built-in front-end:
- Differents colors for differents backends.
- Icons associated to functions/variables/.. and their backends
- Display candidate's documentation (support
quickhelp-string
) - Not limited by the current window size, buffer's text properties, .. (it's better than you might think)
This package requires emacs 26.
Also, not compatible with emacs in a tty.
;; With use-package:
(use-package company-box
:hook (company-mode . company-box-mode))
;; Or:
(require 'company-box)
(add-hook 'company-mode-hook 'company-box-mode)
To customize:
M-x customize-group [RET] company-box [RET]
See the docstring of the variable company-box-backends-colors
:
C-h v company-box-backends-colors
You can select different themes with company-box-icons-alist
See the variable company-box-icons-functions
For now, there are customs icons for 4 backends only: company-lsp
, company-elisp
, company-yasnippet
and company-php
.
You can customize their icons with the variables:
company-box-icons-lsp
, company-box-icons-elisp
, company-box-icons-yasnippet
and company-box-icons-acphp
.
Notes:
By default, images are used to display icons.
You can also use font icons
With images, you can't change icons colors
You can position the frame downwards by setting the variable company-box-frame-top-margin
to a positive number. This is useful if your base code/text has an enlarged line height, and company box is intruding into the line above. It's also useful, if you're using copilot and want to see a few lines of suggested code unobscured by the company box. See PR #205 for details.
You can set the top margin mode-dependent via mode hooks, if you want. E.g. in Doom Emacs:
(use-package! company-box
:defer t
:config
(setq-hook! 'prog-mode-hook
company-box-frame-top-margin 20)
(setq-hook! 'text-mode-hook
company-box-frame-top-margin 75)
)