doomemacs / doomemacs/core

Some company backends should be grouped

Open
#4,477 3 comments 5 reactions 0 assignees View on GitHub
:completion company :lang org is:bug
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.