On Fri, May 5, 2023 at 2:18 AM Arash Esbati <ar...@gnu.org> wrote: > > Hongyi Zhao <hongyi.z...@gmail.com> writes: > > > I should have also uncommented the above line. But even so, I have the > > following problems: > > > > 1. I must at least type 3 letters to trigger the completion. > > ,----[ C-h v corfu-auto-prefix RET ] > | corfu-auto-prefix is a variable defined in ‘corfu.el’. > | > | Its value is 3 > | > | Minimum length of prefix for auto completion. > | The completion backend can override this with > | :company-prefix-length. It is *not recommended* to use a small > | prefix length (below 2), since this will create high load for > | Emacs. See also ‘corfu-auto-delay’. > | > | You can customize this variable. > | > `---- > > > 2. Furthermore, my completion candidates list entries are less than > > yours, as shown in the attached screenshot. > > If you take a closer look, you'll see that the screenshot I sent had > also a candidate "because" since I hit TAB after only 2 characters, you > have 3 characters "bec" in the buffer where the completion kicks in, > hence one candidate is missing.
You're right. Set `(corfu-auto-prefix 2)` does the trick, as shown in the attached screenshot. > In your other mail, you wrote: > > > Another problem I noticed: > > > > 3. The speed of triggering the candidate list for the first time is > > very slow, while company-mode does not seem to have this problem. > > I don't use use-package, but you'll know that it loads packages lazily, > so if you're using corfu in your .tex file for the first in a fresh > Emacs instance, it has to be loaded; maybe that's the reason. I observe > the same thing if I deactivate corfu in a .tex buffer and activate > company; it takes a sec before it's ready to go. Now, I add the `:demand t` to the corfu's use-package configuration, but the problem still remains: (use-package corfu :demand t ;; Optional customizations :custom ;; (corfu-cycle t) ;; Enable cycling for `corfu-next/previous' (corfu-auto t) ;; Enable auto completion (corfu-auto-prefix 2) ;; (corfu-separator ?\s) ;; Orderless field separator ;; (corfu-quit-at-boundary nil) ;; Never quit at completion boundary ;; (corfu-quit-no-match nil) ;; Never quit, even if there is no match ;; (corfu-preview-current nil) ;; Disable current candidate preview ;; (corfu-preselect 'prompt) ;; Preselect the prompt ;; (corfu-on-exact-match nil) ;; Configure handling of exact matches ;; (corfu-scroll-margin 5) ;; Use scroll margin ;; Enable Corfu only for certain modes. ;; :hook ((prog-mode . corfu-mode) ;; (shell-mode . corfu-mode) ;; (eshell-mode . corfu-mode)) ;; Recommended: Enable Corfu globally. ;; This is recommended since Dabbrev can be used globally (M-/). ;; See also `corfu-exclude-modes'. :init (global-corfu-mode)) ;; A few more useful configurations... (use-package emacs :init ;; TAB cycle if there are only few candidates ;; (setq completion-cycle-threshold 3) ;; Emacs 28: Hide commands in M-x which do not apply to the current mode. ;; Corfu commands are hidden, since they are not supposed to be used via M-x. ;; (setq read-extended-command-predicate ;; #'command-completion-default-include-p) ;; Enable indentation+completion using the TAB key. ;; `completion-at-point' is often bound to M-TAB. (setq tab-always-indent 'complete)) > Best, Arash Regards, Zhao