TommyX12 / company-tabnine

A company-mode backend for TabNine, the all-language autocompleter: https://tabnine.com/
MIT License
685 stars 52 forks source link

company-tabnine

MELPA

TabNine is the all-language autocompleter. It uses machine learning to provide responsive, reliable, and relevant suggestions.

company-tabnine provides TabNine completion backend for company-mode. It takes care of TabNine binaries, so installation is easy.

screenshot screenshot-deep-1 screenshot-deep-2 screenshot-deep-3

Installation

  1. Make sure company-mode is installed and configured.

  2. Install company-tabnine. This package is part of MELPA.

    Note: See https://melpa.org/#/getting-started for MELPA usage. Make sure to use the "bleeding-edge" repository instead of MELPA stable.

    • With use-package

      Put the following in your config:

      (use-package company-tabnine :ensure t)
    • With package.el (built-in)

      Install the package:

      M-x package-install RET company-tabnine RET

      Put the following in your config:

      (require 'company-tabnine)
  3. Add company-tabnine to company-backends

    (add-to-list 'company-backends #'company-tabnine)
  4. Run M-x company-tabnine-install-binary to install the TabNine binary for your system.

Recommended Configuration

Below are some recommended company-mode configuration that works well with company-tabnine.

;; Trigger completion immediately.
(setq company-idle-delay 0)

;; Number the candidates (use M-1, M-2 etc to select completions).
(setq company-show-numbers t)

Usage

company-tabnine should work out of the box.

See M-x customize-group RET company-tabnine RET for customizations.

Auto-balance parentheses

TabNine can automatically balance parentheses, by removing and adding closing parentheses after the cursor. See the examples here.

Note: The automatically-balancing happens in company's post-completion hook. However, company-tng-frontend actually suppresses this hook. In order to use automatic parentheses balancing, you need to manually call company-complete-selection or similar commands in this case, which will almost always happen if you do not use company-tng-frontend.

Known Issues