TabNine
AI Code Completions
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.
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.
Where it fits
- Customize how TabNine maps file extensions to programming languages for better cross-file autocomplete suggestions.
- Modify tokenization rules for a specific language to improve which identifiers are considered valid completion candidates.
- Build a new editor client using the provided documentation to add TabNine support to an unsupported editor.