1

I'm trying to get company mode to automatically trigger the pop-up with a list of possible completion. Unless I'm doing this wrong this is not the default behaviour? Current I have to run M-x company-complete manually.

I am not interesting in binding it to a key. I want the idle-completion behaviour. I'm using this with rustic (rust-mode fork).

Steps to reproduce:

  • Start from fresh emacs
[ -e ~/.emacs.d ] && mv ~/.emacs.d ~/.emacs.d.bak
mkdir ~/.emacs.d && cat <<'EOT' > ~/.emacs.d/init.el
(setq package-archives '(("gnu" . "http://elpa.gnu.org/packages/")
                         ("marmalade" . "https://marmalade-repo.org/packages/")
                         ("melpa" . "http://melpa.org/packages/")))

(require 'package)
(package-initialize)
EOT
  • Start Emacs
  • Install packages (from MELPA): lsp-mode, company, rustic
  • Install rustup (instructions at https://rustup.rs )
  • Install additionnal components: rustup component add rls rustfmt rust-src
  • Create new test project: cargo new rtest
  • Add the following to init.el:
(defun my-rust-hook ()
  (require 'company)
  (setq company-minimum-prefix-length 2)
  (setq company-idle-delay 0)

  ;; conf 1
  ;(setq company-auto-complete nil)
  ;; conf 2
  (setq company-auto-complete t)
  (add-to-list 'company-auto-complete-chars (char-syntax ?:))

  (company-mode 1)
  )

(eval-after-load 'rustic
  '(progn
     (require 'lsp)
     (when (not (require 'yasnippet nil 'no-err))
       (setq lsp-enable-snippet nil))
     (add-hook 'rustic-mode-hook 'my-rust-hook)))
  • Restart emacs
  • Open rtest/src/main.rs
  • Type:
use std::env;

fn main() {
    // place point here at the end
}
  • Type env:: and wait. Completion menu doesn't show up.
  • You can try conf 1 or 2 from the init.el but you will see same result.
  • Running M-x company-complete works and shows the menu but idling doesn't.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.