1

I have tried to set the company-backend as described on their github page and did not end up with the sweet resulting pop-up completion, in ref as in their image

My image: missing popup

their image: Sweet auto completion

What am I doing wrong? My relevant configs are as follows

(defun require-package (package &optional min-version no-refresh)
  "Install given PACKAGE, optionally requiring MIN-VERSION.
     If NO-REFRESH is non-nil, the available package lists will not be
     re-downloaded in order to locate PACKAGE."
  (if (package-installed-p package min-version)
      t
    (if (or (assoc package package-archive-contents) no-refresh)
    (package-install package)
      (progn
    (package-refresh-contents)
    (require-package package min-version t)))))

(require-package 'company)
(add-hook 'after-init-hook 'global-company-mode)
(eval-after-load "company"
  '(add-to-list
    'company-backends
    'company-auctex 
    'company-jedi 
    'company-math
    'company-reftex-citations
    'company-reftex-labels
    'company-shell
    )
  )
(setq company-dabbrev-downcase 0)
(setq company-idle-delay 0)

(require-package 'company-reftex)
(add-hook 'LaTeX-mode-hook 'turn-on-reftex) ; with AUCTeX LaTeX mode
(add-hook 'latex-mode-hook 'turn-on-reftex)   ; with Emacs latex mode
(setq reftex-plug-into-AUCTeX t)

Cheers!

4
  • Do you get to see labels in your company popup? Or is the issue that the help strings on the right-hand side are not complete? Your snippet is missing company-backends and company-math is misspelled. Is it a typo in your post? Oct 8, 2020 at 15:05
  • @SwarnenduBiswas - company-backends was there. I have corrected company-math and added an image of the non-expanding/missing pop-up. Oct 8, 2020 at 15:17
  • I get the popups, but admittedly not as nice as the reference image. I will post my recipe in some time. Did you try loading company-reftex before modifying company-backends? Oct 8, 2020 at 15:41
  • Cool - I actually haven't checked by removing the backends. I'll do that as well later. Oct 8, 2020 at 16:15

1 Answer 1

1

The following snippet works for me. I use use-package, so it is slightly different, but I hope it is easy enough to edit. You can evaluate this with emacs -q and then calling M-x eval-buffer on the snippet.

(require 'package)
(setq package-user-dir (expand-file-name "~/.emacs.d/elpa/")
      package-enable-at-startup nil)
(add-to-list 'package-archives
             '("melpa" . "https://melpa.org/packages/") t)
(package-initialize)

(unless (package-installed-p 'use-package)
  (package-refresh-contents)
  (package-install 'use-package))
(eval-when-compile
  (require 'use-package))

(defcustom dotemacs-extras-directory (expand-file-name "extras"
                                                       user-emacs-directory)
  "Path for third-party packages and files."
  :type 'string
  :group 'dotemacs)

;; Enable Company
(use-package company
  :ensure t
  :custom
  (company-idle-delay 0.0 "Recommended by lsp")
  (company-ispell-available t)
  (company-ispell-dictionary (expand-file-name "wordlist"
                                               dotemacs-extras-directory))
  :config (global-company-mode 1))

;; Enable LaTeX
(use-package tex-site
  :ensure auctex
  :mode ("\\.tex\\'" . LaTeX-mode))

(add-hook 'LaTeX-mode-hook #'reftex-mode)
(add-hook 'latex-mode-hook #'reftex-mode)

(defun sb/company-latex-mode ()
  "Add backends for latex completion in company mode."
  (use-package math-symbol-lists ; Required by ac-math and company-math
    :ensure t)
  (use-package company-math
    :ensure t)
  (use-package company-reftex
    :ensure t)
  (use-package company-bibtex
    :ensure t)
  (make-local-variable 'company-backends)
  (setq company-backends
        '((
           company-capf
           ;; company-tabnine
           company-bibtex
           company-math-symbols-latex
           company-latex-commands
           company-math-symbols-unicode
           company-reftex-labels
           company-reftex-citations
           company-yasnippet
           company-files
           company-ispell
           company-dabbrev
           ))))
(dolist (hook '(latex-mode-hook LaTeX-mode-hook))
  (add-hook hook #'sb/company-latex-mode))

Both company-bibtex and company-reftex work. You can check the completion provider on the modeline or through M-x company-diag. The downside is that all the completions are merged, I do not know how to fix it. You can see this issue.

4
  • Could you please add an image of how this looks on your end. This is a partial solution, but not exactly what is being showcased on RefTex' site. Oct 9, 2020 at 11:26
  • I figured it out. Apparently I've been using add-to-list wrong. If you just add use-package company-reftexto your solution I can flag it as the solution Oct 9, 2020 at 12:09
  • Great. I have included use-package company-reftex. Oct 9, 2020 at 12:54
  • 1
    @SwarnenduBiswas I was able to evaluate the snippet without any issues, but still am having the problem that OP mentioned. If I type \ref{ in a latex file, I see these messages: Compiling label environment definitions...done Compiling label environment definitions...done ref: info not available, use ‘C-c &’ to get it." If I do M-x c-r-l after \ref{, I do see the menu with all the labels, but it is not being called automatically for some reason. Any ideas what could cause this?
    – ttb
    Feb 7, 2021 at 2:42

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.