You're welcome to open a pull request
or send a patch with the changes.
For non-trivial updates, please clearly describe the problem and the solution.
If you're looking for a challenge, go grab an Issue with the
wishlist
label.
If you have a question on where to start implementing a feature, ask in a related Issue or create a new Discussion.
Help on improving, fixing, and writing documentation is also wanted.
See these ideas on where to start:
- Add and edit pages in
Company
Wiki. - Share your findings in
Discussions
. - Improve the user manual.
New backends are rarely accepted for inclusion into Company
at this stage.
Our common recommendation for new backends is one of the following:
- Publish a backend to (M)ELPA.
- Create a
*-completion-at-point
function for a call bycompletion-at-point-functions
.
Feel free to ask if you're hesitating which approach to choose.
This section was born as a result of the question asked in Issue #923.
There are two preferred ways to integrate a third-party package with Company
.
-
Use
completion-at-point-functions
and convey extra information through the:company-*
additional properties (like e.g.elisp-completion-at-point
does). In this scenario, some minor mode can and should calladd-hook
. -
Define a
Company
backend (as described inCommentary
at the top ofcompany.el
and incompany-backends
docstring). Then, in the documentation, describe how you recommend it to be used.
Buffer-local values are allowed, but usually not necessary.
If a backend is added globally, checking a major mode in the prefix function is a must.
Examples:
- https://github.com/pythonic-emacs/company-anaconda#usage
- https://github.com/vspinu/company-math#activation
Company
is subject to the same copyright assignment
policy as GNU Emacs
.
Any legally significant contributions can only be merged after the author has completed their paperwork. Please ask for the request form, and we'll send it to you.