On Fri, May 5, 2023 at 7:58 AM Hongyi Zhao <hongyi.z...@gmail.com> wrote: > > 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))
Till now, I still encounter the following problems: 1. After I've enabled the following option, continuous pressing Tab key doesn't cycle through the candidates. (setq completion-cycle-threshold 3) 2. Package names still cannot be automatically completed, as shown in the attached screenshot. > > Best, Arash > > Regards, Zhao