36 lines
1.6 KiB
Plaintext
36 lines
1.6 KiB
Plaintext
|
Company is a modular completion mechanism. Modules for retrieving completion
|
||
|
candidates are called back-ends, modules for displaying them are front-ends.
|
||
|
|
||
|
Company comes with many back-ends, e.g. `company-elisp'. These are
|
||
|
distributed in separate files and can be used individually.
|
||
|
|
||
|
Place company.el and the back-ends you want to use in a directory and add the
|
||
|
following to your .emacs:
|
||
|
(add-to-list 'load-path "/path/to/company")
|
||
|
(autoload 'company-mode "company" nil t)
|
||
|
|
||
|
Enable company-mode with M-x 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 back-end, 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 back-end, look at the documentation for `company-backends'.
|
||
|
Here is a simple example completing "foo":
|
||
|
|
||
|
(defun company-my-backend (command &optional arg &rest ignored)
|
||
|
(pcase command
|
||
|
(`prefix (when (looking-back "foo\\>")
|
||
|
(match-string 0)))
|
||
|
(`candidates (list "foobar" "foobaz" "foobarbaz"))
|
||
|
(`meta (format "This value is named %s" arg))))
|
||
|
|
||
|
Sometimes it is a good idea to mix several back-ends together, for example to
|
||
|
enrich gtags with dabbrev-code results (to emulate local variables).
|
||
|
To do this, add a list with both back-ends as an element in company-backends.
|
||
|
|
||
|
Known Issues:
|
||
|
When point is at the very end of the buffer, the pseudo-tooltip appears very
|
||
|
wrong, unless company is allowed to temporarily insert a fake newline.
|
||
|
This behavior is enabled by `company-end-of-buffer-workaround'.
|