Some company backends should be grouped
- Dominant language
- Emacs Lisp
- Stars
- 22.7k
- Forks
- 3.1k
- Avg merge
- 10h 46m
- Merged PRs (30d)
- 4
Description
Associated PR: https://github.com/hlissner/doom-emacs/pull/4476
Some company backends can completely shadow other backends following them. For example, having `company-backends` as `(company-dabbrev company-yasnippet company-ispell)` will make `company-yasnippet` and `company-ispell` completely useless, because `company-dabbrev` will always answer: "Yes! I will try to find completion candidates" (even if later on it comes up with an empty list of candidates). This makes the backends following it unreachable.
To solve this issue, these backends should be grouped, which results in merging the completion results.
To identify the backends having this behavior, we can check their docs or by trying them.
`company-yasnippet` has this behavior:
https://github.com/company-mode/company-mode/blob/0edc87d423b83c707e6c708f421d96f4d198803d/company-yasnippet.el#L134
(it gives recommendations on grouping)
For more info about grouping backends, see:
https://github.com/company-mode/company-mode/blob/0edc87d423b83c707e6c708f421d96f4d198803d/company.el#L452
As an example, the current doom configuration results in the following for `org-mode`:
`(company-capf company-dabbrev company-yasnippet company-ispell)`
which results in `company-yasnippet` and `company-ispell` being meaningless and unreachable.
The associated [PR](https://github.com/hlissner/doom-emacs/pull/4476) solves the issue for `text-mode` and its derived `org-mode`. It results in having `company-backends` set to `(company-capf (:separate company-dabbrev company-yasnippet company-ispell))` (`doom sync` might be needed for the changes to take effect)
(`prog-mode` and other lang modes might need also a review)
Contributor guide
Assessment
This issue has not been assessed yet.