Skip to content

Latest commit

 

History

History
69 lines (44 loc) · 2.84 KB

CONTRIBUTING.md

File metadata and controls

69 lines (44 loc) · 2.84 KB

Contributing to Company

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:

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-point function for a call by completion-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.

  1. 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 call add-hook.

  2. Define a Company backend (as described in Commentary at the top of company.el and in company-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:

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.