Fixes and Improvements
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.
Documentation
Help on improving, fixing, and writing documentation is also wanted.
See these ideas on where to start:
- Add and edit pages in
CompanyWiki. - Share your findings in
Discussions. - Improve the user manual.
Backend Integration
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-pointfunction for a call bycompletion-at-point-functions.
Feel free to ask if you're hesitating which approach to choose.
Guidelines for Third-Party Packages
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-functionsand convey extra information through the:company-*additional properties (like e.g.elisp-completion-at-pointdoes). In this scenario, some minor mode can and should calladd-hook. -
Define a
Companybackend (as described inCommentaryat the top ofcompany.eland incompany-backendsdocstring). 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
Copyright Assignment
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.