This module provides code completion, powered by company-mode. It is required for code completion in many of Doom’s :lang modules.
https://assets.doomemacs.org/completion/company/overlay.png
+childframe Enables displaying completion candidates in a child frame,
rather than an overlay or tooltip (among with other UI enhancements). This
requires GUI Emacs 26.1+ and is incompatible with the =+tng= flag
+tng Enables completion using only TAB. Pressing TAB will select the
next completion suggestion, while S-TAB will select the previous one. This
is incompatible with the =+childframe= flag
+childframe)This module has no direct prerequisites.
However, some major modes may require additional setup for code completion to work in them. Some major modes may have no completion support at all. Check that major mode’s module’s documentation for details.
By default, completion is triggered after a short idle period or with the
C-SPC key. While the popup is visible, the following keys are available:
| Keybind | Description |
|---|---|
C-n |
Go to next candidate |
C-p |
Go to previous candidate |
C-j |
(evil) Go to next candidate |
C-k |
(evil) Go to previous candidate |
C-h |
Display documentation (if available) |
C-u |
Move to previous page of candidates |
C-d |
Move to next page of candidates |
C-s |
Filter candidates |
C-S-s |
Search candidates with helm/ivy |
C-SPC |
Complete common |
TAB |
Complete common or select next candidate |
S-TAB |
Select previous candidate |
In the spirit of Vim’s omni-completion, the following insert mode keybinds are available to evil users to access specific company backends:
| Keybind | Description |
|---|---|
C-x C-] |
Complete etags |
C-x C-f |
Complete file path |
C-x C-k |
Complete from dictionary/keyword |
C-x C-l |
Complete full line |
C-x C-o |
Invoke complete-at-point function |
C-x C-n |
Complete next symbol at point |
C-x C-p |
Complete previous symbol at point |
C-x C-s |
Complete snippet |
C-x s |
Complete spelling suggestions |
The set-company-backend! function exists for setting company-backends
buffer-locally in MODES, which is either a major-mode symbol, a minor-mode
symbol, or a list of either. BACKENDS are prepended to company-backends for
those modes.
(after! js2-mode
(set-company-backend! 'js2-mode 'company-tide 'company-yasnippet))
(after! sh-script
(set-company-backend! 'sh-mode
'(company-shell :with company-yasnippet)))
(after! cc-mode
(set-company-backend! 'c-mode
'(:separate company-irony-c-headers company-irony)))
To unset the backends for a particular mode, pass nil to it:
(after! sh-script
(set-company-backend! 'sh-mode nil))
If code completion isn’t working for you, consider the following common causes before you file a bug report:
There is no guarantee your language mode will have completion support.
Some, like lua-mode, don’t have completion support in Emacs at all. Others may
requires additional setup to get code completion working. For instance,
go-mode requires guru to be installed on your system, and ruby-mode
requires that you have a Robe server running (M-x robe-start).
Check the relevant module’s documentation for this kind of information.
Doom expects every mode to have an explicit list of company-backends (and as short a list as possible). This may mean you aren’t getting all the completion you want or any at all.
Check the value of company-backends (SPC h v company-backends) from that
mode to see what backends are available. Check the Configuration section for
details on changing what backends are available for that mode.
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。