CONTRIBUTING.md (2906B)
1 # Contributing to Company 2 3 ### Fixes and Improvements 4 5 You're welcome to open a [`pull request`](https://docs.github.com/en/github/collaborating-with-pull-requests) 6 or send a patch with the changes. 7 For non-trivial updates, please clearly describe the problem and the solution. 8 9 If you're looking for *a challenge*, go grab an Issue with the 10 [`wishlist` label](https://github.com/company-mode/company-mode/issues?q=is%3Aissue+is%3Aopen+label%3Awishlist). 11 12 If you have *a question* on where to start implementing a feature, 13 ask in a related [Issue](https://github.com/company-mode/company-mode/issues) 14 or create a new [Discussion](https://github.com/company-mode/company-mode/discussions). 15 16 17 ### Documentation 18 19 Help on improving, fixing, and writing documentation is also wanted. 20 See these ideas on where to start: 21 - Add and edit pages in [`Company` Wiki](https://github.com/company-mode/company-mode/wiki). 22 - Share your findings in [`Discussions`](https://github.com/company-mode/company-mode/discussions/categories/show-and-tell). 23 - Improve the [user manual](https://github.com/company-mode/company-mode/issues/926). 24 25 26 ### Backend Integration 27 28 New backends are rarely accepted for inclusion into `Company` at this stage. 29 30 Our common recommendation for new backends is one of the following: 31 - Publish a backend to (M)ELPA. 32 - Create a `*-completion-at-point` function for a call by `completion-at-point-functions`. 33 34 Feel free to [ask](https://github.com/company-mode/company-mode/discussions) 35 if you're hesitating which approach to choose. 36 37 38 ### Guidelines for Third-Party Packages 39 40 This section was born as a result of the question asked in 41 [Issue #923](https://github.com/company-mode/company-mode/issues/923). 42 43 There are two preferred ways to integrate a third-party package with `Company`. 44 45 1. Use `completion-at-point-functions` and convey extra information through the 46 `:company-*` additional properties (like e.g. `elisp-completion-at-point` does). 47 In this scenario, some minor mode can and should call `add-hook`. 48 49 2. Define a `Company` backend (as described in `Commentary` at the top of 50 `company.el` and in `company-backends` docstring). 51 Then, in the documentation, describe how you recommend it to be used. 52 53 54 Buffer-local values are allowed, but usually not necessary. 55 If a backend is added globally, checking a major mode in the prefix function is a must. 56 57 Examples: 58 - https://github.com/pythonic-emacs/company-anaconda#usage 59 - https://github.com/vspinu/company-math#activation 60 61 62 ### Copyright Assignment 63 64 `Company` is subject to the same [copyright assignment](https://www.fsf.org/licensing/contributor-faq) 65 policy as `GNU Emacs`. 66 67 Any [legally significant](https://www.gnu.org/prep/maintain/html_node/Legally-Significant.html#Legally-Significant) 68 contributions can only be merged after the author has completed their paperwork. 69 Please ask for the request form, and we'll send it to you.