explaingit

codota/tabnine

10,794ShellAudience · developerComplexity · 1/5Setup · easy

TLDR

Configuration repository for TabNine, an AI code autocomplete tool. The actual engine is closed source, this repo only holds language mapping and tokenization config files.

Mindmap

mindmap
  root((repo))
    What It Does
      Maps file extensions to languages
      Controls text tokenization
      Supports editor integrations
    Editors Supported
      VS Code
      Sublime Text
      Vim
      Atom
    Contribute
      Edit config files
      File a GitHub issue
      Build new editor client
    Limitations
      Backend is closed source
      No source to build
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Customize how TabNine maps file extensions to programming languages for better cross-file autocomplete suggestions.

USE CASE 2

Modify tokenization rules for a specific language to improve which identifiers are considered valid completion candidates.

USE CASE 3

Build a new editor client using the provided documentation to add TabNine support to an unsupported editor.

Tech stack

ShellYAMLJSON

Getting it running

Difficulty · easy Time to first run · 30min

The backend is closed source, only the config files can be modified or contributed via pull request.

License not mentioned in the explanation.

In plain English

TabNine is an autocomplete tool for writing code, designed to work across many programming languages and editors. This particular repository holds the backend configuration for the project, not the main program itself. The backend code is closed source, so there are no source files here to read or build from. What the repository does contain are two configuration files that influence how the autocomplete suggestions work. The first, languages.yml, maps file extensions to programming languages so that identifiers from related files can be shared across them. For example, a variable defined in a C file might also be suggested when you are writing in a header file. The second, language_tokenization.json, controls how each language breaks up text into individual identifiers, which affects what the tool considers a valid completion candidate. Lisp identifiers can include dashes while Java identifiers cannot, for instance. The editors TabNine officially supports through first-party clients include VS Code, Sublime Text, Vim, and Atom, each maintained in a separate repository. A handful of community-built clients also exist for other editors such as Emacs and Eclipse, though those are third-party and not validated by the project maintainers. If you want to request a new feature or report a problem, the repository accepts GitHub issues. Pull requests are welcome for changes to the configuration files. The project also provides documentation on how to build a new editor client from scratch, so developers can add support for editors that do not yet have one. The backend itself runs on common desktop architectures including x86_64 and ARM on Linux, macOS, and Windows.

Copy-paste prompts

Prompt 1
I want to add a new file extension mapping to TabNine's languages.yml so that .myext files are treated as Python. How should I write that YAML entry based on the existing format?
Prompt 2
Help me write a pull request for codota/tabnine that adds correct tokenization rules for a new language in language_tokenization.json, following the existing Lisp and Java examples.
Prompt 3
I want to build a TabNine editor client for a custom editor. Based on the codota/tabnine documentation, what protocol and API calls do I need to implement to get autocomplete suggestions?
Prompt 4
Explain what the language_tokenization.json file in codota/tabnine controls and how changing the delimiter rules would affect what identifiers get suggested during autocomplete.
Open on GitHub → Explain another repo

← codota on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.