GNU-devel ELPA - company


Modular text completion framework
company-, 2022-Jan-11, 2.55 MiB
Dmitry Gutov <>
Browse ELPA's repository
CGit or Gitweb

To install this package, run in Emacs:

M-x package-install RET company RET

Full description

Company is a modular completion framework.  Modules for retrieving completion
candidates are called backends, modules for displaying them are frontends.

Company comes with many backends, e.g. `company-etags'.  These are
distributed in separate files and can be used individually.

Enable `company-mode' in all buffers with M-x global-company-mode.  For
further information look at the documentation for `company-mode' (C-h f
company-mode RET).

If you want to start a specific backend, call it interactively or use
`company-begin-backend'.  For example:
M-x company-abbrev will prompt for and insert an abbrev.

To write your own backend, look at the documentation for `company-backends'.
Here is a simple example completing "foo":

(defun company-my-backend (command &optional arg &rest ignored)
  (interactive (list 'interactive))
  (pcase command
    (`interactive (company-begin-backend 'company-my-backend))
    (`prefix (company-grab-symbol))
    (`candidates (list "foobar" "foobaz" "foobarbaz"))
    (`meta (format "This value is named %s" arg))))

Sometimes it is a good idea to mix several backends together, for example to
enrich gtags with dabbrev-code results (to emulate local variables).  To do
this, add a list with both backends as an element in `company-backends'.

Old versions

company- MiB
company- MiB
company- MiB
company- MiB
company- MiB
company- MiB
company- KiB
company- KiB
company- KiB
company- KiB


History of user-visible changes


  • company-auto-commit and company-auto-commit-chars have been renamed to company-insertion-on-trigger and company-insertion-triggers respectively (#1270).
  • New command company-complete-common-or-show-delayed-tooltip (#1214).
  • Faces company-scrollbar-fg and company-scrollbar-bg have been renamed to company-tooltip-scrollbar-thumb and company-tooltip-scrollbar-track respectively.
  • Better compatibility with visual-line-mode (#1257).
  • Better compatibility with org-indent-mode (#1252).
  • New backend command, deprecated. It returns whether the completion item is deprecated or not.
  • company-tooltip-common highlightings with non-prefix and prefix matching backends are more compatible: if the non-prefix matching backend's completions all have a common part, and so the current prefix can be expanded with company-complete-common, that part is now also highlighted with that face (#519).
  • company-yasnippet respects the condition directive in snippets (#1179).
  • New user option company-icon-margin.
  • company-show-numbers has been renamed to company-show-quick-access (#1115). New user options company-quick-access-keys and company-quick-access-modifier. New command company-complete-quick-access. company-show-numbers-function has been deprecated and its default value changed to nil. Use company-quick-access-hint-function instead. company--show-numbers has been deprecated.
  • company-complete-number has been renamed to company-complete-tooltip-row (#1118).
  • New faces company-tooltip-quick-access and company-tooltip-quick-access-selection (#303).
  • Default colors for dark themes have been changed (#949).
  • Default key bindings have been changed, moving company-select-next and company-select-previous from M-n and M-p to C-n and C-p (#1098). The bound commands are also changed: company-select-next-or-abort and company-select-previous-or-abort, to match the <up> and <down> bindings. The previous bindings still work, but show a warning and will be disabled soon. To undo that change locally, do:

el (with-eval-after-load 'company (dolist (map (list company-active-map company-search-map)) (define-key map (kbd "C-n") nil) (define-key map (kbd "C-p") nil) (define-key map (kbd "M-n") #'company-select-next) (define-key map (kbd "M-p") #'company-select-previous)))

  • New user option company-files-chop-trailing-slash (#1042).
  • Improved visual responsiveness with (but not limited to) async backends (#1073). New user option company-async-redisplay-delay.
  • company-idle-delay default reduced to 0.2 (seconds).
  • The minimum required version of Emacs is now 25.1.
  • Added support for icons (#1070). New user option company-format-margin-function. New backend command kind. There are two built-in SVG icon sets, one for light and another for dark icons. The default behavior is to choose the best one for the current theme automatically, or if the current frame is non-graphical or simply does not support rendering SVG images, fall back to text-based "icons". ... ...